Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ RecreateAndPopulateObject() [1/2]

virtual unsafe int Microsoft.Xna.Framework.Graphics.IndexBuffer.RecreateAndPopulateObject ( )
inlinepackagevirtual

Implements Microsoft.Xna.Framework.Graphics.IGraphicsResource.

Reimplemented in Microsoft.Xna.Framework.Graphics.DynamicIndexBuffer, and Microsoft.Xna.Framework.Graphics.DynamicIndexBuffer.

Definition at line 333 of file IndexBuffer.cs.

334 {
335 if (pComPtr != null)
336 {
337 return -2147467259;
338 }
339 if (pBufferData == null && _bufferSize != 0)
340 {
341 return -2147467259;
342 }
343 fixed (IDirect3DIndexBuffer9** ptr2 = &pComPtr)
344 {
345 _D3DFORMAT d3DFORMAT = ((_indexSize == 4) ? ((_D3DFORMAT)102) : ((_D3DFORMAT)101));
346 GraphicsDevice parent = _parent;
347 IDirect3DDevice9* ptr = parent.pComPtr;
348 GraphicsDevice graphicsDevice = parent;
349 int num = *(int*)ptr + 108;
350 int num2 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint, uint, _D3DFORMAT, _D3DPOOL, IDirect3DIndexBuffer9**, void**, int>)(int)(*(uint*)num))((nint)ptr, _bufferSize, graphicsDevice.GetBufferUsage(_usage), d3DFORMAT, (_D3DPOOL)1, ptr2, null);
351 if (num2 >= 0)
352 {
353 void* ptr3 = null;
354 IDirect3DIndexBuffer9* ptr4 = pComPtr;
355 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, uint, uint, void**, uint, int>)(int)(*(uint*)(*(int*)ptr4 + 44)))((nint)ptr4, 0u, 0u, &ptr3, 0u);
356 if (num2 >= 0)
357 {
358 uint bufferSize = _bufferSize;
359 _003CModule_003E.memcpy_s(ptr3, bufferSize, pBufferData, bufferSize);
360 ptr4 = pComPtr;
361 IDirect3DIndexBuffer9* intPtr = ptr4;
362 num2 = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, int>)(int)(*(uint*)(*(int*)intPtr + 48)))((nint)intPtr);
363 }
364 if (!((_usage & 8) == 8))
365 {
366 void* ptr5 = pBufferData;
367 if (ptr5 != null)
368 {
369 _003CModule_003E.delete_005B_005D(ptr5);
370 pBufferData = null;
371 }
372 }
373 }
375 return num2;
376 }
377 }
unsafe void AddTrackedObject(object managedObject, void *pComPtr, uint resourceManagementMode, ulong handle, ref ulong updatedHandle)
unsafe IDirect3DIndexBuffer9 * pComPtr

References Microsoft.Xna.Framework.Graphics.IndexBuffer._bufferSize, Microsoft.Xna.Framework.Graphics.IndexBuffer._indexSize, Microsoft.Xna.Framework.Graphics.GraphicsResource._internalHandle, Microsoft.Xna.Framework.Graphics.GraphicsResource._parent, Microsoft.Xna.Framework.Graphics.IndexBuffer._usage, Microsoft.Xna.Framework.Graphics.DeviceResourceManager.AddTrackedObject(), Microsoft.Xna.Framework.Graphics.GraphicsDevice.GetBufferUsage(), Microsoft.Xna.Framework.Graphics.IndexBuffer.pBufferData, Microsoft.Xna.Framework.Graphics.GraphicsDevice.pComPtr, Microsoft.Xna.Framework.Graphics.IndexBuffer.pComPtr, and Microsoft.Xna.Framework.Graphics.GraphicsDevice.Resources.

Referenced by Microsoft.Xna.Framework.Graphics.IndexBuffer.RecreateAndPopulateObject().