Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
RasterizerState.cs
Go to the documentation of this file.
1using System;
5
7
9{
11
13
15
17
18 internal float cachedDepthBias;
19
21
22 public static readonly RasterizerState CullNone = new RasterizerState(CullMode.None, "RasterizerState.CullNone");
23
24 public static readonly RasterizerState CullClockwise = new RasterizerState(CullMode.CullClockwiseFace, "RasterizerState.CullClockwise");
25
26 public static readonly RasterizerState CullCounterClockwise = new RasterizerState(CullMode.CullCounterClockwiseFace, "RasterizerState.CullCounterClockwise");
27
28 internal bool isBound;
29
30 internal _D3DCULL d3dCullMode;
31
32 internal _D3DFILLMODE d3dFillMode;
33
35 {
36 get
37 {
39 }
40 set
41 {
44 }
45 }
46
47 public float DepthBias
48 {
49 get
50 {
51 return cachedDepthBias;
52 }
53 set
54 {
57 }
58 }
59
61 {
62 [return: MarshalAs(UnmanagedType.U1)]
63 get
64 {
66 }
67 [param: MarshalAs(UnmanagedType.U1)]
68 set
69 {
72 }
73 }
74
76 {
77 [return: MarshalAs(UnmanagedType.U1)]
78 get
79 {
81 }
82 [param: MarshalAs(UnmanagedType.U1)]
83 set
84 {
87 }
88 }
89
91 {
92 get
93 {
94 return cachedFillMode;
95 }
96 set
97 {
100 }
101 }
102
104 {
105 get
106 {
107 return cachedCullMode;
108 }
109 set
110 {
111 ThrowIfBound();
113 }
114 }
115
116 private void SetDefaults()
117 {
118 ThrowIfBound();
119 cachedCullMode = CullMode.CullCounterClockwiseFace;
120 ThrowIfBound();
121 cachedFillMode = FillMode.Solid;
122 ThrowIfBound();
124 ThrowIfBound();
126 ThrowIfBound();
127 cachedDepthBias = 0f;
128 ThrowIfBound();
130 }
131
133 {
134 try
135 {
136 SetDefaults();
137 isBound = false;
138 return;
139 }
140 catch
141 {
142 //try-fault
143 base.Dispose(true);
144 throw;
145 }
146 }
147
148 private RasterizerState(CullMode cullMode, string name)
149 {
150 try
151 {
152 SetDefaults();
153 ThrowIfBound();
154 cachedCullMode = cullMode;
155 base.Name = name;
156 isBound = true;
157 return;
158 }
159 catch
160 {
161 //try-fault
162 base.Dispose(true);
163 throw;
164 }
165 }
166
167 private void _007ERasterizerState()
168 {
169 }
170
171 internal unsafe void Apply(GraphicsDevice device)
172 {
173 if (isDisposed)
174 {
176 }
177 if (_parent != device)
178 {
179 _parent = device;
180 isBound = true;
181 d3dCullMode = _003CModule_003E.ConvertXnaCullModeToDx(cachedCullMode);
182 d3dFillMode = _003CModule_003E.ConvertXnaFillModeToDx(cachedFillMode);
183 }
184 IntPtr pComPtr = (IntPtr)device.pComPtr;
185 Helpers.CheckDisposed(device, pComPtr);
186 IDirect3DDevice9* pComPtr2 = device.pComPtr;
187 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)22, (uint)d3dCullMode);
188 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)8, (uint)d3dFillMode);
189 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)174, cachedScissorTestEnable ? 1u : 0u);
190 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)161, cachedMultiSampleAntiAlias ? 1u : 0u);
191 float num = cachedDepthBias;
192 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)195, *(uint*)(&num));
193 float num2 = cachedSlopeScaleDepthBias;
194 ((delegate* unmanaged[Stdcall, Stdcall]<IntPtr, _D3DRENDERSTATETYPE, uint, int>)(int)(*(uint*)(*(int*)pComPtr2 + 228)))((nint)pComPtr2, (_D3DRENDERSTATETYPE)175, *(uint*)(&num2));
195 }
196
197 internal void ThrowIfBound()
198 {
199 if (isBound)
200 {
201 throw new InvalidOperationException(string.Format(args: new object[1] { typeof(RasterizerState).Name }, provider: CultureInfo.CurrentCulture, format: FrameworkResources.BoundStateObject));
202 }
203 }
204
205 [HandleProcessCorruptedStateExceptions]
206 protected override void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
207 {
208 if (P_0)
209 {
210 try
211 {
213 return;
214 }
215 finally
216 {
217 base.Dispose(true);
218 }
219 }
220 base.Dispose(false);
221 }
222}
unsafe void Apply(GraphicsDevice device)
override void Dispose([MarshalAs(UnmanagedType.U1)] bool P_0)
RasterizerState(CullMode cullMode, string name)
static readonly RasterizerState CullCounterClockwise
static readonly RasterizerState CullClockwise
static void CheckDisposed(object obj, IntPtr pComPtr)
Definition Helpers.cs:188
static CultureInfo CurrentCulture