<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xtravax</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xtravax"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Xtravax"/>
	<updated>2026-04-23T08:07:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=51008</id>
		<title>~CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=51008"/>
		<updated>2017-05-14T16:40:57Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Destructor&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a C++ Destructor found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::~CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=51003</id>
		<title>CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=51003"/>
		<updated>2017-05-14T13:45:29Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ File&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ file is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Constructor==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Namespaces==&lt;br /&gt;
&lt;br /&gt;
==Namespace Functions==&lt;br /&gt;
*[[ConvertPTSize]]&lt;br /&gt;
*[[getTriKey]]&lt;br /&gt;
&lt;br /&gt;
==Destructors==&lt;br /&gt;
*[[~CAdditionalVertexStreamManager]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*[[GetSingleton]]&lt;br /&gt;
*[[OnDeviceCreate]]&lt;br /&gt;
*[[MaybeSetAdditionalVertexStream]]&lt;br /&gt;
*[[SetAdditionalVertexStream]]&lt;br /&gt;
*[[MaybeUnsetAdditionalVertexStream]]&lt;br /&gt;
*[[UpdateAdditionalStreamContent]]&lt;br /&gt;
*[[UpdateCurrentStateInfo]]&lt;br /&gt;
*[[CheckCanDoThis]]&lt;br /&gt;
*[[GetAdditionalStreamInfo]]&lt;br /&gt;
*[[CreateAdditionalStreamInfo]]&lt;br /&gt;
*[[OnVertexBufferDestroy]]&lt;br /&gt;
*[[OnVertexBufferRangeInvalidated]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnVertexBufferRangeInvalidated&amp;diff=51002</id>
		<title>OnVertexBufferRangeInvalidated</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnVertexBufferRangeInvalidated&amp;diff=51002"/>
		<updated>2017-05-14T13:44:57Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It serves as an event when vertex buffer rage is i...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It serves as an event when vertex buffer rage is invalidated.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''pStreamData1:''' Pointer to the IDirect3DVertexBuffer9 type.&lt;br /&gt;
*'''Offset:''' uint --.&lt;br /&gt;
*'''Size:''' uint --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CAdditionalVertexStreamManager::OnVertexBufferRangeInvalidated ( IDirect3DVertexBuffer9* pStreamData1, uint Offset, uint Size )&lt;br /&gt;
{&lt;br /&gt;
    SAdditionalStreamInfo* pAdditionalInfo = GetAdditionalStreamInfo ( pStreamData1 );&lt;br /&gt;
    if ( pAdditionalInfo )&lt;br /&gt;
    {&lt;br /&gt;
        pAdditionalInfo-&amp;gt;ConvertedRanges.UnsetRange ( Offset, Size );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnVertexBufferDestroy&amp;diff=51001</id>
		<title>OnVertexBufferDestroy</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnVertexBufferDestroy&amp;diff=51001"/>
		<updated>2017-05-14T13:42:41Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It serves as an event of when vertex buffer gets d...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It serves as an event of when vertex buffer gets destroyed.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''pStreamData1:''' Pointer to the IDirect3DVertexBuffer9 type.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CAdditionalVertexStreamManager::OnVertexBufferDestroy ( IDirect3DVertexBuffer9* pStreamData1  )&lt;br /&gt;
{&lt;br /&gt;
    SAdditionalStreamInfo* pAdditionalInfo = GetAdditionalStreamInfo ( pStreamData1 );&lt;br /&gt;
    if ( pAdditionalInfo )&lt;br /&gt;
    {&lt;br /&gt;
        pAdditionalInfo-&amp;gt;pStreamData-&amp;gt;Release ();&lt;br /&gt;
        pAdditionalInfo-&amp;gt;pVertexDeclaration-&amp;gt;Release ();&lt;br /&gt;
        MapRemove ( m_AdditionalStreamInfoMap, pStreamData1 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CreateAdditionalStreamInfo&amp;diff=51000</id>
		<title>CreateAdditionalStreamInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CreateAdditionalStreamInfo&amp;diff=51000"/>
		<updated>2017-05-14T13:40:44Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It creates additional stream info.  It can be foun...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It creates additional stream info.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns --to be defined.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SAdditionalStreamInfo* CAdditionalVertexStreamManager::CreateAdditionalStreamInfo ( const SCurrentStateInfo&amp;amp; state )&lt;br /&gt;
{&lt;br /&gt;
    SAdditionalStreamInfo* pAdditionalInfo = MapFind ( m_AdditionalStreamInfoMap, state.stream1.pStreamData );&lt;br /&gt;
    if ( !pAdditionalInfo )&lt;br /&gt;
    {&lt;br /&gt;
        // Create it&lt;br /&gt;
        SAdditionalStreamInfo info;&lt;br /&gt;
&lt;br /&gt;
        // Create new decleration&lt;br /&gt;
        D3DVERTEXELEMENT9 elements[MAXD3DDECLLENGTH];&lt;br /&gt;
        assert ( state.decl.numElements &amp;gt; 3 &amp;amp;&amp;amp; state.decl.numElements &amp;lt; 5 );&lt;br /&gt;
        memcpy ( elements, state.decl.elements, state.decl.numElements * sizeof ( D3DVERTEXELEMENT9 ) );&lt;br /&gt;
&lt;br /&gt;
        D3DVERTEXELEMENT9* declNew = &amp;amp;elements[ state.decl.numElements - 1 ];&lt;br /&gt;
        elements[ state.decl.numElements ] = *declNew;&lt;br /&gt;
&lt;br /&gt;
        declNew-&amp;gt;Stream = 2;&lt;br /&gt;
        declNew-&amp;gt;Offset = 0;&lt;br /&gt;
        declNew-&amp;gt;Type = D3DDECLTYPE_FLOAT3;&lt;br /&gt;
        declNew-&amp;gt;Method = D3DDECLMETHOD_DEFAULT;&lt;br /&gt;
        declNew-&amp;gt;Usage = D3DDECLUSAGE_NORMAL;&lt;br /&gt;
        declNew-&amp;gt;UsageIndex = 0;&lt;br /&gt;
        if ( FAILED( m_pDevice-&amp;gt;CreateVertexDeclaration ( elements, &amp;amp;info.pVertexDeclaration ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
&lt;br /&gt;
        // Create new stream&lt;br /&gt;
        info.Stride = sizeof ( float ) * 3;&lt;br /&gt;
        UINT Size2 = ConvertPTSize ( state.decl.VertexBufferDesc1.Size );&lt;br /&gt;
        if ( FAILED( m_pDevice-&amp;gt;CreateVertexBuffer( Size2, D3DUSAGE_WRITEONLY, 0, D3DPOOL_MANAGED, &amp;amp;info.pStreamData, NULL ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
&lt;br /&gt;
        // Save info&lt;br /&gt;
        MapSet ( m_AdditionalStreamInfoMap, state.stream1.pStreamData, info );&lt;br /&gt;
        pAdditionalInfo = MapFind ( m_AdditionalStreamInfoMap, state.stream1.pStreamData );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return pAdditionalInfo;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetAdditionalStreamInfo&amp;diff=50999</id>
		<title>GetAdditionalStreamInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetAdditionalStreamInfo&amp;diff=50999"/>
		<updated>2017-05-14T13:38:40Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It gets and returns additional stream info.  It ca...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It gets and returns additional stream info.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''pStreamData1:''' Pointer to the IDirect3DVertexBuffer9 type.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns additional stream info in form of --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
SAdditionalStreamInfo* CAdditionalVertexStreamManager::GetAdditionalStreamInfo ( IDirect3DVertexBuffer9* pStreamData1 )&lt;br /&gt;
{&lt;br /&gt;
    return MapFind ( m_AdditionalStreamInfoMap, pStreamData1 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CheckCanDoThis&amp;diff=50998</id>
		<title>CheckCanDoThis</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CheckCanDoThis&amp;diff=50998"/>
		<updated>2017-05-14T13:35:31Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It checks if --.  It can be found in '''Client/Cli...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It checks if --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a boolean value representing whether this can be done or not.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool CAdditionalVertexStreamManager::CheckCanDoThis ( const SCurrentStateInfo&amp;amp; state )&lt;br /&gt;
{&lt;br /&gt;
    if ( state.decl.numElements != 4 )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    // Check vertex declaration requirements&lt;br /&gt;
    const D3DVERTEXELEMENT9* elements = state.decl.elements;&lt;br /&gt;
    if ( elements[0].Stream != 0 || elements[0].Type != D3DDECLTYPE_D3DCOLOR || elements[0].Usage != D3DDECLUSAGE_COLOR )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    if ( elements[1].Stream != 1 || elements[1].Type != D3DDECLTYPE_FLOAT3 || elements[1].Usage != D3DDECLUSAGE_POSITION )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    if ( elements[2].Stream != 1 || elements[2].Type != D3DDECLTYPE_FLOAT2 || elements[2].Usage != D3DDECLUSAGE_TEXCOORD )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    if ( elements[3].Stream != 255 )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // Check vertex stream&lt;br /&gt;
    if ( !state.stream1.pStreamData )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    if ( state.stream1.Stride != 20 )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    if ( state.args.PrimitiveType != D3DPT_TRIANGLESTRIP &amp;amp;&amp;amp; state.args.PrimitiveType != D3DPT_TRIANGLELIST )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=UpdateCurrentStateInfo&amp;diff=50997</id>
		<title>UpdateCurrentStateInfo</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=UpdateCurrentStateInfo&amp;diff=50997"/>
		<updated>2017-05-14T13:32:39Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It updates current state info.  It can be found in...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It updates current state info.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a boolean value whether current state info was updated or not.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool CAdditionalVertexStreamManager::UpdateCurrentStateInfo ( SCurrentStateInfo&amp;amp; state )&lt;br /&gt;
{&lt;br /&gt;
    // Get vertex declaration&lt;br /&gt;
    if ( FAILED( m_pDevice-&amp;gt;GetVertexDeclaration ( &amp;amp;state.decl.pVertexDeclaration ) ) )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    // Get vertex declaration desc&lt;br /&gt;
    if ( state.decl.pVertexDeclaration )&lt;br /&gt;
    {&lt;br /&gt;
        if ( FAILED( state.decl.pVertexDeclaration-&amp;gt;GetDeclaration ( state.decl.elements, &amp;amp;state.decl.numElements ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Get vertex stream&lt;br /&gt;
    if ( FAILED( m_pDevice-&amp;gt;GetStreamSource ( 1, &amp;amp;state.stream1.pStreamData, &amp;amp;state.stream1.OffsetInBytes, &amp;amp;state.stream1.Stride ) ) )&lt;br /&gt;
        return NULL;&lt;br /&gt;
&lt;br /&gt;
    // Get vertex stream desc&lt;br /&gt;
    if ( state.stream1.pStreamData )&lt;br /&gt;
    {&lt;br /&gt;
        if ( FAILED( state.stream1.pStreamData-&amp;gt;GetDesc ( &amp;amp;state.decl.VertexBufferDesc1 ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=UpdateAdditionalStreamContent&amp;diff=50996</id>
		<title>UpdateAdditionalStreamContent</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=UpdateAdditionalStreamContent&amp;diff=50996"/>
		<updated>2017-05-14T13:30:36Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It updates additional stream content.  It can be f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It updates additional stream content.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
*'''pAdditionalInfo:''' To be defined.&lt;br /&gt;
*'''ReadOffsetStart:''' To be defined.&lt;br /&gt;
*'''ReadSize:''' To be defined.&lt;br /&gt;
*'''WriteOffsetStart:''' To be defined.&lt;br /&gt;
*'''WriteSize:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a boolean whether additional stream content was updated or not.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool CAdditionalVertexStreamManager::UpdateAdditionalStreamContent ( SCurrentStateInfo&amp;amp; state, SAdditionalStreamInfo* pAdditionalInfo, uint ReadOffsetStart, uint ReadSize, uint WriteOffsetStart, uint WriteSize )&lt;br /&gt;
{&lt;br /&gt;
    //HRESULT hr;&lt;br /&gt;
    IDirect3DVertexBuffer9* pStreamDataPT = state.stream1.pStreamData;&lt;br /&gt;
    IDirect3DVertexBuffer9* pStreamDataN = pAdditionalInfo-&amp;gt;pStreamData;&lt;br /&gt;
    uint StridePT = 20;&lt;br /&gt;
    uint StrideN = 12;&lt;br /&gt;
    uint NumVerts = ReadSize / StridePT;&lt;br /&gt;
    assert ( NumVerts == WriteSize / StrideN );&lt;br /&gt;
&lt;br /&gt;
    // Get the source vertex bytes&lt;br /&gt;
    std::vector &amp;lt; uchar &amp;gt; sourceArray;&lt;br /&gt;
    sourceArray.resize ( ReadSize );&lt;br /&gt;
    uchar* pSourceArrayBytes = &amp;amp;sourceArray[0];&lt;br /&gt;
    {&lt;br /&gt;
        void* pVertexBytesPT = NULL;&lt;br /&gt;
        if ( FAILED( pStreamDataPT-&amp;gt;Lock ( ReadOffsetStart, ReadSize, &amp;amp;pVertexBytesPT, D3DLOCK_NOSYSLOCK | D3DLOCK_READONLY ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
        memcpy ( pSourceArrayBytes, pVertexBytesPT, ReadSize );&lt;br /&gt;
        pStreamDataPT-&amp;gt;Unlock ();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Create dest byte buffer&lt;br /&gt;
    std::vector &amp;lt; uchar &amp;gt; destArray;&lt;br /&gt;
    destArray.resize ( WriteSize );&lt;br /&gt;
    uchar* pDestArrayBytes = &amp;amp;destArray[0];&lt;br /&gt;
&lt;br /&gt;
    // Compute dest bytes&lt;br /&gt;
    {&lt;br /&gt;
        // Get index buffer&lt;br /&gt;
        if ( FAILED( m_pDevice-&amp;gt;GetIndices( &amp;amp;state.pIndexData ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
&lt;br /&gt;
        // Get index buffer desc&lt;br /&gt;
        D3DINDEXBUFFER_DESC IndexBufferDesc;&lt;br /&gt;
        state.pIndexData-&amp;gt;GetDesc ( &amp;amp;IndexBufferDesc );&lt;br /&gt;
&lt;br /&gt;
        uint numIndices = state.args.primCount + 2;&lt;br /&gt;
        uint step = 1;&lt;br /&gt;
        if ( state.args.PrimitiveType == D3DPT_TRIANGLELIST )&lt;br /&gt;
        {&lt;br /&gt;
            numIndices = state.args.primCount * 3;&lt;br /&gt;
            step = 3;&lt;br /&gt;
        }&lt;br /&gt;
        assert ( IndexBufferDesc.Size &amp;gt;= ( numIndices + state.args.startIndex ) * 2 );&lt;br /&gt;
&lt;br /&gt;
        // Get index buffer data&lt;br /&gt;
        std::vector &amp;lt; uchar &amp;gt; indexArray;&lt;br /&gt;
        indexArray.resize ( ReadSize );&lt;br /&gt;
        uchar* pIndexArrayBytes = &amp;amp;indexArray[0];&lt;br /&gt;
        {&lt;br /&gt;
            void* pIndexBytes = NULL;&lt;br /&gt;
            if ( FAILED( state.pIndexData-&amp;gt;Lock ( state.args.startIndex*2, numIndices*2, &amp;amp;pIndexBytes, D3DLOCK_NOSYSLOCK | D3DLOCK_READONLY ) ) )&lt;br /&gt;
                return false;&lt;br /&gt;
            memcpy ( pIndexArrayBytes, pIndexBytes, numIndices*2 );&lt;br /&gt;
            state.pIndexData-&amp;gt;Unlock ();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Calc normals&lt;br /&gt;
        std::vector &amp;lt; CVector &amp;gt; NormalList;&lt;br /&gt;
        NormalList.insert ( NormalList.end (), NumVerts, CVector () );&lt;br /&gt;
&lt;br /&gt;
        std::map &amp;lt; long long, CVector &amp;gt; doneTrisMap;&lt;br /&gt;
&lt;br /&gt;
        // For each triangle&lt;br /&gt;
        for ( uint i = 0 ; i &amp;lt; numIndices - 2 ; i += step )&lt;br /&gt;
        {&lt;br /&gt;
            // Get triangle vertex indici&lt;br /&gt;
            WORD v0 = ((WORD*)pIndexArrayBytes)[ i ];&lt;br /&gt;
            WORD v1 = ((WORD*)pIndexArrayBytes)[ i + 1 ];&lt;br /&gt;
            WORD v2 = ((WORD*)pIndexArrayBytes)[ i + 2 ];&lt;br /&gt;
&lt;br /&gt;
            if ( v0 &amp;gt;= NumVerts || v1 &amp;gt;= NumVerts || v2 &amp;gt;= NumVerts )&lt;br /&gt;
                continue;   // vert index out of range&lt;br /&gt;
&lt;br /&gt;
            if ( v0 == v1 || v0 == v2 || v1 == v2 )&lt;br /&gt;
                continue;   // degenerate tri&lt;br /&gt;
&lt;br /&gt;
            // Get vertex positions from original stream&lt;br /&gt;
            CVector* pPos0 = (CVector*)( pSourceArrayBytes + v0 * 20 );&lt;br /&gt;
            CVector* pPos1 = (CVector*)( pSourceArrayBytes + v1 * 20 );&lt;br /&gt;
            CVector* pPos2 = (CVector*)( pSourceArrayBytes + v2 * 20 );&lt;br /&gt;
&lt;br /&gt;
            // Calculate the normal&lt;br /&gt;
            CVector Dir1 = *pPos2 - *pPos1;&lt;br /&gt;
            CVector Dir2 = *pPos0 - *pPos1;&lt;br /&gt;
&lt;br /&gt;
            CVector Normal = Dir1;&lt;br /&gt;
            Normal.CrossProduct ( &amp;amp;Dir2 );&lt;br /&gt;
            Normal.Normalize ();&lt;br /&gt;
&lt;br /&gt;
            // Flip normal if triangle was flipped&lt;br /&gt;
            if ( state.args.PrimitiveType == D3DPT_TRIANGLESTRIP &amp;amp;&amp;amp; ( i &amp;amp; 1 ) )&lt;br /&gt;
                Normal = -Normal;&lt;br /&gt;
&lt;br /&gt;
            // Try to improve results by ignoring duplicated triangles&lt;br /&gt;
            long long key = getTriKey ( v0, v1, v2 );&lt;br /&gt;
            if ( CVector* pDoneTriPrevNormal = MapFind ( doneTrisMap, key ) )&lt;br /&gt;
            {&lt;br /&gt;
                // Already done this tri - Keep prev tri if it has a better 'up' rating&lt;br /&gt;
                if ( pDoneTriPrevNormal-&amp;gt;fZ &amp;gt; Normal.fZ )&lt;br /&gt;
                    continue;&lt;br /&gt;
&lt;br /&gt;
                // Remove effect of prev tri&lt;br /&gt;
                NormalList[ v0 ] -= *pDoneTriPrevNormal;&lt;br /&gt;
                NormalList[ v1 ] -= *pDoneTriPrevNormal;&lt;br /&gt;
                NormalList[ v2 ] -= *pDoneTriPrevNormal;&lt;br /&gt;
            }&lt;br /&gt;
            MapSet ( doneTrisMap, key, Normal );&lt;br /&gt;
&lt;br /&gt;
            // Add normal weight to used vertices&lt;br /&gt;
            NormalList[ v0 ] += Normal;&lt;br /&gt;
            NormalList[ v1 ] += Normal;&lt;br /&gt;
            NormalList[ v2 ] += Normal;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // Validate normals and set dest data&lt;br /&gt;
        for ( uint i = 0 ; i &amp;lt; NumVerts ; i++ )&lt;br /&gt;
        {&lt;br /&gt;
            // Validate&lt;br /&gt;
            CVector&amp;amp; Normal = NormalList[i];&lt;br /&gt;
            if ( Normal.Normalize () &amp;lt; FLOAT_EPSILON )&lt;br /&gt;
                Normal = CVector ( 0, 0, 1 );&lt;br /&gt;
&lt;br /&gt;
            // Set&lt;br /&gt;
            CVector* pNormal = (CVector*)( pDestArrayBytes + i * 12 );&lt;br /&gt;
            *pNormal = Normal;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Set the dest bytes&lt;br /&gt;
    {&lt;br /&gt;
        void* pVertexBytesN = NULL;&lt;br /&gt;
        if ( FAILED( pStreamDataN-&amp;gt;Lock ( WriteOffsetStart, WriteSize, &amp;amp;pVertexBytesN, D3DLOCK_NOSYSLOCK ) ) )&lt;br /&gt;
            return false;&lt;br /&gt;
        memcpy ( pVertexBytesN, pDestArrayBytes, WriteSize );&lt;br /&gt;
        pStreamDataN-&amp;gt;Unlock ();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MaybeUnsetAdditionalVertexStream&amp;diff=50995</id>
		<title>MaybeUnsetAdditionalVertexStream</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MaybeUnsetAdditionalVertexStream&amp;diff=50995"/>
		<updated>2017-05-14T13:27:36Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It maybe unsets additional vertex stream.  It can...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It maybe unsets additional vertex stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CAdditionalVertexStreamManager::MaybeUnsetAdditionalVertexStream ( void )&lt;br /&gt;
{&lt;br /&gt;
    HRESULT hr;&lt;br /&gt;
    if ( m_pOldVertexDeclaration )&lt;br /&gt;
    {&lt;br /&gt;
        // Set prev declaration&lt;br /&gt;
        hr = g_pProxyDevice-&amp;gt;SetVertexDeclaration ( m_pOldVertexDeclaration );&lt;br /&gt;
        SAFE_RELEASE( m_pOldVertexDeclaration );&lt;br /&gt;
&lt;br /&gt;
        // Unset additional stream&lt;br /&gt;
        hr = m_pDevice-&amp;gt;SetStreamSource ( 2, NULL, 0, 0 );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MaybeSetAdditionalVertexStream&amp;diff=50994</id>
		<title>MaybeSetAdditionalVertexStream</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MaybeSetAdditionalVertexStream&amp;diff=50994"/>
		<updated>2017-05-14T13:25:39Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It maybe sets an additional vertex stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''PrimitiveType:''' D3DPRIMITIVETYPE type --.&lt;br /&gt;
*'''BaseVertexIndex:''' INT value --.&lt;br /&gt;
*'''MinVertexIndex:''' UINT value.&lt;br /&gt;
*'''NumVertices:''' UINT value.&lt;br /&gt;
*'''startIndex:''' UINT value.&lt;br /&gt;
*'''primCount:''' UINT value.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a boolean representing whether an additional vertex stream was set or not.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool CAdditionalVertexStreamManager::MaybeSetAdditionalVertexStream ( D3DPRIMITIVETYPE PrimitiveType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount )&lt;br /&gt;
{&lt;br /&gt;
    // Cache info&lt;br /&gt;
    SCurrentStateInfo state;&lt;br /&gt;
&lt;br /&gt;
    // Save call arguments&lt;br /&gt;
    state.args.PrimitiveType = PrimitiveType;&lt;br /&gt;
    state.args.BaseVertexIndex = BaseVertexIndex;&lt;br /&gt;
    state.args.MinVertexIndex = MinVertexIndex;&lt;br /&gt;
    state.args.NumVertices = NumVertices;&lt;br /&gt;
    state.args.startIndex = startIndex;&lt;br /&gt;
    state.args.primCount = primCount;&lt;br /&gt;
  &lt;br /&gt;
    // Cache info about state streams etc&lt;br /&gt;
    UpdateCurrentStateInfo ( state );&lt;br /&gt;
&lt;br /&gt;
    // For now, this only works if the original has 3 decl elements (0:D, 1:P, 1:T) and stream 1 has a stride of 20&lt;br /&gt;
    if ( !CheckCanDoThis ( state ) )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    SetAdditionalVertexStream ( state );&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetAdditionalVertexStream&amp;diff=50993</id>
		<title>SetAdditionalVertexStream</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetAdditionalVertexStream&amp;diff=50993"/>
		<updated>2017-05-14T13:24:57Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It sets an additional vertex stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CAdditionalVertexStreamManager::SetAdditionalVertexStream ( SCurrentStateInfo&amp;amp; state )&lt;br /&gt;
{&lt;br /&gt;
    HRESULT hr;&lt;br /&gt;
&lt;br /&gt;
    // Get matching custom N vbuffer for std PT vbuffer&lt;br /&gt;
    SAdditionalStreamInfo* pAdditionalInfo = GetAdditionalStreamInfo ( state.stream1.pStreamData );&lt;br /&gt;
    if ( !pAdditionalInfo )&lt;br /&gt;
        pAdditionalInfo = CreateAdditionalStreamInfo ( state );&lt;br /&gt;
&lt;br /&gt;
    uint StridePT = 20;&lt;br /&gt;
    uint StrideN = 12;&lt;br /&gt;
&lt;br /&gt;
    // Calc area we are going to use&lt;br /&gt;
    uint viMinBased = state.args.MinVertexIndex + state.args.BaseVertexIndex;&lt;br /&gt;
    uint viMaxBased = state.args.MinVertexIndex + state.args.NumVertices + state.args.BaseVertexIndex;&lt;br /&gt;
&lt;br /&gt;
    uint ReadOffsetStart = viMinBased * StridePT + state.stream1.OffsetInBytes;&lt;br /&gt;
    uint ReadOffsetSize = ( viMaxBased - viMinBased ) * StridePT;&lt;br /&gt;
&lt;br /&gt;
    uint OffsetInBytesN = ConvertPTSize ( state.stream1.OffsetInBytes );&lt;br /&gt;
    uint WriteOffsetStart = viMinBased * StrideN + OffsetInBytesN;&lt;br /&gt;
    uint WriteOffsetSize = ( viMaxBased - viMinBased ) * StrideN;&lt;br /&gt;
&lt;br /&gt;
    assert ( WriteOffsetStart == ConvertPTSize ( ReadOffsetStart ) );&lt;br /&gt;
    assert ( WriteOffsetSize == ConvertPTSize ( ReadOffsetSize ) );&lt;br /&gt;
&lt;br /&gt;
    // See if area VB area needs updating&lt;br /&gt;
    if ( !pAdditionalInfo-&amp;gt;ConvertedRanges.IsRangeSet ( WriteOffsetStart, WriteOffsetSize ) )&lt;br /&gt;
    {&lt;br /&gt;
        // Update VB area&lt;br /&gt;
        UpdateAdditionalStreamContent ( state, pAdditionalInfo, ReadOffsetStart, ReadOffsetSize, WriteOffsetStart, WriteOffsetSize );&lt;br /&gt;
        pAdditionalInfo-&amp;gt;ConvertedRanges.SetRange ( WriteOffsetStart, WriteOffsetSize );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Save old declaration&lt;br /&gt;
    hr = m_pDevice-&amp;gt;GetVertexDeclaration ( &amp;amp;m_pOldVertexDeclaration );&lt;br /&gt;
&lt;br /&gt;
    // Set declaration&lt;br /&gt;
    hr = g_pProxyDevice-&amp;gt;SetVertexDeclaration ( pAdditionalInfo-&amp;gt;pVertexDeclaration );&lt;br /&gt;
&lt;br /&gt;
    // Set additional stream&lt;br /&gt;
    uint OffsetInBytes = ConvertPTSize ( state.stream1.OffsetInBytes );&lt;br /&gt;
    hr = m_pDevice-&amp;gt;SetStreamSource ( 2, pAdditionalInfo-&amp;gt;pStreamData, OffsetInBytes, pAdditionalInfo-&amp;gt;Stride );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=SetAdditionalVertexStream&amp;diff=50992</id>
		<title>SetAdditionalVertexStream</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=SetAdditionalVertexStream&amp;diff=50992"/>
		<updated>2017-05-14T13:24:16Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It sets an additional vertex stream.  It can be fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It sets an additional vertex stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''state:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
void CAdditionalVertexStreamManager::SetAdditionalVertexStream ( SCurrentStateInfo&amp;amp; state )&lt;br /&gt;
{&lt;br /&gt;
    HRESULT hr;&lt;br /&gt;
&lt;br /&gt;
    // Get matching custom N vbuffer for std PT vbuffer&lt;br /&gt;
    SAdditionalStreamInfo* pAdditionalInfo = GetAdditionalStreamInfo ( state.stream1.pStreamData );&lt;br /&gt;
    if ( !pAdditionalInfo )&lt;br /&gt;
        pAdditionalInfo = CreateAdditionalStreamInfo ( state );&lt;br /&gt;
&lt;br /&gt;
    uint StridePT = 20;&lt;br /&gt;
    uint StrideN = 12;&lt;br /&gt;
&lt;br /&gt;
    // Calc area we are going to use&lt;br /&gt;
    uint viMinBased = state.args.MinVertexIndex + state.args.BaseVertexIndex;&lt;br /&gt;
    uint viMaxBased = state.args.MinVertexIndex + state.args.NumVertices + state.args.BaseVertexIndex;&lt;br /&gt;
&lt;br /&gt;
    uint ReadOffsetStart = viMinBased * StridePT + state.stream1.OffsetInBytes;&lt;br /&gt;
    uint ReadOffsetSize = ( viMaxBased - viMinBased ) * StridePT;&lt;br /&gt;
&lt;br /&gt;
    uint OffsetInBytesN = ConvertPTSize ( state.stream1.OffsetInBytes );&lt;br /&gt;
    uint WriteOffsetStart = viMinBased * StrideN + OffsetInBytesN;&lt;br /&gt;
    uint WriteOffsetSize = ( viMaxBased - viMinBased ) * StrideN;&lt;br /&gt;
&lt;br /&gt;
    assert ( WriteOffsetStart == ConvertPTSize ( ReadOffsetStart ) );&lt;br /&gt;
    assert ( WriteOffsetSize == ConvertPTSize ( ReadOffsetSize ) );&lt;br /&gt;
&lt;br /&gt;
    // See if area VB area needs updating&lt;br /&gt;
    if ( !pAdditionalInfo-&amp;gt;ConvertedRanges.IsRangeSet ( WriteOffsetStart, WriteOffsetSize ) )&lt;br /&gt;
    {&lt;br /&gt;
        // Update VB area&lt;br /&gt;
        UpdateAdditionalStreamContent ( state, pAdditionalInfo, ReadOffsetStart, ReadOffsetSize, WriteOffsetStart, WriteOffsetSize );&lt;br /&gt;
        pAdditionalInfo-&amp;gt;ConvertedRanges.SetRange ( WriteOffsetStart, WriteOffsetSize );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Save old declaration&lt;br /&gt;
    hr = m_pDevice-&amp;gt;GetVertexDeclaration ( &amp;amp;m_pOldVertexDeclaration );&lt;br /&gt;
&lt;br /&gt;
    // Set declaration&lt;br /&gt;
    hr = g_pProxyDevice-&amp;gt;SetVertexDeclaration ( pAdditionalInfo-&amp;gt;pVertexDeclaration );&lt;br /&gt;
&lt;br /&gt;
    // Set additional stream&lt;br /&gt;
    uint OffsetInBytes = ConvertPTSize ( state.stream1.OffsetInBytes );&lt;br /&gt;
    hr = m_pDevice-&amp;gt;SetStreamSource ( 2, pAdditionalInfo-&amp;gt;pStreamData, OffsetInBytes, pAdditionalInfo-&amp;gt;Stride );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=User:Xtravax&amp;diff=50991</id>
		<title>User:Xtravax</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=User:Xtravax&amp;diff=50991"/>
		<updated>2017-05-14T13:18:42Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;A guy who wants to document stuff.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A guy who wants to document stuff.&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=MaybeSetAdditionalVertexStream&amp;diff=50990</id>
		<title>MaybeSetAdditionalVertexStream</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=MaybeSetAdditionalVertexStream&amp;diff=50990"/>
		<updated>2017-05-14T13:16:35Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It sets an additional vertex stream.  It can be fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It sets an additional vertex stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''PrimitiveType:''' D3DPRIMITIVETYPE type --.&lt;br /&gt;
*'''BaseVertexIndex:''' INT value --.&lt;br /&gt;
*'''MinVertexIndex:''' UINT value.&lt;br /&gt;
*'''NumVertices:''' UINT value.&lt;br /&gt;
*'''startIndex:''' UINT value.&lt;br /&gt;
*'''primCount:''' UINT value.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a boolean representing whether an additional vertex stream was set or not.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
bool CAdditionalVertexStreamManager::MaybeSetAdditionalVertexStream ( D3DPRIMITIVETYPE PrimitiveType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount )&lt;br /&gt;
{&lt;br /&gt;
    // Cache info&lt;br /&gt;
    SCurrentStateInfo state;&lt;br /&gt;
&lt;br /&gt;
    // Save call arguments&lt;br /&gt;
    state.args.PrimitiveType = PrimitiveType;&lt;br /&gt;
    state.args.BaseVertexIndex = BaseVertexIndex;&lt;br /&gt;
    state.args.MinVertexIndex = MinVertexIndex;&lt;br /&gt;
    state.args.NumVertices = NumVertices;&lt;br /&gt;
    state.args.startIndex = startIndex;&lt;br /&gt;
    state.args.primCount = primCount;&lt;br /&gt;
  &lt;br /&gt;
    // Cache info about state streams etc&lt;br /&gt;
    UpdateCurrentStateInfo ( state );&lt;br /&gt;
&lt;br /&gt;
    // For now, this only works if the original has 3 decl elements (0:D, 1:P, 1:T) and stream 1 has a stride of 20&lt;br /&gt;
    if ( !CheckCanDoThis ( state ) )&lt;br /&gt;
        return false;&lt;br /&gt;
&lt;br /&gt;
    SetAdditionalVertexStream ( state );&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=OnDeviceCreate&amp;diff=50989</id>
		<title>OnDeviceCreate</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=OnDeviceCreate&amp;diff=50989"/>
		<updated>2017-05-14T13:09:45Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ Function is found inside of CAdditionalVertexStreamManager.  It's used as an event when an IDirect3DDevice9 ins...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ Function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It's used as an event when an IDirect3DDevice9 instance is created (?).&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''pDevice:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
void CAdditionalVertexStreamManager::OnDeviceCreate ( IDirect3DDevice9* pDevice )&lt;br /&gt;
{&lt;br /&gt;
    m_pDevice = pDevice;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetSingleton&amp;diff=50988</id>
		<title>GetSingleton</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetSingleton&amp;diff=50988"/>
		<updated>2017-05-14T13:05:19Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ function is found inside of CAdditionalVertexStreamManager.  It returns an instance of CAdditionalVertexStreamM...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ function is found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It returns an instance of CAdditionalVertexStreamManager.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an instance of CAdditionalVertexStreamManager.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager* CAdditionalVertexStreamManager::GetSingleton ( void )&lt;br /&gt;
{&lt;br /&gt;
    if ( !ms_Singleton )&lt;br /&gt;
        ms_Singleton = new CAdditionalVertexStreamManager ();&lt;br /&gt;
    return ms_Singleton;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50987</id>
		<title>ConvertPTSize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50987"/>
		<updated>2017-05-14T13:00:24Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''SizePT:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an uint representing --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
uint ConvertPTSize ( uint SizePT )&lt;br /&gt;
{&lt;br /&gt;
    return SizePT * 12 / 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50986</id>
		<title>GetTriKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50986"/>
		<updated>2017-05-14T13:00:12Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for [[CAdditionalVertexStreamManager]].&lt;br /&gt;
&lt;br /&gt;
It gets 64 bit key for a triangle by using the ordered vertex indices.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''a:''' To be defined.&lt;br /&gt;
*'''b:''' To be defined.&lt;br /&gt;
*'''c:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a long long 64 bit key for a triangle.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
long long getTriKey ( WORD a, WORD b, WORD c )&lt;br /&gt;
{&lt;br /&gt;
    WORD tmp;&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    if ( c &amp;lt; b ) { tmp = c; c = b; b = tmp; }&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    return ( ((long long)a) &amp;lt;&amp;lt; 32 ) | ( ((long long)b) &amp;lt;&amp;lt; 16 ) | ((long long)c);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50985</id>
		<title>GetTriKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50985"/>
		<updated>2017-05-14T12:59:57Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for [[CAdditionalVertexStreamManager]].&lt;br /&gt;
It gets 64 bit key for a triangle by using the ordered vertex indices.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''a:''' To be defined.&lt;br /&gt;
*'''b:''' To be defined.&lt;br /&gt;
*'''c:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a long long 64 bit key for a triangle.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
long long getTriKey ( WORD a, WORD b, WORD c )&lt;br /&gt;
{&lt;br /&gt;
    WORD tmp;&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    if ( c &amp;lt; b ) { tmp = c; c = b; b = tmp; }&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    return ( ((long long)a) &amp;lt;&amp;lt; 32 ) | ( ((long long)b) &amp;lt;&amp;lt; 16 ) | ((long long)c);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50984</id>
		<title>ConvertPTSize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50984"/>
		<updated>2017-05-14T12:58:02Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for [[CAdditionalVertexStreamManager]].&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''SizePT:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an uint representing --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
uint ConvertPTSize ( uint SizePT )&lt;br /&gt;
{&lt;br /&gt;
    return SizePT * 12 / 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=50983</id>
		<title>~CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=50983"/>
		<updated>2017-05-14T12:57:31Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Destructor&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a C++ Destructor found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::~CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=50982</id>
		<title>~CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=~CAdditionalVertexStreamManager&amp;diff=50982"/>
		<updated>2017-05-14T12:56:45Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Destructor&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This is a C++ Destructor found inside of CAdditionalVertexStreamManager. It converts size of PT stream to sizeof of N...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Destructor&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a C++ Destructor found inside of [[CAdditionalVertexStreamManager]].&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50981</id>
		<title>GetTriKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50981"/>
		<updated>2017-05-14T12:54:40Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''.&lt;br /&gt;
It gets 64 bit key for a triangle by using the ordered vertex indices.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''a:''' To be defined.&lt;br /&gt;
*'''b:''' To be defined.&lt;br /&gt;
*'''c:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a long long 64 bit key for a triangle.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
long long getTriKey ( WORD a, WORD b, WORD c )&lt;br /&gt;
{&lt;br /&gt;
    WORD tmp;&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    if ( c &amp;lt; b ) { tmp = c; c = b; b = tmp; }&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    return ( ((long long)a) &amp;lt;&amp;lt; 32 ) | ( ((long long)b) &amp;lt;&amp;lt; 16 ) | ((long long)c);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50980</id>
		<title>GetTriKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50980"/>
		<updated>2017-05-14T12:54:19Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''.&lt;br /&gt;
It gets 64 bit key for a triangle by using the ordered vertex indices.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''a:''' To be defined.&lt;br /&gt;
*'''b:''' To be defined.&lt;br /&gt;
*'''c:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a long long 64 bit key for a triangle.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
long long getTriKey ( WORD a, WORD b, WORD c )&lt;br /&gt;
{&lt;br /&gt;
    WORD tmp;&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    if ( c &amp;lt; b ) { tmp = c; c = b; b = tmp; }&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    return ( ((long long)a) &amp;lt;&amp;lt; 32 ) | ( ((long long)b) &amp;lt;&amp;lt; 16 ) | ((long long)c);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50979</id>
		<title>GetTriKey</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTriKey&amp;diff=50979"/>
		<updated>2017-05-14T12:53:58Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''. It gets 64 bit key for a triangle...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''.&lt;br /&gt;
It gets 64 bit key for a triangle by using the ordered vertex indices.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''a:''' To be defined.&lt;br /&gt;
*'''b:''' To be defined.&lt;br /&gt;
*'''c:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns a long long 64 bit key for a triangle --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
long long getTriKey ( WORD a, WORD b, WORD c )&lt;br /&gt;
{&lt;br /&gt;
    WORD tmp;&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    if ( c &amp;lt; b ) { tmp = c; c = b; b = tmp; }&lt;br /&gt;
    if ( b &amp;lt; a ) { tmp = b; b = a; a = tmp; }&lt;br /&gt;
    return ( ((long long)a) &amp;lt;&amp;lt; 32 ) | ( ((long long)b) &amp;lt;&amp;lt; 16 ) | ((long long)c);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50978</id>
		<title>ConvertPTSize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50978"/>
		<updated>2017-05-14T12:49:23Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''.&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''SizePT:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an uint representing --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
uint ConvertPTSize ( uint SizePT )&lt;br /&gt;
{&lt;br /&gt;
    return SizePT * 12 / 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50977</id>
		<title>ConvertPTSize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50977"/>
		<updated>2017-05-14T12:48:59Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is a helper function for '''CAdditionalVertexStreamManager'''.&lt;br /&gt;
It converts size of PT stream to sizeof of N stream.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''SizePT:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an uint representing --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
uint ConvertPTSize ( uint SizePT )&lt;br /&gt;
{&lt;br /&gt;
    return SizePT * 12 / 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50976</id>
		<title>ConvertPTSize</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ConvertPTSize&amp;diff=50976"/>
		<updated>2017-05-14T12:44:48Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;  This C++ namespace function is responsible for --.  It can be found in '''Client/Client Core/Sources/CAdditionalVertexStream...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Function&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ namespace function is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources/CAdditionalVertexStreamManager.cpp''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Required Arguments==&lt;br /&gt;
*'''SizePT:''' To be defined.&lt;br /&gt;
&lt;br /&gt;
==Returns==&lt;br /&gt;
Returns an uint representing --.&lt;br /&gt;
&lt;br /&gt;
==Code==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
uint ConvertPTSize ( uint SizePT )&lt;br /&gt;
{&lt;br /&gt;
    return SizePT * 12 / 20;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
[[CAdditionalVertexStreamManager]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50975</id>
		<title>CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50975"/>
		<updated>2017-05-14T12:35:45Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Client Core File&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This C++ file is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Constructor==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Namespaces==&lt;br /&gt;
&lt;br /&gt;
==Namespace Functions==&lt;br /&gt;
*[[ConvertPTSize]]&lt;br /&gt;
*[[getTriKey]]&lt;br /&gt;
&lt;br /&gt;
==Destructors==&lt;br /&gt;
*[[~CAdditionalVertexStreamManager]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*[[GetSingleton]]&lt;br /&gt;
*[[OnDeviceCreate]]&lt;br /&gt;
*[[MaybeSetAdditionalVertexStream]]&lt;br /&gt;
*[[SetAdditionalVertexStream]]&lt;br /&gt;
*[[MaybeUnsetAdditionalVertexStream]]&lt;br /&gt;
*[[UpdateAdditionalStreamContent]]&lt;br /&gt;
*[[UpdateCurrentStateInfo]]&lt;br /&gt;
*[[CheckCanDoThis]]&lt;br /&gt;
*[[GetAdditionalStreamInfo]]&lt;br /&gt;
*[[CreateAdditionalStreamInfo]]&lt;br /&gt;
*[[OnVertexBufferDestroy]]&lt;br /&gt;
*[[OnVertexBufferRangeInvalidated]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50974</id>
		<title>CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50974"/>
		<updated>2017-05-14T12:34:12Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Client Core File&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
&amp;lt;lowercasetitle&amp;gt;&amp;lt;/lowercasetitle&amp;gt;&lt;br /&gt;
This C++ file is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Constructor==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Namespaces==&lt;br /&gt;
&lt;br /&gt;
==Namespace Functions==&lt;br /&gt;
*[[ConvertPTSize]]&lt;br /&gt;
*[[getTriKey]]&lt;br /&gt;
&lt;br /&gt;
==Destructors==&lt;br /&gt;
*[[~CAdditionalVertexStreamManager]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*[[GetSingleton]]&lt;br /&gt;
*[[OnDeviceCreate]]&lt;br /&gt;
*[[MaybeSetAdditionalVertexStream]]&lt;br /&gt;
*[[SetAdditionalVertexStream]]&lt;br /&gt;
*[[MaybeUnsetAdditionalVertexStream]]&lt;br /&gt;
*[[UpdateAdditionalStreamContent]]&lt;br /&gt;
*[[UpdateCurrentStateInfo]]&lt;br /&gt;
*[[CheckCanDoThis]]&lt;br /&gt;
*[[GetAdditionalStreamInfo]]&lt;br /&gt;
*[[CreateAdditionalStreamInfo]]&lt;br /&gt;
*[[OnVertexBufferDestroy]]&lt;br /&gt;
*[[OnVertexBufferRangeInvalidated]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50973</id>
		<title>CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50973"/>
		<updated>2017-05-14T12:31:58Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pageclass subcaption=&amp;quot;C++ Client Core File&amp;quot;&amp;gt;&amp;lt;/pageclass&amp;gt;&lt;br /&gt;
This C++ file is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Constructor==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Namespaces==&lt;br /&gt;
&lt;br /&gt;
==Namespace Functions==&lt;br /&gt;
*[[ConvertPTSize]]&lt;br /&gt;
*[[getTriKey]]&lt;br /&gt;
&lt;br /&gt;
==Destructors==&lt;br /&gt;
*[[~CAdditionalVertexStreamManager]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*[[GetSingleton]]&lt;br /&gt;
*[[OnDeviceCreate]]&lt;br /&gt;
*[[MaybeSetAdditionalVertexStream]]&lt;br /&gt;
*[[SetAdditionalVertexStream]]&lt;br /&gt;
*[[MaybeUnsetAdditionalVertexStream]]&lt;br /&gt;
*[[UpdateAdditionalStreamContent]]&lt;br /&gt;
*[[UpdateCurrentStateInfo]]&lt;br /&gt;
*[[CheckCanDoThis]]&lt;br /&gt;
*[[GetAdditionalStreamInfo]]&lt;br /&gt;
*[[CreateAdditionalStreamInfo]]&lt;br /&gt;
*[[OnVertexBufferDestroy]]&lt;br /&gt;
*[[OnVertexBufferRangeInvalidated]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50972</id>
		<title>CAdditionalVertexStreamManager</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=CAdditionalVertexStreamManager&amp;diff=50972"/>
		<updated>2017-05-14T12:28:12Z</updated>

		<summary type="html">&lt;p&gt;Xtravax: Created page with &amp;quot;This C++ file is responsible for --.  It can be found in '''Client/Client Core/Sources''' in Visual Studio.  ==Constructor== &amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt; CAdditionalVertexStre...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This C++ file is responsible for --.&lt;br /&gt;
&lt;br /&gt;
It can be found in '''Client/Client Core/Sources''' in Visual Studio.&lt;br /&gt;
&lt;br /&gt;
==Constructor==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
CAdditionalVertexStreamManager::CAdditionalVertexStreamManager ( void )&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Namespaces==&lt;br /&gt;
&lt;br /&gt;
==Namespace Functions==&lt;br /&gt;
*[[ConvertPTSize]]&lt;br /&gt;
*[[getTriKey]]&lt;br /&gt;
&lt;br /&gt;
==Destructors==&lt;br /&gt;
*[[~CAdditionalVertexStreamManager]]&lt;br /&gt;
&lt;br /&gt;
==Functions==&lt;br /&gt;
*[[GetSingleton]]&lt;br /&gt;
*[[OnDeviceCreate]]&lt;br /&gt;
*[[MaybeSetAdditionalVertexStream]]&lt;br /&gt;
*[[SetAdditionalVertexStream]]&lt;br /&gt;
*[[MaybeUnsetAdditionalVertexStream]]&lt;br /&gt;
*[[UpdateAdditionalStreamContent]]&lt;br /&gt;
*[[UpdateCurrentStateInfo]]&lt;br /&gt;
*[[CheckCanDoThis]]&lt;br /&gt;
*[[GetAdditionalStreamInfo]]&lt;br /&gt;
*[[CreateAdditionalStreamInfo]]&lt;br /&gt;
*[[OnVertexBufferDestroy]]&lt;br /&gt;
*[[OnVertexBufferRangeInvalidated]]&lt;/div&gt;</summary>
		<author><name>Xtravax</name></author>
	</entry>
</feed>