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

◆ Effect() [3/3]

unsafe Microsoft.Xna.Framework.Graphics.Effect.Effect ( Effect cloneSource)
inlineprotected

Definition at line 255 of file Effect.cs.

256 {
257 try
258 {
259 if (cloneSource == null)
260 {
261 throw new ArgumentNullException("cloneSource", FrameworkResources.NullNotAllowed);
262 }
263 IntPtr intPtr = (IntPtr)cloneSource.pComPtr;
264 Helpers.CheckDisposed(cloneSource, intPtr);
265 GraphicsDevice parent = cloneSource._parent;
266 if (parent == null)
267 {
268 throw new ArgumentNullException("graphicsDevice", FrameworkResources.DeviceCannotBeNullOnResourceCreate);
269 }
270 ID3DXEffect* ptr = null;
271 ID3DXEffect* ptr2 = cloneSource.pComPtr;
272 int num = ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, IDirect3DDevice9*, ID3DXEffect**, int>)(int)(*(uint*)(*(int*)ptr2 + 308)))((nint)ptr2, (IDirect3DDevice9*)parent.pStateTracker, &ptr);
273 if (num < 0)
274 {
275 throw GraphicsHelpers.GetExceptionFromResult((uint)num);
276 }
277 _parent = parent;
278 pComPtr = ptr;
280 cloneSource.AddClonedEffect(this);
281 parent.Resources.AddTrackedObject(this, ptr, 0u, _internalHandle, ref _internalHandle);
284 int num2 = 0;
285 if (0 >= pParamCollection.Count)
286 {
287 return;
288 }
289 do
290 {
291 EffectParameter effectParameter = pParamCollection[num2];
292 if (effectParameter.ElementCount > 1)
293 {
294 EffectParameterType paramType = effectParameter._paramType;
295 EffectParameterType effectParameterType = paramType;
296 if (effectParameterType != EffectParameterType.Bool)
297 {
298 EffectParameterType effectParameterType2 = paramType;
299 if (effectParameterType2 != EffectParameterType.Int32)
300 {
301 EffectParameterType effectParameterType3 = paramType;
302 if (effectParameterType3 != EffectParameterType.Single)
303 {
304 goto IL_015f;
305 }
306 }
307 }
308 int rows = effectParameter._rows;
309 int columns = effectParameter._columns;
310 int num3 = effectParameter.ElementCount * columns * rows;
311 if (num3 > 0)
312 {
313 float[] valueSingleArray = cloneSource.pParamCollection[num2].GetValueSingleArray(num3);
315 }
316 }
317 goto IL_015f;
318 IL_015f:
319 num2++;
320 }
321 while (num2 < pParamCollection.Count);
322 return;
323 }
324 catch
325 {
326 //try-fault
327 base.Dispose(true);
328 throw;
329 }
330 }
unsafe EffectTechnique CurrentTechnique
Definition Effect.cs:34
EffectParameterCollection pParamCollection
Definition Effect.cs:15
EffectTechniqueCollection pTechniqueCollection
Definition Effect.cs:13

References Microsoft.Xna.Framework.Graphics.GraphicsResource._internalHandle, Microsoft.Xna.Framework.Graphics.GraphicsResource._parent, Microsoft.Xna.Framework.Graphics.DeviceResourceManager.AddTrackedObject(), Microsoft.Xna.Framework.Helpers.CheckDisposed(), Microsoft.Xna.Framework.Graphics.EffectParameterCollection.Count, Microsoft.Xna.Framework.Graphics.Effect.CurrentTechnique, Microsoft.Xna.Framework.FrameworkResources.DeviceCannotBeNullOnResourceCreate, Microsoft.Xna.Framework.Graphics.GraphicsHelpers.GetExceptionFromResult(), Microsoft.Xna.Framework.Graphics.Effect.InitializeHelpers(), Microsoft.Xna.Framework.FrameworkResources.NullNotAllowed, Microsoft.Xna.Framework.Graphics.Effect.pComPtr, Microsoft.Xna.Framework.Graphics.Effect.pParamCollection, Microsoft.Xna.Framework.Graphics.Effect.pParentEffect, Microsoft.Xna.Framework.Graphics.GraphicsDevice.pStateTracker, Microsoft.Xna.Framework.Graphics.Effect.pTechniqueCollection, and Microsoft.Xna.Framework.Graphics.GraphicsDevice.Resources.