diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin index 39eb7cef..deef2d1c 100644 Binary files a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin and b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.metadata.v9.bin differ diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin index a25a4cb9..9c53931d 100644 Binary files a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin and b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.projects.v9.bin differ diff --git a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin index 3805d6b1..76496626 100644 Binary files a/源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin and b/源代码/.vs/ProjectEvaluation/stgsharpdevelop.strings.v9.bin differ diff --git a/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 b/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 index d8990c18..842c4b8c 100644 Binary files a/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 and b/源代码/.vs/StgSharpDevelop/DesignTimeBuild/.dtbcache.v2 differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/24dbea97-4e44-4cff-bde9-b5bb8d11c9d6.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/24dbea97-4e44-4cff-bde9-b5bb8d11c9d6.vsidx new file mode 100644 index 00000000..2410ce4a Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/24dbea97-4e44-4cff-bde9-b5bb8d11c9d6.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/2ecb2157-6d69-46ac-ac04-f2c2c406bcb1.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/2ecb2157-6d69-46ac-ac04-f2c2c406bcb1.vsidx deleted file mode 100644 index e8a4f2a3..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/2ecb2157-6d69-46ac-ac04-f2c2c406bcb1.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/3b705e44-0470-400d-91ba-30dd2533d372.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/3b705e44-0470-400d-91ba-30dd2533d372.vsidx deleted file mode 100644 index 792c78ab..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/3b705e44-0470-400d-91ba-30dd2533d372.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/601a6295-f112-466c-bb36-82a968868280.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/601a6295-f112-466c-bb36-82a968868280.vsidx deleted file mode 100644 index c4670dcd..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/601a6295-f112-466c-bb36-82a968868280.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/6f05dbc3-ffc9-4234-b625-69119aa7c5ef.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/6f05dbc3-ffc9-4234-b625-69119aa7c5ef.vsidx new file mode 100644 index 00000000..b9098292 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/6f05dbc3-ffc9-4234-b625-69119aa7c5ef.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/7955f8f1-869a-4859-b56d-599bf6b1a7e0.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/7955f8f1-869a-4859-b56d-599bf6b1a7e0.vsidx deleted file mode 100644 index 9934b51d..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/7955f8f1-869a-4859-b56d-599bf6b1a7e0.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/cd0fd8f0-6ffa-4e38-af84-d93f68d4836e.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/cd0fd8f0-6ffa-4e38-af84-d93f68d4836e.vsidx deleted file mode 100644 index 76322428..00000000 Binary files a/源代码/.vs/StgSharpDevelop/FileContentIndex/cd0fd8f0-6ffa-4e38-af84-d93f68d4836e.vsidx and /dev/null differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/d0863680-9836-43d8-844c-586ad60694d1.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/d0863680-9836-43d8-844c-586ad60694d1.vsidx new file mode 100644 index 00000000..ce3b17be Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/d0863680-9836-43d8-844c-586ad60694d1.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/d8d4d07e-433d-44b5-9469-b0c37138d0c9.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/d8d4d07e-433d-44b5-9469-b0c37138d0c9.vsidx new file mode 100644 index 00000000..b40f767c Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/d8d4d07e-433d-44b5-9469-b0c37138d0c9.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/FileContentIndex/e00aa217-54e1-420d-82bd-36dcdbe2a2e1.vsidx b/源代码/.vs/StgSharpDevelop/FileContentIndex/e00aa217-54e1-420d-82bd-36dcdbe2a2e1.vsidx new file mode 100644 index 00000000..ad191777 Binary files /dev/null and b/源代码/.vs/StgSharpDevelop/FileContentIndex/e00aa217-54e1-420d-82bd-36dcdbe2a2e1.vsidx differ diff --git a/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 b/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 index 993f13c4..6794a4dd 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 and b/源代码/.vs/StgSharpDevelop/v17/.futdcache.v2 differ diff --git a/源代码/.vs/StgSharpDevelop/v17/.suo b/源代码/.vs/StgSharpDevelop/v17/.suo index f10fd62a..b2b131cf 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/.suo and b/源代码/.vs/StgSharpDevelop/v17/.suo differ diff --git a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json index 741b2e12..e245a07d 100644 --- a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json +++ b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.backup.json @@ -3,108 +3,515 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\quick_hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|C:\\PROGRAM FILES\\MICROSOFT VISUAL STUDIO\\2022\\ENTERPRISE\\VC\\TOOLS\\MSVC\\14.41.34120\\INCLUDE\\TMMINTRIN.H||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_internal.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\iimageprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\iimageprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\vector.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\stb_image.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix24.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix24.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix34.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix34.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|solutionrelative:benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\ivector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\ivector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\nativemethods.txt||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\nativemethods.txt||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\control||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\control||{8B382828-6202-11D1-8870-0000F87579D2}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3native.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\gl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\threading\\emptythread.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\threading\\emptythread.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glapidefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glapidefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfucntionsourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfucntionsourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\triggetfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\triggetfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -114,105 +521,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\bidirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\bidirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -221,26 +533,14 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timesourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timesourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -249,10 +549,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\routeswitch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\routeswitch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -261,10 +557,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\iconvertabletoblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\iconvertabletoblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\bpnodeactionattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\bpnodeactionattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -273,314 +565,18 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\controlitemrender.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\controlitemrender.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\controlitemrender.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\controlitemrender.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\main.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\main.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\openglcontrollingitemrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\openglcontrollingitemrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\igeomtrybuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\igeomtrybuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\openglcontrollingitemrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\openglcontrollingitemrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\touhou\\view\\openningview.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\touhou\\view\\openningview.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\View.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -593,10 +589,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -605,26 +597,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -641,46 +613,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\area.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\area.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\serialize\\issdserializable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\serialize\\issdserializable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\serialize\\define.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\serialize\\define.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\ssdvirtualfolder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\ssdvirtualfolder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -693,62 +629,14 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\ssdraw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\ssdraw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\globalkeystat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\globalkeystat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\errordefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\errordefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\iinstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\iinstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -761,34 +649,14 @@ "AbsoluteMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|solutionrelative:oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\parallelogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\parallelogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\cordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\cordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -797,26 +665,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\spacegeometry\\class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\spacegeometry\\class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\coordinationbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\coordinationbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\plaininstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\plaininstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\cordination.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\cordination.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.cross.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.cross.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -825,183 +673,30 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\plain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\plain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\streamlocalcoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\streamlocalcoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\joysticktrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\joysticktrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\itrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\itrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\KeyEvent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\Coordination\\ICoord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\ShowForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\FormThreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\Form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Demo\\View\\Render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\ViewResponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\ViewRender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\ViewDesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\MultiKeyDictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\TimeFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\crossframeblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\crossframeblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" } ], "DocumentGroupContainers": [ { "Orientation": 0, - "VerticalTabListWidth": 214, + "VerticalTabListWidth": 188, "DocumentGroups": [ { "DockedWidth": 197, - "SelectedChildIndex": 106, + "SelectedChildIndex": 35, "Children": [ { "$type": "Bookmark", @@ -1009,1860 +704,1377 @@ }, { "$type": "Document", - "DocumentIndex": 18, - "Title": "ImageHelper.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAABsAAAAAAAAAAAD4vy8AAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-28T02:49:25.315Z" - }, - { - "$type": "Document", - "DocumentIndex": 28, - "Title": "Dictionary.cs", - "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs", - "ToolTip": "C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs", - "ViewState": "AgIAAFkBAAAAAAAAAIA0wGQBAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T21:35:54.107Z" - }, - { - "$type": "Document", - "DocumentIndex": 34, - "Title": "SideNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:05:45.53Z" - }, - { - "$type": "Document", - "DocumentIndex": 36, - "Title": "BlueprintActionNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:09.577Z" - }, - { - "$type": "Document", - "DocumentIndex": 37, - "Title": "Blueprint.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAvwB8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:06.765Z" - }, - { - "$type": "Document", - "DocumentIndex": 38, - "Title": "TimeSpanProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "ViewState": "AgIAACYAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:00.578Z" - }, - { - "$type": "Document", - "DocumentIndex": 43, - "Title": "TimeFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAvwC4AAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:02:49.325Z" - }, - { - "$type": "Document", - "DocumentIndex": 47, - "Title": "BlueprintRunner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "ViewState": "AgIAAFwAAAAAAAAAAIA0wCgAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T17:53:00.315Z" - }, - { - "$type": "Document", - "DocumentIndex": 49, - "Title": "SizeFixedList.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAvwH0AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T17:51:39.457Z" - }, - { - "$type": "Document", - "DocumentIndex": 50, - "Title": "IBidrirectionalDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAC8AAAA/AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T23:33:42.221Z" - }, - { - "$type": "Document", - "DocumentIndex": 53, - "Title": "TexturePipeline.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\TexturePipeline.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", - "RelativeToolTip": "StgSharp\\Graphics\\TexturePipeline.cs", - "ViewState": "AgIAABUAAAAAAAAAAAAvwCgAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:29:30.925Z" - }, - { - "$type": "Document", - "DocumentIndex": 55, - "Title": "Counter.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", - "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", - "ViewState": "AgIAACQAAAAAAAAAAAAAACYAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:27:55.46Z" - }, - { - "$type": "Document", - "DocumentIndex": 27, - "Title": "BidirectionalDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "ViewState": "AgIAAEMAAAAAAAAAAIAzwFUAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:20:40.602Z" - }, - { - "$type": "Document", - "DocumentIndex": 67, - "Title": "BlueprintActionNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAAACYAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T02:58:10.928Z" - }, - { - "$type": "Document", - "DocumentIndex": 17, - "Title": "IImageProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAAACYAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T00:21:20.169Z" - }, - { - "$type": "Document", - "DocumentIndex": 68, - "Title": "M128.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\M128.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Data\\M128.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\M128.cs", - "RelativeToolTip": "StgSharpDebug\\Data\\M128.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAowC4AAAAbAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T23:57:32.075Z" - }, - { - "$type": "Document", - "DocumentIndex": 245, - "Title": "CrossFrameBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T22:04:59.351Z" - }, - { - "$type": "Document", - "DocumentIndex": 69, - "Title": "GlobalSetting.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\GlobalSetting.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Environment\\GlobalSetting.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\GlobalSetting.cs", - "RelativeToolTip": "StgSharpDebug\\Environment\\GlobalSetting.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAvwEgAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T22:04:46.699Z" - }, - { - "$type": "Document", - "DocumentIndex": 26, - "Title": "AutoTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ViewState": "AgIAAGwAAAAAAAAAAAAiwH4AAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T21:16:55.239Z" - }, - { - "$type": "Document", - "DocumentIndex": 72, - "Title": "glResourceManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAEMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T21:16:48.829Z" - }, - { - "$type": "Document", - "DocumentIndex": 80, - "Title": "GLBufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAADMAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T20:33:11.097Z" - }, - { - "$type": "Document", - "DocumentIndex": 79, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAH8AAAAAAAAAAAAUwCoAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T21:48:41.305Z" - }, - { - "$type": "Document", - "DocumentIndex": 82, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T21:48:25.007Z" - }, - { - "$type": "Document", - "DocumentIndex": 86, - "Title": "glAPICalling.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:14:08.969Z" - }, - { - "$type": "Document", - "DocumentIndex": 29, - "Title": "glResourceGenrator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ViewState": "AgIAADYAAAAAAAAAAIAzwFIAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:13:55.184Z" - }, - { - "$type": "Document", - "DocumentIndex": 78, - "Title": "glResourceManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "ViewState": "AgIAAEcAAAAAAAAAAAAqwFUAAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:13:42.377Z" - }, - { - "$type": "Document", - "DocumentIndex": 246, - "Title": "MultiKeyDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-23T20:00:13.62Z" - }, - { - "$type": "Document", - "DocumentIndex": 16, - "Title": "AutoTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ViewState": "AgIAAD8AAAAAAAAAAAAIwFMAAAA0AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-23T19:22:04.183Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 89, - "Title": "ControlItemRender.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\ControlItemRender.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\ControlItemRender.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:42:48.589Z" - }, - { - "$type": "Document", - "DocumentIndex": 94, - "Title": "main.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\main.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\main.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\main.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\main.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:40:09.913Z" - }, - { - "$type": "Document", - "DocumentIndex": 90, - "Title": "ControlItemRender.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\ControlItemRender.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\ControlItemRender.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:36:54.425Z" - }, - { - "$type": "Document", - "DocumentIndex": 96, - "Title": "OpenGLControllingItemRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\OpenGLControllingItemRenderStream.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\OpenGLControllingItemRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\OpenGLControllingItemRenderStream.cs", - "RelativeToolTip": "StgSharp\\MVVM\\OpenGLControllingItemRenderStream.cs", - "ViewState": "AgIAAAAAAAAAAAAAAIBgwBUAAAAwAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:32:58.353Z" - }, - { - "$type": "Document", - "DocumentIndex": 97, - "Title": "IGeomtryBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:26:58.217Z" - }, - { - "$type": "Document", - "DocumentIndex": 98, - "Title": "OpenGLControllingItemRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\OpenGLControllingItemRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\OpenGLControllingItemRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\OpenGLControllingItemRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\OpenGLControllingItemRenderStream.cs", - "ViewState": "AgIAAAcAAAAAAAAAAAAIwBoAAAAwAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:23:06.648Z" - }, - { - "$type": "Document", - "DocumentIndex": 99, - "Title": "OpenningView.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "RelativeToolTip": "StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:20:02.653Z" - }, - { - "$type": "Document", - "DocumentIndex": 91, - "Title": "TouhouWindow.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "RelativeToolTip": "StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:14:18.39Z" - }, - { - "$type": "Document", - "DocumentIndex": 95, - "Title": "InternalData.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\InternalData.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Data\\InternalData.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\InternalData.cs", - "RelativeToolTip": "StgSharpDebug\\Data\\InternalData.cs", - "ViewState": "AgIAAAcAAAAAAAAAAAAuwDMAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-30T23:52:16.105Z" - }, - { - "$type": "Document", - "DocumentIndex": 77, - "Title": "glApiManagerConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ViewState": "AgIAABgAAAAAAAAAAIBQwAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:56:27.205Z" - }, - { - "$type": "Document", - "DocumentIndex": 105, - "Title": "Object.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs", - "ViewState": "AgIAABIAAAAAAAAAAIAxwBkAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:53:04.659Z" - }, - { - "$type": "Document", - "DocumentIndex": 76, - "Title": "glException.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "ViewState": "AgIAAEMAAAAAAAAAAAAUwGUAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:18:29.968Z" - }, - { - "$type": "Document", - "DocumentIndex": 109, - "Title": "StructDefine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "ViewState": "AgIAABIAAAAAAAAAAIBgwC0AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:08:05.513Z" - }, - { - "$type": "Document", - "DocumentIndex": 104, - "Title": "GLIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "ViewState": "AgIAAGgAAAAAAAAAAAAqwGgAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:06:08.827Z" - }, - { - "$type": "Document", - "DocumentIndex": 116, - "Title": "ViewManage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "ViewState": "AgIAABoAAAAAAAAAAAA1wDIAAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:47:56.998Z" - }, - { - "$type": "Document", - "DocumentIndex": 41, - "Title": "TimeProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\TimeProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Environment\\TimeProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\TimeProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Environment\\TimeProvider.cs", - "ViewState": "AgIAABkAAAAAAAAAAAAnwDAAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:44:41.918Z" - }, - { - "$type": "Document", - "DocumentIndex": 103, - "Title": "SemaphoreSlim.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:44:32.439Z" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "ViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewPort.cs", - "ViewState": "AgIAADEAAAAAAAAAAEBBwDoAAAASAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:31:16.196Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 87, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAWwHQAAAAvAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:20:17.17Z" - }, - { - "$type": "Document", - "DocumentIndex": 111, - "Title": "ShowViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "ViewState": "AgIAADIAAAAAAAAAAAAtwEgAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:28:00.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 40, - "Title": "ViewModel.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAvwGoAAAA5AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:24:58.03Z" - }, - { - "$type": "Document", - "DocumentIndex": 118, - "Title": "PlainGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAqwC0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:16:05.323Z" - }, - { - "$type": "Document", - "DocumentIndex": 117, - "Title": "Rectangle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "ViewState": "AgIAABAAAAAAAAAAAAA1wCUAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:14:47.657Z" - }, - { - "$type": "Document", - "DocumentIndex": 88, + "DocumentIndex": 7, "Title": "ViewDesigner.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAmwGUAAAAUAAAAAAAAAA==", + "ViewState": "AgIAAHkAAAAAAAAAAAAmwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T18:02:40.594Z" - }, - { - "$type": "Document", - "DocumentIndex": 123, - "Title": "KeyTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T22:07:04.226Z" - }, - { - "$type": "Document", - "DocumentIndex": 125, - "Title": "DataBinding.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", - "ViewState": "AgIAADgAAAAAAAAAAAA0wC8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:50:43.739Z" - }, - { - "$type": "Document", - "DocumentIndex": 31, - "Title": "ViewBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "ViewState": "AgIAABIAAAAAAAAAAAApwH8AAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:46:52.221Z" - }, - { - "$type": "Document", - "DocumentIndex": 33, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAvwB8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:02:28.873Z" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "NewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\NewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\NewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\NewRender.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\NewRender.cs", - "ViewState": "AgIAACkAAAAAAAAAAAAswEAAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:00:30.407Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 128, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewResponder.cs", - "ViewState": "AgIAABwAAAAAAAAAAIBgwDsAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:44:59.912Z" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewRender.cs", - "ViewState": "AgIAAFsAAAAAAAAAAAAuwG0AAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:44:50.254Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 127, - "Title": "ViewDesigner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewDesigner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewDesigner.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAIYAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:42:19.45Z" - }, - { - "$type": "Document", - "DocumentIndex": 113, - "Title": "Control.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Control.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Control.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T23:13:34.964Z" - }, - { - "$type": "Document", - "DocumentIndex": 23, - "Title": "Partical.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "ViewState": "AgIAAFQAAAAAAAAAAAAzwFsAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T18:54:09.535Z" - }, - { - "$type": "Document", - "DocumentIndex": 236, - "Title": "Render.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Render.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Render.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T18:52:26.586Z" - }, - { - "$type": "Document", - "DocumentIndex": 112, - "Title": "PlainGeometryMesh.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "ViewState": "AgIAACsAAAAAAAAAAAAiwDoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:21:10.362Z" - }, - { - "$type": "Document", - "DocumentIndex": 30, - "Title": "TexturePipeline.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TexturePipeline.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\TexturePipeline.cs", - "ViewState": "AgIAABAAAAAAAAAAAAAhwCoAAAA0AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:20:56.032Z" - }, - { - "$type": "Document", - "DocumentIndex": 39, - "Title": "MarkingLable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAvwC8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:08:20.718Z" - }, - { - "$type": "Document", - "DocumentIndex": 119, - "Title": "DecorationBox.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:08:04.698Z" - }, - { - "$type": "Document", - "DocumentIndex": 121, - "Title": "CharacterIndexImage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "ViewState": "AgIAAAMAAAAAAAAAAIBgwA0AAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:07:37.453Z" - }, - { - "$type": "Document", - "DocumentIndex": 35, - "Title": "BattleField.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAvwCAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:06:14.126Z" - }, - { - "$type": "Document", - "DocumentIndex": 120, - "Title": "ControllingIntem.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwA4AAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:05:39.942Z" - }, - { - "$type": "Document", - "DocumentIndex": 122, - "Title": "TextureProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TextureProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\TextureProvider.cs", - "ViewState": "AgIAABIAAAAAAAAAAAAcwCMAAAASAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T17:09:02.036Z" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "Design.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Design.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Design.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAqwCYAAAAhAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T08:07:56.357Z", + "WhenOpened": "2024-10-02T17:23:25.276Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 1, - "Title": "ViewMain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\ViewMain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\ViewMain.cs", - "ViewState": "AgIAAEIAAAAAAAAAAIA1wFcAAAAVAAAAAAAAAA==", + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Lable.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Lable.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Lable.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAAwDgAAAAgAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T08:06:54.118Z", + "WhenOpened": "2024-10-02T09:09:25.924Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 129, + "DocumentIndex": 15, + "Title": "tmmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\tmmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\tmmintrin.h", + "ViewState": "AgIAACIAAAAAAAAAAIAwwC0AAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-10-02T02:14:03.631Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "quick_hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c", + "RelativeDocumentMoniker": "StgSharpC\\quick_hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c", + "RelativeToolTip": "StgSharpC\\quick_hash.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-10-02T01:00:22.214Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAQwDMAAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T19:25:34.473Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "vector.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c", + "RelativeDocumentMoniker": "StgSharpC\\vector.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c", + "RelativeToolTip": "StgSharpC\\vector.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-30T18:50:19.959Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAowC8AAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T18:13:26.275Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 171, + "Title": "immintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h", + "ViewState": "AgIAAEgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-30T18:00:39.836Z" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "Matrix43.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix43.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix43.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix43.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix43.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAQwJEAAABDAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:54.686Z" + }, + { + "$type": "Document", + "DocumentIndex": 47, + "Title": "Matrix23.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix23.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix23.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix23.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix23.cs", + "ViewState": "AgIAAGcAAAAAAAAAAAAQwHUAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:50.079Z" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "ColumnSet2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAQwDgAAAA8AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:33.294Z" + }, + { + "$type": "Document", + "DocumentIndex": 45, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAABEAAAAAAAAAAADwvzIAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:28.515Z" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "Matrix22.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix22.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix22.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix22.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix22.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAzwDEAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:27.126Z" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "ViewState": "AgIAAKoAAAAAAAAAAAAAwIAAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:11.427Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "Matrix33.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix33.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix33.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix33.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix33.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAQwIwAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:42:19.077Z" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "Matrix32.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix32.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix32.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix32.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix32.cs", + "ViewState": "AgIAAHEAAAAAAAAAAAAowH4AAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:41:00.831Z" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "Matrix43.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAQwJEAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:18.978Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 33, + "Title": "Matrix34.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAQwIoAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:11.967Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "Matrix33.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "ViewState": "AgIAAHkAAAAAAAAAAAAuwIoAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:07.562Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 32, + "Title": "Matrix32.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "ViewState": "AgIAAHAAAAAAAAAAAAAQwH4AAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:48:52.232Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 31, + "Title": "Matrix24.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAzwIoAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:48:41.245Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "Matrix23.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "ViewState": "AgIAAGcAAAAAAAAAAAAQwHUAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:47:48.203Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ViewState": "AgIAAHIAAAAAAAAAAAAQwIAAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:47:19.267Z" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:26:04.159Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "DataBinding.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", + "ViewState": "AgIAAFIAAAAAAAAAAAAgwFsAAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:58.341Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 54, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAABAAAAAAAAAAAAAQwB4AAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:53.902Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 56, + "Title": "Vector.Orthogonalize.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAAQwB8AAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:47.906Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 64, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAHsAAAAAAAAAAAAUwIkAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:45.42Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAAAwAAAAAAAAAAADwvx4AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:40.498Z" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharp\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:27.05Z" + }, + { + "$type": "Document", + "DocumentIndex": 66, "Title": "DataBinding.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\DataBinding.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACgAAAAhAAAAAAAAAA==", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-19T16:41:06.14Z" + "WhenOpened": "2024-09-29T23:25:26.263Z" }, { "$type": "Document", - "DocumentIndex": 132, - "Title": "KeyEventAttribute.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "DocumentIndex": 57, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAABQAAAAAAAAAAAAiwB8AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-19T15:04:20.506Z" + "WhenOpened": "2024-09-29T23:25:05.778Z" }, { "$type": "Document", - "DocumentIndex": 237, - "Title": "DataBinding.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", + "DocumentIndex": 67, + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAUwC4AAAARAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-18T17:19:17.458Z" + "WhenOpened": "2024-09-29T23:25:00.158Z" }, { "$type": "Document", - "DocumentIndex": 115, - "Title": "StgSharpDebug", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-17T19:34:54.548Z" - }, - { - "$type": "Document", - "DocumentIndex": 15, - "Title": "ViewModelMain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\ViewModelMain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\ViewModelMain.cs", - "ViewState": "AgIAABkAAAAAAAAAAAAhwDAAAAA3AAAAAAAAAA==", + "DocumentIndex": 61, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAwwCAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-16T07:19:49.481Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 71, - "Title": "StgSharpDebug.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-16T07:19:00.583Z" - }, - { - "$type": "Document", - "DocumentIndex": 247, - "Title": "TimeFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\TimeFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\TimeFunction.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T20:04:24.579Z" - }, - { - "$type": "Document", - "DocumentIndex": 25, - "Title": "TriggerButton.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "ViewState": "AgIAALMAAAAAAAAAAIA0wL4AAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:54:09.954Z" - }, - { - "$type": "Document", - "DocumentIndex": 114, - "Title": "ButtonGroup.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "ViewState": "AgIAADAAAAAAAAAAAAAqwEEAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:53:42.786Z" - }, - { - "$type": "Document", - "DocumentIndex": 238, - "Title": "ShowViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:07:20.391Z" - }, - { - "$type": "Document", - "DocumentIndex": 239, - "Title": "ViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:55:25.494Z" - }, - { - "$type": "Document", - "DocumentIndex": 124, - "Title": "KeyControl.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyControl.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyControl.cs", - "ViewState": "AgIAABAAAAAAAAAAAAAqwCQAAAAbAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:23:56.059Z" - }, - { - "$type": "Document", - "DocumentIndex": 240, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewResponder.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:00:35.036Z" - }, - { - "$type": "Document", - "DocumentIndex": 241, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T17:27:33.542Z" - }, - { - "$type": "Document", - "DocumentIndex": 242, - "Title": "ViewDesigner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewDesigner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewDesigner.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T17:21:21.477Z" - }, - { - "$type": "Document", - "DocumentIndex": 126, - "Title": "View.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\View.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\View.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T15:23:07.924Z" - }, - { - "$type": "Document", - "DocumentIndex": 133, - "Title": "vec3d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\vec3d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", - "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\vec3d.cs", - "ViewState": "AgIAAF0AAAAAAAAAAAAmwEcAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-14T17:17:29.238Z" - }, - { - "$type": "Document", - "DocumentIndex": 44, - "Title": "GeometryOperation.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAvwDIAAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-13T17:37:00.956Z" - }, - { - "$type": "Document", - "DocumentIndex": 110, - "Title": "particle.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\particle.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA4AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-13T05:34:34.109Z" - }, - { - "$type": "Document", - "DocumentIndex": 102, - "Title": "particle.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\particle.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAAoAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-13T05:34:25.67Z" - }, - { - "$type": "Document", - "DocumentIndex": 93, - "Title": "fbo.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-12T17:46:54.077Z" - }, - { - "$type": "Document", - "DocumentIndex": 92, - "Title": "fbo.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-12T17:46:52.616Z" - }, - { - "$type": "Document", - "DocumentIndex": 85, - "Title": "glEnum.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "ViewState": "AgIAAFUAAAAAAAAAAAASwGcAAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T17:36:17.134Z" - }, - { - "$type": "Document", - "DocumentIndex": 11, - "Title": "RenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\RenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\RenderStream.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAWwF4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T16:50:10.581Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 81, - "Title": "VAO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAqwCcAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T10:04:44.545Z" - }, - { - "$type": "Document", - "DocumentIndex": 24, - "Title": "TextureGL.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAAFkAAAAAAAAAAAArwGMAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T18:46:51.043Z" - }, - { - "$type": "Document", - "DocumentIndex": 136, - "Title": "SR.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", - "ViewState": "AgIAABkAAAAAAAAAAADgvyIAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T18:09:43.749Z" - }, - { - "$type": "Document", - "DocumentIndex": 20, - "Title": "ImageHelper.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAABsAAAAAAAAAAAD4vywAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T13:33:11Z" - }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "Image.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Image.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Image.cs", - "ViewState": "AgIAADkAAAAAAAAAAIA7wE8AAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T13:30:30.357Z" - }, - { - "$type": "Document", - "DocumentIndex": 139, - "Title": "Task.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs", - "ViewState": "AgIAAD8JAAAAAAAAAAAjwEcJAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T03:46:13.673Z" - }, - { - "$type": "Document", - "DocumentIndex": 107, - "Title": "GlHandle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "ViewState": "AgIAACQAAAAAAAAAAAAYwDoAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:49:23.76Z" - }, - { - "$type": "Document", - "DocumentIndex": 243, - "Title": "ViewManage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:32:18.12Z" + "WhenOpened": "2024-09-29T23:24:54.534Z" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "ViewState": "AgIAAEYAAAAAAAAAAAASwFoAAAAjAAAAAAAAAA==", + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAgwDUAAAAIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:31:57.791Z", + "WhenOpened": "2024-09-29T23:24:12.242Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 75, - "Title": "glApiManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAABUAAAAAAAAAAIBQwLAAAACCAAAAAAAAAA==", + "DocumentIndex": 62, + "Title": "RandomGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\RandomGenerator.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\RandomGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\RandomGenerator.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\RandomGenerator.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAgwB8AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:26:52.544Z" + "WhenOpened": "2024-09-29T23:23:55.248Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 140, - "Title": "glApiManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAACoAAAAAAAAAAAAYwD8AAAAWAAAAAAAAAA==", + "DocumentIndex": 69, + "Title": "M256.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAAACYAAAASAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:24:34.903Z" + "WhenOpened": "2024-09-29T23:23:44.528Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 141, - "Title": "glApiManagerConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:24:33.785Z" - }, - { - "$type": "Document", - "DocumentIndex": 21, - "Title": "glFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAAOMBAAAAAAAAAIAzwPYBAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:05:53.065Z" - }, - { - "$type": "Document", - "DocumentIndex": 143, - "Title": "Camera.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Graphic\\Camera.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", - "RelativeToolTip": "StgSharp\\Math\\Graphic\\Camera.cs", - "ViewState": "AgIAAIUAAAAAAAAAAAA0wJEAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:59:14.403Z" - }, - { - "$type": "Document", - "DocumentIndex": 83, - "Title": "FBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:58:38.22Z" - }, - { - "$type": "Document", - "DocumentIndex": 84, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAYwC8AAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:58:29.9Z" - }, - { - "$type": "Document", - "DocumentIndex": 51, - "Title": "GlobalSuppressions.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", - "RelativeDocumentMoniker": "StgSharp\\GlobalSuppressions.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", - "RelativeToolTip": "StgSharp\\GlobalSuppressions.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:41:12.94Z" - }, - { - "$type": "Document", - "DocumentIndex": 108, - "Title": "BufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAADAAAAAAAAAAAIBgwE4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:23:55.021Z" - }, - { - "$type": "Document", - "DocumentIndex": 149, - "Title": "glConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\glConst.cs", - "ViewState": "AgIAAB0AAAAAAAAAAAAqwPQSAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:17:12.687Z" - }, - { - "$type": "Document", - "DocumentIndex": 148, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAIMAAAAAAAAAAAAowJIAAAAwAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:16:18.094Z" - }, - { - "$type": "Document", - "DocumentIndex": 150, - "Title": "VAO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ViewState": "AgIAADcAAAAAAAAAAAAUwEgAAAA1AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:15:13.91Z" - }, - { - "$type": "Document", - "DocumentIndex": 152, - "Title": "FBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAcwCYAAAAOAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:05:59.749Z" - }, - { - "$type": "Document", - "DocumentIndex": 156, - "Title": "InternalIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\InternalIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", - "RelativeToolTip": "StgSharp\\Controlling\\IO\\InternalIO.cs", - "ViewState": "AgIAAFkAAAAAAAAAAAA0wGoAAAALAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T15:48:23.725Z" - }, - { - "$type": "Document", - "DocumentIndex": 142, - "Title": "Pixels.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T04:12:48.395Z" - }, - { - "$type": "Document", - "DocumentIndex": 161, - "Title": "glException.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glException.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glException.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glException.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glException.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAYwDAAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-08T11:52:05.336Z" - }, - { - "$type": "Document", - "DocumentIndex": 130, - "Title": "StgSharp.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", - "RelativeDocumentMoniker": "StgSharp\\StgSharp.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", - "RelativeToolTip": "StgSharp\\StgSharp.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-08T10:39:35.673Z" - }, - { - "$type": "Document", - "DocumentIndex": 151, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-07T17:45:11.682Z" - }, - { - "$type": "Document", - "DocumentIndex": 138, - "Title": "GlHandle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "ViewState": "AgIAACYAAAAAAAAAAAAYwDMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T08:38:18.156Z" - }, - { - "$type": "Document", - "DocumentIndex": 153, - "Title": "BufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAYwCsAAAAqAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T06:22:32.666Z" - }, - { - "$type": "Document", - "DocumentIndex": 144, - "Title": "GLBufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T07:31:18.854Z" - }, - { - "$type": "Document", - "DocumentIndex": 154, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAswB4AAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T06:22:23.335Z" - }, - { - "$type": "Document", - "DocumentIndex": 235, - "Title": "MainRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Test\\MainRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Test\\MainRenderStream.cs", - "ViewState": "AgIAABsAAAAAAAAAAAA1wC4AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:36.555Z" - }, - { - "$type": "Document", - "DocumentIndex": 230, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:23.15Z" - }, - { - "$type": "Document", - "DocumentIndex": 244, - "Title": "ViewModel.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:20.456Z" - }, - { - "$type": "Document", - "DocumentIndex": 162, - "Title": "ShaderStruct.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ViewState": "AgIAABUAAAAAAAAAAAAYwCgAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:17.716Z" - }, - { - "$type": "Document", - "DocumentIndex": 231, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:15.821Z" - }, - { - "$type": "Document", - "DocumentIndex": 32, - "Title": "CollisionTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\CollisionTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", - "RelativeToolTip": "StgSharpDebug\\Stg\\CollisionTexture.cs", - "ViewState": "AgIAAA8AAAAAAAAAAAAvwCIAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:12.581Z" - }, - { - "$type": "Document", - "DocumentIndex": 106, - "Title": "Camera.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Graphic\\Camera.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", - "RelativeToolTip": "StgSharpDebug\\Math\\Graphic\\Camera.cs", - "ViewState": "AgIAADkAAAAAAAAAAAAcwEUAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:11.807Z" - }, - { - "$type": "Document", - "DocumentIndex": 232, - "Title": "Shader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:06.545Z" - }, - { - "$type": "Document", - "DocumentIndex": 233, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T23:58:09.408Z" - }, - { - "$type": "Document", - "DocumentIndex": 234, - "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T23:55:40.542Z" - }, - { - "$type": "Document", - "DocumentIndex": 146, - "Title": "Uniform.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ViewState": "AgIAAJEAAAAAAAAAAAAUwCsAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:58:58.669Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "IGraphicAPIs.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\IGraphicAPIs.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\IGraphicAPIs.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\IGraphicAPIs.cs", - "RelativeToolTip": "StgSharp\\Graphics\\IGraphicAPIs.cs", - "ViewState": "AgIAABIAAAAAAAAAAAAAAAgAAAA2AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:54:48.427Z", + "DocumentIndex": 13, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharpC\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c", + "RelativeToolTip": "StgSharpC\\intrinsic.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAwwBUAAAA3AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T22:48:24.45Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 14, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h", + "RelativeDocumentMoniker": "StgSharpC\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h", + "RelativeToolTip": "StgSharpC\\stb_image.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T22:37:09.182Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharpC\\ssc_intrinsic.h", + "ViewState": "AgIAAC0AAAAAAAAAAAAAAD8AAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T22:32:24.64Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 70, "Title": "Program.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\Program.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\Program.cs", - "ViewState": "AgIAAC4AAAAAAAAAAIA+wEAAAAAAAAAAAAAAAA==", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\BenchMark\\Program.cs", + "RelativeDocumentMoniker": "BenchMark\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\BenchMark\\Program.cs", + "RelativeToolTip": "BenchMark\\Program.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAACEAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-26T19:34:28.297Z", + "WhenOpened": "2024-09-29T22:26:10.769Z" + }, + { + "$type": "Document", + "DocumentIndex": 30, + "Title": "Matrix44.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAowMQAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:53:45.275Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 50, + "Title": "Matrix22.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAQwDUAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:50:22.312Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 72, + "Title": "GeometryOperation.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", + "ViewState": "AgIAAGcAAAAAAAAAAAAnwHYAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:47:44.641Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 38, + "Title": "Vec2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec2.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec2.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec2.cs", + "ViewState": "AgIAAEoAAAAAAAAAAABBwCkAAAAWAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:46:47.983Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 52, - "Title": "BpNodeBuilder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "ViewState": "AgIAAC8AAAAAAAAAAAAvwEIAAAAXAAAAAAAAAA==", + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAADcAAAAAAAAAAIA1wB8AAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-26T19:26:13.669Z" + "WhenOpened": "2024-09-29T21:45:17.737Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 65, - "Title": "IConvertableToBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAYwCMAAAAcAAAAAAAAAA==", + "DocumentIndex": 51, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAAAwAAAAAAAAAAAAQwC8AAAAmAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-25T23:11:19.554Z" + "WhenOpened": "2024-09-29T21:44:04.683Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 66, - "Title": "BpNodeActionAttribute.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "ViewState": "AgIAAAkAAAAAAAAAAAAAACIAAAAcAAAAAAAAAA==", + "DocumentIndex": 71, + "Title": "IVector.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\IVector.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\IVector.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\IVector.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\IVector.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAASwC4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-25T18:43:08.93Z" + "WhenOpened": "2024-09-29T21:40:46.434Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 163, - "Title": "glfw3.h", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", - "RelativeDocumentMoniker": "StgSharpC\\glfw3.h", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", - "RelativeToolTip": "StgSharpC\\glfw3.h", - "ViewState": "AgIAAAMRAAAAAAAAAAAqwBURAAAXAAAAAAAAAA==", + "DocumentIndex": 35, + "Title": "ColumnSet4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "ViewState": "AgIAAEkAAAAAAAAAAAAswCYAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:37:40.402Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "ColumnSet2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAcwDsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:37:34.496Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 36, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAAEQAAAAAAAAAAAAmwCUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:35:07.699Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "Bullet.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Bullet.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Bullet.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Bullet.cs", + "RelativeToolTip": "StgSharpDebug\\Stg\\Bullet.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAC0AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:33:00.53Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 74, + "Title": "NativeMethods.txt", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\NativeMethods.txt", + "RelativeDocumentMoniker": "StgSharpDebug\\NativeMethods.txt", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\NativeMethods.txt", + "RelativeToolTip": "StgSharpDebug\\NativeMethods.txt", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|", + "WhenOpened": "2024-09-29T21:32:56.873Z" + }, + { + "$type": "Document", + "DocumentIndex": 75, + "Title": "Control", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Control", + "RelativeDocumentMoniker": "StgSharpDebug\\Control", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Control", + "RelativeToolTip": "StgSharpDebug\\Control", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-09-29T21:32:55.128Z" + }, + { + "$type": "Document", + "DocumentIndex": 76, + "Title": "BlueprintActionNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAAACkAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T20:59:53.281Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c", + "RelativeDocumentMoniker": "StgSharpC\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c", + "RelativeToolTip": "StgSharpC\\mat3.c", + "ViewState": "AgIAAA4AAAAAAAAAAAAjwBMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:46:58.962Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c", + "RelativeDocumentMoniker": "StgSharpC\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c", + "RelativeToolTip": "StgSharpC\\mat2.c", + "ViewState": "AgIAAA0AAAAAAAAAAAAgwCgAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:46:52.29Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "stb_image.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c", + "RelativeDocumentMoniker": "StgSharpC\\stb_image.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c", + "RelativeToolTip": "StgSharpC\\stb_image.c", + "ViewState": "AgIAAJASAAAAAAAAAAAewLISAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:37:47.434Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "ssc_framework.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_framework.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h", + "RelativeToolTip": "StgSharpC\\ssc_framework.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", - "WhenOpened": "2024-06-22T23:24:18.461Z" + "WhenOpened": "2024-09-29T19:54:56.607Z" }, { "$type": "Document", - "DocumentIndex": 248, - "Title": "CrossFrameBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", + "DocumentIndex": 77, + "Title": "glfw3native.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h", + "RelativeDocumentMoniker": "StgSharpC\\glfw3native.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h \u2B24", + "RelativeToolTip": "StgSharpC\\glfw3native.h \u2B24", + "ViewState": "AgIAAE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T19:54:32.432Z" + }, + { + "$type": "Document", + "DocumentIndex": 78, + "Title": "gl.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h", + "RelativeDocumentMoniker": "StgSharpC\\gl.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h", + "RelativeToolTip": "StgSharpC\\gl.h", + "ViewState": "AgIAAIQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T19:53:16.298Z" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "dllmain.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c", + "RelativeDocumentMoniker": "StgSharpC\\dllmain.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c", + "RelativeToolTip": "StgSharpC\\dllmain.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T19:13:51.2Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "ssc_internal.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_internal.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h", + "RelativeToolTip": "StgSharpC\\ssc_internal.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T17:54:05.067Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c", + "RelativeDocumentMoniker": "StgSharpC\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c", + "RelativeToolTip": "StgSharpC\\mat4.c", + "ViewState": "AgIAABIAAAAAAAAAAAAAAAYAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T17:52:26.343Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 53, + "Title": "IRegisterType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAewCQAAAASAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-17T18:41:24.48Z" + "WhenOpened": "2024-09-29T08:33:34.009Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 62, - "Title": "PipeLine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "ViewState": "AgIAAGMAAAAAAAAAAAAowCgAAAAcAAAAAAAAAA==", + "DocumentIndex": 79, + "Title": "MatInterface.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAAABIAAAAHAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T23:18:28.288Z" + "WhenOpened": "2024-09-29T08:33:51.856Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 101, - "Title": "InternalData.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\InternalData.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\InternalData.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\InternalData.cs", - "RelativeToolTip": "StgSharp\\Data\\InternalData.cs", - "ViewState": "AgIAAAAAAAAAAAAAAIBQwBUAAAAMAAAAAAAAAA==", + "DocumentIndex": 12, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "ViewState": "AgIAADkAAAAAAAAAAAA1wEQAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:31:52.702Z" + "WhenOpened": "2024-09-28T20:11:22.78Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 70, - "Title": "GlobalSetting.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\GlobalSetting.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\GlobalSetting.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\GlobalSetting.cs", - "RelativeToolTip": "StgSharp\\Environment\\GlobalSetting.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAvwEkAAAA2AAAAAAAAAA==", + "DocumentIndex": 86, + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ViewState": "AgIAAFwAAAAAAAAAAAAtwGUAAAA7AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:52.772Z" + "WhenOpened": "2024-09-28T19:12:37.646Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 175, - "Title": "globalKeyStat.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\globalKeyStat.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\globalKeyStat.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\globalKeyStat.cs", - "RelativeToolTip": "StgSharp\\Environment\\globalKeyStat.cs", + "DocumentIndex": 89, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharp\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharp\\Stg\\CollisionTexture.cs", + "ViewState": "AgIAAJUAAAAAAAAAAIAywKUAAABCAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-28T18:14:14.323Z" + }, + { + "$type": "Document", + "DocumentIndex": 55, + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAA9wJcAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-28T18:13:40.533Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 96, + "Title": "MainThreadAssert.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeToolTip": "StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T19:46:51.552Z" + }, + { + "$type": "Document", + "DocumentIndex": 93, + "Title": "MainThreadAssert.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "ViewState": "AgIAAAMAAAAAAAAAAAAvwBEAAAAdAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T19:44:38.987Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 99, + "Title": "TextureBufferImage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureBufferImage.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureBufferImage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureBufferImage.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TextureBufferImage.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAnwDoAAAAaAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T18:44:51.978Z" + }, + { + "$type": "Document", + "DocumentIndex": 100, + "Title": "TextureBufferImage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAAwEsAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T11:13:19.671Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 92, + "Title": "ImageHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwDQAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T10:06:10.864Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 104, + "Title": "glApiDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glApiDefine.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glApiDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glApiDefine.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\glApiDefine.cs", + "ViewState": "AgIAACAAAAAAAAAAAAAewC8AAABRAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T04:53:08.572Z" + }, + { + "$type": "Document", + "DocumentIndex": 98, + "Title": "Image.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Image.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Image.cs", + "ViewState": "AgIAAGEAAAAAAAAAAIA3wHAAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T19:17:53.043Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 90, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharpDebug\\Stg\\CollisionTexture.cs", + "ViewState": "AgIAAJUAAAAAAAAAAIAywKYAAAArAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T19:10:11.893Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAUwEAAAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T11:11:30.893Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAAH4AAAAAAAAAAAAAAGUAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:59:33.901Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 94, + "Title": "EmptyThread.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "ViewState": "AgIAABMAAAAAAAAAAAAswBkAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:56:02.291Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "ViewState": "AgIAAEYAAAAAAAAAAAAxwFYAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:55:42.887Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 106, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", + "ViewState": "AgIAAGoAAAAAAAAAAAAjwHUAAACTAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:26:14.747Z" + }, + { + "$type": "Document", + "DocumentIndex": 107, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\framework.cs", + "ViewState": "AgIAAGoAAAAAAAAAAAAkwHUAAACVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:20:37.791Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 83, + "Title": "ViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewPort.cs", + "ViewState": "AgIAAD4AAAAAAAAAAAAlwEsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:17:33.106Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 109, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAswEYAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:41:04.007Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 110, + "Title": "glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AgIAAHoAAAAAAAAAAAAwwJsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:37:47.129Z" + }, + { + "$type": "Document", + "DocumentIndex": 112, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AgIAACcAAAAAAAAAAEBBwDgAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:20.928Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 97, + "Title": "Camera.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Graphic\\Camera.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Graphic\\Camera.cs", + "ViewState": "AgIAAOkAAAAAAAAAAIAywPkAAAAOAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:18.803Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 113, + "Title": "FBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ViewState": "AgIAAEYAAAAAAAAAAIAzwFcAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:16.817Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 87, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glConst.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glConst.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glConst.cs", + "ViewState": "AgIAACYAAAAAAAAAAAAewPgSAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:12.868Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 114, + "Title": "ShaderStruct.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ViewState": "AgIAADgAAAAAAAAAAIAzwEkAAABGAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:09.259Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 80, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAMMAAAAAAAAAAAAnwNYAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:33:36.487Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "glFucntionSourceManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAmwCIAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:33:08.722Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:52.177Z" + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-09-24T19:11:24.482Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 176, - "Title": "ErrorDefine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\ErrorDefine.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\ErrorDefine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\ErrorDefine.cs", - "RelativeToolTip": "StgSharp\\Environment\\ErrorDefine.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "DocumentIndex": 108, + "Title": "TimeSpanProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "ViewState": "AgIAAMQAAAAAAAAAAAAgwNQAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:51.103Z" + "WhenOpened": "2024-09-23T05:38:37.835Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 59, - "Title": "CancellableTask.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CancellableTask.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\CancellableTask.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CancellableTask.cs", - "RelativeToolTip": "StgSharp\\Logic\\CancellableTask.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAYwCQAAAAdAAAAAAAAAA==", + "DocumentIndex": 82, + "Title": "glException.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAvwC0AAAA0AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T19:05:18.993Z" + "WhenOpened": "2024-09-23T05:34:20.734Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 56, - "Title": "SizeFixedList.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "ViewState": "AgIAAAUAAAAAAAAAAAAIwEQAAAAAAAAAAAAAAA==", + "DocumentIndex": 116, + "Title": "TimeSpanAwaitingToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ViewState": "AgIAAGgAAAAAAAAAAIAywHYAAAAIAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-15T10:12:43.359Z" + "WhenOpened": "2024-09-22T09:24:10.041Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 54, - "Title": "BlueprintRunner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "ViewState": "AgIAAGQAAAAAAAAAAAAhwJEAAAAVAAAAAAAAAA==", + "DocumentIndex": 91, + "Title": "ViewModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "ViewState": "AgIAANwAAAAAAAAAAAAhwOkAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-15T09:28:36.087Z" + "WhenOpened": "2024-09-22T09:19:39.434Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 60, - "Title": "BlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "ViewState": "AgIAAGAAAAAAAAAAAAA1wLgAAAAtAAAAAAAAAA==", + "DocumentIndex": 6, + "Title": "ViewBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "ViewState": "AgIAAEMAAAAAAAAAAAAgwFIAAAA6AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-14T15:52:07.701Z" + "WhenOpened": "2024-09-22T09:18:52.076Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 64, - "Title": "SideNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\SideNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\SideNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAswCgAAAAcAAAAAAAAAA==", + "DocumentIndex": 95, + "Title": "glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AgIAAKEAAAAAAAAAAAAgwK4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-14T13:21:31.686Z" + "WhenOpened": "2024-09-12T12:26:52.516Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 165, + "DocumentIndex": 85, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ViewState": "AgIAADQAAAAAAAAAAAAewEMAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-12T12:26:38.522Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "ShowViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "ViewState": "AgIAAH0AAAAAAAAAAAAewIcAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T16:02:42.363Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 81, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAMgAAAAAAAAAAMBAwNgAAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:54:58.392Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 88, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "ViewState": "AgIAAFIAAAAAAAAAAAAzwFwAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:55:14.844Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "ViewModelMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAcwEsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:54:20.497Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 42, + "Title": "Program.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\Program.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\Program.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\Program.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAuwD8AAAAmAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:53:17.351Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 84, + "Title": "Partical.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "ViewState": "AgIAAM8AAAAAAAAAAAAgwOAAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:49:43.304Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 119, "Title": "Platform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", @@ -2874,31 +2086,285 @@ }, { "$type": "Document", - "DocumentIndex": 166, + "DocumentIndex": 123, "Title": "TimeProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\TimeProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", - "RelativeToolTip": "StgSharp\\Environment\\TimeProvider.cs", - "ViewState": "AgIAAG8AAAAAAAAAAAAWwHQAAAAJAAAAAAAAAA==", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeProvider.cs", + "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeProvider.cs", + "ViewState": "AgIAAHoAAAAAAAAAAAAQwIoAAAAjAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-12T18:36:15.947Z" + "WhenOpened": "2024-09-11T13:31:09.97Z" }, { "$type": "Document", - "DocumentIndex": 57, + "DocumentIndex": 117, + "Title": "TimeProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "ViewState": "AgIAAH4AAAAAAAAAAAD4v4oAAABAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T11:09:33.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "TimeSpanAwaitingToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAA0wHsAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-04T22:11:44.057Z" + }, + { + "$type": "Document", + "DocumentIndex": 126, + "Title": "TriggetFactory.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAxwC0AAAA8AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-02T20:15:59.962Z" + }, + { + "$type": "Document", + "DocumentIndex": 131, + "Title": "TexturePipeline.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TexturePipeline.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TexturePipeline.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAvwCgAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T03:29:30.925Z" + }, + { + "$type": "Document", + "DocumentIndex": 129, + "Title": "BidirectionalDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "RelativeToolTip": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "ViewState": "AgIAAEMAAAAAAAAAAIAzwFUAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T03:20:40.602Z" + }, + { + "$type": "Document", + "DocumentIndex": 140, + "Title": "BlueprintActionNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ViewState": "AgIAABgAAAAAAAAAAIBQwCYAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T02:58:10.928Z" + }, + { + "$type": "Document", + "DocumentIndex": 128, + "Title": "AutoTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAAiwH4AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-25T21:16:55.239Z" + }, + { + "$type": "Document", + "DocumentIndex": 125, + "Title": "ViewResponder.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewResponder.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewResponder.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAEwDUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:44:59.912Z" + }, + { + "$type": "Document", + "DocumentIndex": 124, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAABQAAAAAAAAAAAAgwCQAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:44:50.254Z" + }, + { + "$type": "Document", + "DocumentIndex": 142, + "Title": "ViewDesigner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewDesigner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewDesigner.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAIYAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:42:19.45Z" + }, + { + "$type": "Document", + "DocumentIndex": 146, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAowJIAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:16:18.094Z" + }, + { + "$type": "Document", + "DocumentIndex": 147, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AgIAADcAAAAAAAAAAAAUwEgAAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:15:13.91Z" + }, + { + "$type": "Document", + "DocumentIndex": 143, + "Title": "StgSharp.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeDocumentMoniker": "StgSharp\\StgSharp.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeToolTip": "StgSharp\\StgSharp.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-07-08T10:39:35.673Z" + }, + { + "$type": "Document", + "DocumentIndex": 148, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-07T17:45:11.682Z" + }, + { + "$type": "Document", + "DocumentIndex": 144, + "Title": "Uniform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ViewState": "AgIAAJEAAAAAAAAAAAAUwCsAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-27T17:58:58.669Z" + }, + { + "$type": "Document", + "DocumentIndex": 139, + "Title": "BpNodeActionAttribute.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "ViewState": "AgIAAAYAAAAAAAAAAIBQwCIAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-25T18:43:08.93Z" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "glfw3.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", + "RelativeDocumentMoniker": "StgSharpC\\glfw3.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", + "RelativeToolTip": "StgSharpC\\glfw3.h", + "ViewState": "AgIAABUAAAAAAAAAAAAAAFELAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-06-22T23:24:18.461Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 133, + "Title": "SizeFixedList.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "RelativeToolTip": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "ViewState": "AgIAAAUAAAAAAAAAAAAIwEQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-15T10:12:43.359Z" + }, + { + "$type": "Document", + "DocumentIndex": 132, + "Title": "BlueprintRunner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "ViewState": "AgIAAGQAAAAAAAAAAAAhwJEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-15T09:28:36.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 135, + "Title": "BlueprintNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "ViewState": "AgIAAGAAAAAAAAAAAAA1wLgAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-14T15:52:07.701Z" + }, + { + "$type": "Document", + "DocumentIndex": 138, + "Title": "SideNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\SideNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\SideNode.cs", + "ViewState": "AgIAAAsAAAAAAAAAAAAswCgAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-14T13:21:31.686Z" + }, + { + "$type": "Document", + "DocumentIndex": 121, "Title": "TimeSpanProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", - "ViewState": "AgIAAA8AAAAAAAAAAADwvyQAAAAZAAAAAAAAAA==", + "ViewState": "AgIAALsAAAAAAAAAAAAAAMIAAAAQAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-12T18:36:02.299Z" }, { "$type": "Document", - "DocumentIndex": 63, + "DocumentIndex": 137, "Title": "RouteSwitch.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", @@ -2910,7 +2376,7 @@ }, { "$type": "Document", - "DocumentIndex": 168, + "DocumentIndex": 153, "Title": "Area.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\Area.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\Area.cs", @@ -2922,7 +2388,7 @@ }, { "$type": "Document", - "DocumentIndex": 172, + "DocumentIndex": 155, "Title": "SSD.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSD.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSD.cs", @@ -2934,7 +2400,7 @@ }, { "$type": "Document", - "DocumentIndex": 171, + "DocumentIndex": 154, "Title": "SSDVirtualFolder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", @@ -2946,19 +2412,7 @@ }, { "$type": "Document", - "DocumentIndex": 19, - "Title": "Image.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", - "ViewState": "AgIAADAAAAAAAAAAAAAWwEIAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-09T13:44:55.317Z" - }, - { - "$type": "Document", - "DocumentIndex": 188, + "DocumentIndex": 159, "Title": "TouhouBuilder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", @@ -2970,7 +2424,7 @@ }, { "$type": "Document", - "DocumentIndex": 100, + "DocumentIndex": 141, "Title": "TouhouWindow.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouWindow.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouWindow.cs", @@ -2982,7 +2436,7 @@ }, { "$type": "Document", - "DocumentIndex": 189, + "DocumentIndex": 160, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\Program.cs", "RelativeDocumentMoniker": "StgsharpEnvDebug\\Program.cs", @@ -2994,7 +2448,7 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 127, "Title": "ViewManage.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewManage.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewManage.cs", @@ -3002,63 +2456,47 @@ "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewManage.cs", "ViewState": "AgIAACcAAAAAAAAAAAAuwDgAAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T08:10:50.451Z", - "EditorCaption": "" + "WhenOpened": "2024-06-06T08:10:50.451Z" }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 120, "Title": "ShowViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", - "ViewState": "AgIAAEIAAAAAAAAAAAD4v08AAAAeAAAAAAAAAA==", + "ViewState": "AgIAAE0AAAAAAAAAAAAwwFsAAAAlAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T07:49:36.575Z", - "EditorCaption": "" + "WhenOpened": "2024-06-06T07:49:36.575Z" }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 105, "Title": "ViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", - "ViewState": "AgIAAHQAAAAAAAAAAIAwwIcAAAAfAAAAAAAAAA==", + "ViewState": "AgIAAHwAAAAAAAAAAAApwIkAAAA5AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T06:43:01.237Z", - "EditorCaption": "" + "WhenOpened": "2024-06-06T06:43:01.237Z" }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 102, "Title": "ViewModel.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAAF4AAAAAAAAAAAAiwGsAAAAVAAAAAAAAAA==", + "ViewState": "AgIAAEAAAAAAAAAAAAAnwE8AAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-05T19:19:57.97Z", - "EditorCaption": "" + "WhenOpened": "2024-06-05T19:19:57.97Z" }, { "$type": "Document", - "DocumentIndex": 195, - "Title": "Cordinate.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-04T09:20:55.089Z" - }, - { - "$type": "Document", - "DocumentIndex": 196, + "DocumentIndex": 163, "Title": "Square.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Square.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Square.cs", @@ -3070,7 +2508,7 @@ }, { "$type": "Document", - "DocumentIndex": 193, + "DocumentIndex": 162, "Title": "Rectangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", @@ -3082,7 +2520,7 @@ }, { "$type": "Document", - "DocumentIndex": 157, + "DocumentIndex": 149, "Title": "Triangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", @@ -3094,19 +2532,7 @@ }, { "$type": "Document", - "DocumentIndex": 194, - "Title": "Parallelogram.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAtwD8AAAAGAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T18:45:48.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 160, + "DocumentIndex": 152, "Title": "Polygon5.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", @@ -3118,7 +2544,7 @@ }, { "$type": "Document", - "DocumentIndex": 158, + "DocumentIndex": 150, "Title": "Polygon6.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", @@ -3130,31 +2556,19 @@ }, { "$type": "Document", - "DocumentIndex": 200, - "Title": "Class1.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "RelativeToolTip": "StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T08:05:08.74Z" - }, - { - "$type": "Document", - "DocumentIndex": 199, + "DocumentIndex": 165, "Title": "SpaceCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", - "ViewState": "AgIAAA8AAAAAAAAAAIBgwCoAAAAxAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAMBowCoAAAAxAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T08:04:00.326Z" }, { "$type": "Document", - "DocumentIndex": 159, + "DocumentIndex": 151, "Title": "Polygon4.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", @@ -3166,19 +2580,7 @@ }, { "$type": "Document", - "DocumentIndex": 204, - "Title": "Cordination.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Cordination.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Cordination.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Cordination.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\Cordination.cs", - "ViewState": "AgIAAAYAAAAAAAAAAIBgwB8AAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T07:16:53.497Z" - }, - { - "$type": "Document", - "DocumentIndex": 198, + "DocumentIndex": 164, "Title": "Point.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Point.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Point.cs", @@ -3190,91 +2592,19 @@ }, { "$type": "Document", - "DocumentIndex": 205, + "DocumentIndex": 166, "Title": "Vector.Cross.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Cross.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Cross.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Cross.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Cross.cs", - "ViewState": "AgIAABIAAAAAAAAAAIBgwB8AAAABAAAAAAAAAA==", + "ViewState": "AgIAAA8AAAAAAAAAAMBowB8AAAABAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-02T18:55:17.351Z" }, { "$type": "Document", - "DocumentIndex": 191, - "Title": "IGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IGeometry.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IGeometry.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IGeometry.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAiwDMAAAAeAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T18:32:52.786Z" - }, - { - "$type": "Document", - "DocumentIndex": 211, - "Title": "JoystickTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACsAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:59:29.232Z" - }, - { - "$type": "Document", - "DocumentIndex": 212, - "Title": "ITrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:56:15.991Z" - }, - { - "$type": "Document", - "DocumentIndex": 177, - "Title": "KeyTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:48:14.248Z" - }, - { - "$type": "Document", - "DocumentIndex": 42, - "Title": "MarkingLable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAvwDAAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-01T19:38:52.786Z" - }, - { - "$type": "Document", - "DocumentIndex": 180, - "Title": "DecorationBox.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAqAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-01T19:38:36.894Z" - }, - { - "$type": "Document", - "DocumentIndex": 182, + "DocumentIndex": 158, "Title": "BattleField.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\BattleField.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\BattleField.cs", @@ -3286,78 +2616,7 @@ }, { "$type": "Document", - "DocumentIndex": 224, - "Title": "KeyEvent.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEvent.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyEvent.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-31T17:44:19.826Z" - }, - { - "$type": "Document", - "DocumentIndex": 181, - "Title": "CharacterIndexImage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "ViewState": "AgIAAB8AAAAAAAAAAADgvzMAAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-31T07:27:57.971Z" - }, - { - "$type": "Document", - "DocumentIndex": 187, - "Title": "KeyControl.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyControl.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyControl.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyControl.cs", - "RelativeToolTip": "StgSharp\\Controlling\\KeyControl.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAtwHIAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-30T03:47:10.188Z" - }, - { - "$type": "Document", - "DocumentIndex": 131, - "Title": "ButtonGroup.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "ViewState": "AgIAAHwAAAAAAAAAAAAqwJAAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-30T03:07:38.817Z" - }, - { - "$type": "Document", - "DocumentIndex": 178, - "Title": "PlainGeometryMesh.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\PlainGeometryMesh.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\PlainGeometryMesh.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\PlainGeometryMesh.cs", - "RelativeToolTip": "StgSharp\\Graphics\\PlainGeometryMesh.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACoAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:54:22.53Z" - }, - { - "$type": "Document", - "DocumentIndex": 183, - "Title": "ControllingIntem.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBgAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:52:06.895Z" - }, - { - "$type": "Document", - "DocumentIndex": 179, + "DocumentIndex": 157, "Title": "TriggerButton.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\TriggerButton.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\TriggerButton.cs", @@ -3369,54 +2628,7 @@ }, { "$type": "Document", - "DocumentIndex": 225, - "Title": "KeyboardButton.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:45:36.72Z" - }, - { - "$type": "Document", - "DocumentIndex": 208, - "Title": "Plain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "ViewState": "AgIAADwAAAAAAAAAAAAUwEsAAAAfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:14:59.807Z" - }, - { - "$type": "Document", - "DocumentIndex": 209, - "Title": "IEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", - "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", - "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAywDkAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:13:32.629Z" - }, - { - "$type": "Document", - "DocumentIndex": 167, - "Title": "DataSegment.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataSegment.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", - "RelativeToolTip": "StgSharp\\Data\\SSD\\DataSegment.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAC4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:13:13.688Z" - }, - { - "$type": "Document", - "DocumentIndex": 173, + "DocumentIndex": 156, "Title": "SSDraw.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDraw.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDraw.cs", @@ -3428,42 +2640,19 @@ }, { "$type": "Document", - "DocumentIndex": 222, - "Title": "Angle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T02:36:43.754Z" - }, - { - "$type": "Document", - "DocumentIndex": 164, - "Title": "framework.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", - "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", - "ViewState": "AgIAAB4BAAAAAAAAAAAYwC8AAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:14:37.475Z" - }, - { - "$type": "Document", - "DocumentIndex": 45, + "DocumentIndex": 130, "Title": "TimeFunction.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeFunction.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeFunction.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeFunction.cs", "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeFunction.cs", - "ViewState": "AgIAAAkAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAYAAAAAAAAAAIBQwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T12:14:28.529Z" }, { "$type": "Document", - "DocumentIndex": 58, + "DocumentIndex": 134, "Title": "TimeSourceProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSourceProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSourceProvider.cs", @@ -3475,7 +2664,7 @@ }, { "$type": "Document", - "DocumentIndex": 206, + "DocumentIndex": 167, "Title": "Vector.Normalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Normalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Normalize.cs", @@ -3487,55 +2676,19 @@ }, { "$type": "Document", - "DocumentIndex": 184, - "Title": "ParticleOnPlain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "ViewState": "AgIAADkAAAAAAAAAAAAwwCoAAAApAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:13:03.322Z" - }, - { - "$type": "Document", - "DocumentIndex": 214, - "Title": "IInstancingBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancingBuffer.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancingBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancingBuffer.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IInstancingBuffer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:12:51.691Z" - }, - { - "$type": "Document", - "DocumentIndex": 185, - "Title": "IInstancing.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancing.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancing.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancing.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IInstancing.cs", - "ViewState": "AgIAACkAAAAAAAAAAAAtwDYAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:12:47.113Z" - }, - { - "$type": "Document", - "DocumentIndex": 145, + "DocumentIndex": 111, "Title": "ShaderStruct.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeToolTip": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ViewState": "AgIAAAMAAAAAAAAAAIBgwCsAAAApAAAAAAAAAA==", + "ViewState": "AgIAADkAAAAAAAAAAAApwEkAAAA/AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T12:06:38.571Z" }, { "$type": "Document", - "DocumentIndex": 215, + "DocumentIndex": 169, "Title": "ShaderGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", @@ -3547,139 +2700,56 @@ }, { "$type": "Document", - "DocumentIndex": 216, - "Title": "GLIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\GLIO.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\GLIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\GLIO.cs", - "RelativeToolTip": "StgSharp\\Controlling\\IO\\GLIO.cs", - "ViewState": "AgIAAEUAAAAAAAAAAAAcwCoAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:53:35.017Z" - }, - { - "$type": "Document", - "DocumentIndex": 73, + "DocumentIndex": 65, "Title": "TextureGL.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAACoAAAAAAAAAAIBQwDsAAAAAAAAAAAAAAA==", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:52:02.572Z" }, { "$type": "Document", - "DocumentIndex": 135, - "Title": "glEnum.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glEnum.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\glEnum.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwD0AAABLAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:51:55.169Z" - }, - { - "$type": "Document", - "DocumentIndex": 217, + "DocumentIndex": 170, "Title": "Angle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "RelativeToolTip": "StgSharp\\Geometries\\GeometryScaler\\Angle.cs", - "ViewState": "AgIAAHEAAAAAAAAAAEBAwH8AAAAJAAAAAAAAAA==", + "ViewState": "AgIAAHIAAAAAAAAAAAAlwH8AAAAJAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:50:33.189Z" }, { "$type": "Document", - "DocumentIndex": 74, - "Title": "CollisionTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", - "RelativeDocumentMoniker": "StgSharp\\Stg\\CollisionTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", - "RelativeToolTip": "StgSharp\\Stg\\CollisionTexture.cs", - "ViewState": "AgIAAIkAAAAAAAAAAAAhwKkAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:47:06.034Z" - }, - { - "$type": "Document", - "DocumentIndex": 169, - "Title": "ISSDSerializable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "RelativeToolTip": "StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:11:24.157Z" - }, - { - "$type": "Document", - "DocumentIndex": 170, - "Title": "Define.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\Define.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\Define.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\Define.cs", - "RelativeToolTip": "StgSharp\\Data\\Serialize\\Define.cs", - "ViewState": "AgIAAA8AAAAAAAAAAMBowAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:11:21.58Z" - }, - { - "$type": "Document", - "DocumentIndex": 218, - "Title": "M128.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\M128.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\M128.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\M128.cs", - "RelativeToolTip": "StgSharp\\Data\\M128.cs", - "ViewState": "AgIAACcAAAAAAAAAAIBgwD0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:06:36.634Z" - }, - { - "$type": "Document", - "DocumentIndex": 174, + "DocumentIndex": 68, "Title": "RandomGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\RandomGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\RandomGenerator.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\RandomGenerator.cs", "RelativeToolTip": "StgSharp\\Data\\RandomGenerator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAMAAAAAAAAAA==", + "ViewState": "AgIAAKAAAAAAAAAAAAAUwK4AAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-14T01:44:33.9Z" }, { "$type": "Document", - "DocumentIndex": 213, + "DocumentIndex": 17, "Title": "StgSharpC.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.h", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeToolTip": "StgSharpC\\StgSharpC.h", - "ViewState": "AgIAABgAAAAAAAAAAIAwwCgAAAAoAAAAAAAAAA==", + "ViewState": "AgIAAA8AAAAAAAAAAAAAABYAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", - "WhenOpened": "2024-05-11T21:42:41.09Z" + "WhenOpened": "2024-05-11T21:42:41.09Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 134, - "Title": "glFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAAPsAAAAAAAAAAABCwA4BAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T21:22:23.016Z" - }, - { - "$type": "Document", - "DocumentIndex": 147, + "DocumentIndex": 145, "Title": "Shader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", @@ -3691,117 +2761,43 @@ }, { "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 136, "Title": "Blueprint.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\Blueprint.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\Blueprint.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\Blueprint.cs", "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\Blueprint.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAYwDQAAAAeAAAAAAAAAA==", + "ViewState": "AgIAADQAAAAAAAAAAAA1wDQAAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-11T15:59:06.55Z" }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 103, "Title": "ViewBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewBase.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewBase.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewBase.cs", "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewBase.cs", - "ViewState": "AgIAALAAAAAAAAAAAAAWwMMAAAApAAAAAAAAAA==", + "ViewState": "AgIAAFoAAAAAAAAAAEBBwGgAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T05:11:47.098Z", - "EditorCaption": "" + "WhenOpened": "2024-05-11T05:11:47.098Z" }, { "$type": "Document", - "DocumentIndex": 219, - "Title": "GeometryOperation.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "ViewState": "AgIAABUAAAAAAAAAAIA0wCUAAAAfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-10T04:35:10.414Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, - "Title": "GeometryOperation.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeToolTip": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAhwD8AAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-10T04:34:22.843Z" - }, - { - "$type": "Document", - "DocumentIndex": 192, - "Title": "PlainGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAtwDoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T11:36:04.039Z" - }, - { - "$type": "Document", - "DocumentIndex": 186, - "Title": "IPlainEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T11:36:00.584Z" - }, - { - "$type": "Document", - "DocumentIndex": 155, - "Title": "glResourceGenrator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACcAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:44:36.325Z" - }, - { - "$type": "Document", - "DocumentIndex": 48, - "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwCQAAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:42:14.767Z" - }, - { - "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 101, "Title": "RenderStream.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", - "ViewState": "AgIAAJIAAAAAAAAAAAAvwKkAAAAJAAAAAAAAAA==", + "ViewState": "AgIAADcAAAAAAAAAAIAzwEcAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:42:08.831Z", - "EditorCaption": "" + "WhenOpened": "2024-05-09T09:42:08.831Z" }, { "$type": "Document", - "DocumentIndex": 210, + "DocumentIndex": 168, "Title": "StreamLocalCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", @@ -3813,125 +2809,32 @@ }, { "$type": "Document", - "DocumentIndex": 221, - "Title": "vec3d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec3d.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec3d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec3d.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\vec3d.cs", - "ViewState": "AgIAACwAAAAAAAAAAAAjwD4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:42:19.181Z" - }, - { - "$type": "Document", - "DocumentIndex": 203, - "Title": "vec4d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec4d.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec4d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec4d.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\vec4d.cs", - "ViewState": "AgIAAEcAAAAAAAAAAAAAwFcAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:40:47.919Z" - }, - { - "$type": "Document", - "DocumentIndex": 207, + "DocumentIndex": 59, "Title": "Vector.Orthogonalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", - "ViewState": "AgIAACcAAAAAAAAAAAAtwDEAAAArAAAAAAAAAA==", + "ViewState": "AgIAABkAAAAAAAAAAAAiwB4AAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-09T03:35:41.246Z" }, { "$type": "Document", - "DocumentIndex": 201, - "Title": "CoordinationBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwAsAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:32:12.398Z" - }, - { - "$type": "Document", - "DocumentIndex": 197, - "Title": "PlainCoordinate.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "ViewState": "AgIAACMAAAAAAAAAAAAiwD8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:29:20.299Z" - }, - { - "$type": "Document", - "DocumentIndex": 202, - "Title": "PlainInstancingBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "ViewState": "AgIAAB4AAAAAAAAAAIBgwFYAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:28:11.182Z" - }, - { - "$type": "Document", - "DocumentIndex": 220, - "Title": "Bullet.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Bullet.cs", - "RelativeDocumentMoniker": "StgSharp\\Stg\\Bullet.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Bullet.cs", - "RelativeToolTip": "StgSharp\\Stg\\Bullet.cs", - "ViewState": "AgIAAFkAAAAAAAAAAIA1wDUAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:22:55.279Z" - }, - { - "$type": "Document", - "DocumentIndex": 223, - "Title": "IInstancing.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-08T17:39:31.95Z" - }, - { - "$type": "Document", - "DocumentIndex": 137, + "DocumentIndex": 23, "Title": "StgSharpC.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.c", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeToolTip": "StgSharpC\\StgSharpC.c", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA3AAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAaAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", - "WhenOpened": "2024-05-04T08:32:40.265Z" + "WhenOpened": "2024-05-04T08:32:40.265Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 227, - "Title": "ShowForm.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-01T20:46:20.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 190, + "DocumentIndex": 161, "Title": "MainForm.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\OEM\\MainForm.cs", "RelativeDocumentMoniker": "OEM\\MainForm.cs", @@ -3940,39 +2843,6 @@ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-26T21:06:53.667Z" - }, - { - "$type": "Document", - "DocumentIndex": 228, - "Title": "FormThreading.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-25T19:29:47.069Z" - }, - { - "$type": "Document", - "DocumentIndex": 226, - "Title": "ICoord.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-25T01:07:46.041Z" - }, - { - "$type": "Document", - "DocumentIndex": 229, - "Title": "Form.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\Form.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\Form.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-23T09:01:45.978Z" } ] } diff --git a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json index 86306331..b390dcab 100644 --- a/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json +++ b/源代码/.vs/StgSharpDevelop/v17/DocumentLayout.json @@ -3,128 +3,515 @@ "WorkspaceRootPath": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\intrinsiccontext.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\lable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat3.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\quick_hash.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\view\\newrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_intrinsic.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\intrinsic.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\stb_image.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|C:\\PROGRAM FILES\\MICROSOFT VISUAL STUDIO\\2022\\ENTERPRISE\\VC\\TOOLS\\MSVC\\14.41.34120\\INCLUDE\\TMMINTRIN.H||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_internal.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat2.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\dllmain.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\vector.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\mat4.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\stb_image.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\ssc_framework.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix33.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix44.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix24.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix24.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix34.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix34.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\intrinsiccontextprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix32.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\columnset3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix43.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix23.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\intrinsic\\columnset2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\matrix42.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matrix22.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\iregistertype.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec4.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\shaderedit\\shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datahead.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\openglcontrollingitemrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\openglcontrollingitemrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\scalar\\random.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\design.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\intrinsic\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\intrinsic\\m256.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{63382F83-D04E-45B6-BDE6-443273F6D010}|BenchMark\\BenchMark.csproj|solutionrelative:benchmark\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\igraphicapis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\ivector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\ivector.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\nativemethods.txt||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\nativemethods.txt||{8B382828-6202-11D1-8870-0000F87579D2}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\control||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\control||{8B382828-6202-11D1-8870-0000F87579D2}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3native.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\gl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\iimageprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\iimageprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\matinterface.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\renderstream\\partical.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\view\\viewmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\cpuanimation\\imagehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\threading\\emptythread.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\threading\\emptythread.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\threading\\mainthreadassert.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\image.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\texturebufferimage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\renderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glapidefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glapidefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfucntionsourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfucntionsourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\alphademo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\alphademo\\viewmodelmain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanawaitingtoken.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\triggetfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\triggetfactory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\autotexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", @@ -134,101 +521,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\bidirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\bidirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewrender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\markinglable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timefunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryoperation\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glrenderstream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\ibidrirectionaldictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\globalsuppressions.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\bpnodebuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\texturepipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -237,26 +533,14 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintrunner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\counter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\collections\\sizefixedlist.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timespanprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\timing\\timesourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\timing\\timesourceprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\cancellabletask.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -265,10 +549,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprint.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\pipeline.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\routeswitch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\routeswitch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -277,10 +557,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\sidenode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\iconvertabletoblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\iconvertabletoblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\bpnodeactionattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\bpnodeactionattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -289,298 +565,18 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\logic\\blueprint\\blueprintactionnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\globalsetting.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\texturegl.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\collisiontexture.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glresourcemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glapicalling.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\controlitemrender.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\controlitemrender.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\controlitemrender.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\controlitemrender.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\fbo.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\main.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\main.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\igeomtrybuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\igeomtrybuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stg\\touhou\\view\\openningview.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stg\\touhou\\view\\openningview.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\touhou\\touhouwindow.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\internaldata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.vert||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\define\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\define\\structdefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\shader\\particle.frag||{8B382828-6202-11D1-8870-0000F87579D2}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\showviewport.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\demo\\view\\control.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\stgsharpdebug.csproj||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\viewmanage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\textureprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\mvvm\\viewmodel\\databinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\View.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewdesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\mvvm\\view\\viewresponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stgsharp.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\buttongroup.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\controlling\\keyeventattribute.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glfunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.c||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glhandle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glapimanagerconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\pixels.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\graphic\\camera.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\glbufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\shaderedit\\uniform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -593,10 +589,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\glconst.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\vao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -605,26 +597,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\rbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\fbo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\define\\bufferobjectbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\buffer\\ebo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glresourcegenrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\internalio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\triangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -641,46 +613,10 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\polygon5.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\opengl\\glexception.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\graphics\\shaderedit\\shaderstruct.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\glfw3.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\framework.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\platform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\timeprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\datasegment.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\area.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\area.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\serialize\\issdserializable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\serialize\\issdserializable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\serialize\\define.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\serialize\\define.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\ssdvirtualfolder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\ssdvirtualfolder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -693,62 +629,14 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\ssd\\ssdraw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\ssd\\ssdraw.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\randomgenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\globalkeystat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\globalkeystat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\environment\\errordefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\environment\\errordefine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\keytrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\plaingeometrymesh.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\triggerbutton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\decorationbox.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\characterindeximage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\battlefield.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\controls\\controllingintem.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\particleonplain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\iinstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\iinstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\iplainentity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\keycontrol.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\touhou\\touhoubuilder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -761,34 +649,14 @@ "AbsoluteMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{183AA95A-FEBD-42A5-A205-AB7048678251}|OEM\\OEM.csproj|solutionrelative:oem\\mainform.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\igeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\plaingeometry.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\rectangle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\parallelogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\parallelogram.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\cordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\cordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\square.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\plaincoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\point.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -797,26 +665,6 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\spacecoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\spacegeometry\\class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\spacegeometry\\class1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\coordinationbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\coordinationbase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\plaininstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\plaininstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec4d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\cordination.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\cordination.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.cross.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.cross.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -825,183 +673,30 @@ "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.normalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vector.orthogonalize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\plain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\plain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\entities\\ientity.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\coordination\\streamlocalcoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\coordination\\streamlocalcoordinate.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\joysticktrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\joysticktrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\usractivity\\itrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\usractivity\\itrigger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{20CBFF26-6746-402E-992C-7B643E9423EB}|StgSharpC\\StgSharpC.vcxproj|solutionrelative:StgSharpC\\StgSharpC.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\iinstancingbuffer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\graphics\\shaderedit\\shadergenerator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\controlling\\io\\glio.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\geometryscaler\\angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\data\\m128.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\geometries\\plaingeometry\\define\\geometryoperation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\stg\\bullet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharp\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}|StgSharp\\StgSharp.csproj|solutionrelative:stgsharp\\math\\linear\\vec3d.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\KeyEvent.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Geometries\\Coordination\\ICoord.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\ShowForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\FormThreading.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\Form\\Form.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\GL\\glRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Test\\MainRenderStream.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Demo\\View\\Render.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\ViewPort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\ViewResponder.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Graphics\\View\\ViewRender.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Controlling\\ViewDesigner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\MultiKeyDictionary.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:StgSharpDebug\\Logic\\TimeFunction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|d:\\nitloadindustry\\\u7814\u7A76\u9879\u76EE\\1-flagship\\th2020\\projectfile\\\u6E90\u4EE3\u7801\\stgsharpdebug\\logic\\blueprint\\crossframeblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{610B992B-BB34-49C3-9993-676C595FC12E}|StgSharpDebug\\StgSharpDebug.csproj|solutionrelative:stgsharpdebug\\logic\\blueprint\\crossframeblueprintnode.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" } ], "DocumentGroupContainers": [ { "Orientation": 0, - "VerticalTabListWidth": 214, + "VerticalTabListWidth": 188, "DocumentGroups": [ { "DockedWidth": 197, - "SelectedChildIndex": 22, + "SelectedChildIndex": 35, "Children": [ { "$type": "Bookmark", @@ -1009,1866 +704,1377 @@ }, { "$type": "Document", - "DocumentIndex": 6, - "Title": "Shader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", - "ViewState": "AgIAAJYAAAAAAAAAAAAvwKwAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-09-01T21:53:56.155Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 25, - "Title": "ImageHelper.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeToolTip": "StgSharp\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAABsAAAAAAAAAAAD4vy8AAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-28T02:49:25.315Z" - }, - { - "$type": "Document", - "DocumentIndex": 33, - "Title": "Dictionary.cs", - "DocumentMoniker": "C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs", - "ToolTip": "C:\\Users\\Youmu\\AppData\\Local\\SourceServer\\60546032f23b31a03685e30ef880f5c48e6df2d00a71d09e625da4e2a208bd88\\Dictionary.cs", - "ViewState": "AgIAAFkBAAAAAAAAAIA0wGQBAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T21:35:54.107Z" - }, - { - "$type": "Document", - "DocumentIndex": 38, - "Title": "SideNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\SideNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:05:45.53Z" - }, - { - "$type": "Document", - "DocumentIndex": 40, - "Title": "BlueprintActionNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:09.577Z" - }, - { - "$type": "Document", - "DocumentIndex": 41, - "Title": "Blueprint.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\Blueprint.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAvwB8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:06.765Z" - }, - { - "$type": "Document", - "DocumentIndex": 42, - "Title": "TimeSpanProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", - "ViewState": "AgIAACYAAAAAAAAAAAAvwB4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:04:00.578Z" - }, - { - "$type": "Document", - "DocumentIndex": 47, - "Title": "TimeFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeFunction.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAvwC4AAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T18:02:49.325Z" - }, - { - "$type": "Document", - "DocumentIndex": 51, - "Title": "BlueprintRunner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintRunner.cs", - "ViewState": "AgIAAFwAAAAAAAAAAIA0wCgAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T17:53:00.315Z" - }, - { - "$type": "Document", - "DocumentIndex": 53, - "Title": "SizeFixedList.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Collections\\SizeFixedList.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAvwH0AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-27T17:51:39.457Z" - }, - { - "$type": "Document", - "DocumentIndex": 54, - "Title": "IBidrirectionalDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\IBidrirectionalDictionary.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAC8AAAA/AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T23:33:42.221Z" - }, - { - "$type": "Document", - "DocumentIndex": 57, - "Title": "TexturePipeline.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\TexturePipeline.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", - "RelativeToolTip": "StgSharp\\Graphics\\TexturePipeline.cs", - "ViewState": "AgIAABUAAAAAAAAAAAAvwCgAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:29:30.925Z" - }, - { - "$type": "Document", - "DocumentIndex": 59, - "Title": "Counter.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Counter.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Counter.cs", - "RelativeToolTip": "StgSharp\\Logic\\Counter.cs", - "ViewState": "AgIAACQAAAAAAAAAAAAAACYAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:27:55.46Z" - }, - { - "$type": "Document", - "DocumentIndex": 32, - "Title": "BidirectionalDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", - "ViewState": "AgIAAEMAAAAAAAAAAIAzwFUAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T03:20:40.602Z" - }, - { - "$type": "Document", - "DocumentIndex": 71, - "Title": "BlueprintActionNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAAACYAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T02:58:10.928Z" - }, - { - "$type": "Document", - "DocumentIndex": 24, - "Title": "IImageProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\IImageProvider.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAAACYAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-26T00:21:20.169Z" - }, - { - "$type": "Document", - "DocumentIndex": 72, - "Title": "M128.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\M128.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Data\\M128.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\M128.cs", - "RelativeToolTip": "StgSharpDebug\\Data\\M128.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAowC4AAAAbAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T23:57:32.075Z" - }, - { - "$type": "Document", - "DocumentIndex": 245, - "Title": "CrossFrameBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\CrossFrameBlueprintNode.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T22:04:59.351Z" - }, - { - "$type": "Document", - "DocumentIndex": 73, - "Title": "GlobalSetting.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\GlobalSetting.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Environment\\GlobalSetting.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\GlobalSetting.cs", - "RelativeToolTip": "StgSharpDebug\\Environment\\GlobalSetting.cs", - "ViewState": "AgIAADUAAAAAAAAAAAAvwEgAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T22:04:46.699Z" - }, - { - "$type": "Document", - "DocumentIndex": 31, - "Title": "AutoTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ViewState": "AgIAAGwAAAAAAAAAAAAiwH4AAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T21:16:55.239Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 76, - "Title": "glResourceManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glResourceManager.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAEMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T21:16:48.829Z" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "GLBufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAvwDIAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-25T20:33:11.097Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 83, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAH8AAAAAAAAAAAAUwCoAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T21:48:41.305Z" - }, - { - "$type": "Document", - "DocumentIndex": 85, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T21:48:25.007Z" - }, - { - "$type": "Document", - "DocumentIndex": 89, - "Title": "glAPICalling.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glAPICalling.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:14:08.969Z" - }, - { - "$type": "Document", - "DocumentIndex": 34, - "Title": "glResourceGenrator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ViewState": "AgIAADYAAAAAAAAAAIAzwFIAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:13:55.184Z" - }, - { - "$type": "Document", - "DocumentIndex": 82, - "Title": "glResourceManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glResourceManager.cs", - "ViewState": "AgIAAEcAAAAAAAAAAAAqwFUAAAAPAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-24T19:13:42.377Z" - }, - { - "$type": "Document", - "DocumentIndex": 246, - "Title": "MultiKeyDictionary.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\MultiKeyDictionary.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-23T20:00:13.62Z" - }, - { - "$type": "Document", - "DocumentIndex": 23, - "Title": "AutoTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", - "ViewState": "AgIAAD8AAAAAAAAAAAAIwFMAAAA0AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-23T19:22:04.183Z" - }, - { - "$type": "Document", - "DocumentIndex": 92, - "Title": "ControlItemRender.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\ControlItemRender.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\ControlItemRender.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:42:48.589Z" - }, - { - "$type": "Document", - "DocumentIndex": 97, - "Title": "main.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\main.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\main.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\main.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\main.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:40:09.913Z" - }, - { - "$type": "Document", - "DocumentIndex": 93, - "Title": "ControlItemRender.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\ControlItemRender.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\ControlItemRender.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\ControlItemRender.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-08-01T11:36:54.425Z" - }, - { - "$type": "Document", - "DocumentIndex": 8, - "Title": "OpenGLControllingItemRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\OpenGLControllingItemRender.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\OpenGLControllingItemRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\OpenGLControllingItemRender.cs", - "RelativeToolTip": "StgSharp\\MVVM\\OpenGLControllingItemRender.cs", - "ViewState": "AgIAACEAAAAAAAAAAAAAACgAAAAsAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:32:58.353Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 99, - "Title": "IGeomtryBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\IGeomtryBuffer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:26:58.217Z" - }, - { - "$type": "Document", - "DocumentIndex": 100, - "Title": "OpenningView.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "RelativeToolTip": "StgSharpDebug\\Stg\\Touhou\\View\\OpenningView.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:20:02.653Z" - }, - { - "$type": "Document", - "DocumentIndex": 94, - "Title": "TouhouWindow.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "RelativeToolTip": "StgSharpDebug\\Stg\\Touhou\\TouhouWindow.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-08-01T11:14:18.39Z" - }, - { - "$type": "Document", - "DocumentIndex": 98, - "Title": "InternalData.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\InternalData.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Data\\InternalData.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\InternalData.cs", - "RelativeToolTip": "StgSharpDebug\\Data\\InternalData.cs", - "ViewState": "AgIAAAcAAAAAAAAAAAAuwDMAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-30T23:52:16.105Z" - }, - { - "$type": "Document", - "DocumentIndex": 81, - "Title": "glApiManagerConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ViewState": "AgIAABgAAAAAAAAAAIBQwAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:56:27.205Z" - }, - { - "$type": "Document", - "DocumentIndex": 106, - "Title": "Object.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\3fbd2d3f2a21976ceea22ce6d61d2bfc56abbb0356d59a09e7367042f1d26101\\src\\libraries\\System.Private.CoreLib\\src\\System\\Object.cs", - "ViewState": "AgIAABIAAAAAAAAAAIAxwBkAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:53:04.659Z" - }, - { - "$type": "Document", - "DocumentIndex": 80, - "Title": "glException.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", - "ViewState": "AgIAAEMAAAAAAAAAAAAUwGUAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:18:29.968Z" - }, - { - "$type": "Document", - "DocumentIndex": 110, - "Title": "StructDefine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\StructDefine.cs", - "ViewState": "AgIAABIAAAAAAAAAAIBgwC0AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:08:05.513Z" - }, - { - "$type": "Document", - "DocumentIndex": 105, - "Title": "GLIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\IO\\GLIO.cs", - "ViewState": "AgIAAGgAAAAAAAAAAAAqwGgAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-29T22:06:08.827Z" - }, - { - "$type": "Document", - "DocumentIndex": 117, - "Title": "ViewManage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewManage.cs", - "ViewState": "AgIAABoAAAAAAAAAAAA1wDIAAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:47:56.998Z" - }, - { - "$type": "Document", - "DocumentIndex": 45, - "Title": "TimeProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\TimeProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Environment\\TimeProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Environment\\TimeProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Environment\\TimeProvider.cs", - "ViewState": "AgIAABkAAAAAAAAAAAAnwDAAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:44:41.918Z" - }, - { - "$type": "Document", - "DocumentIndex": 104, - "Title": "SemaphoreSlim.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\c6a36f44105246e8389794d6b1ff0c946741477e6dd52e219c7f2f689247fedc\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\SemaphoreSlim.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:44:32.439Z" - }, - { - "$type": "Document", - "DocumentIndex": 20, - "Title": "ViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewPort.cs", - "ViewState": "AgIAADEAAAAAAAAAAEBBwDoAAAASAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:31:16.196Z" - }, - { - "$type": "Document", - "DocumentIndex": 90, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewResponder.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAWwHQAAAAvAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T20:20:17.17Z" - }, - { - "$type": "Document", - "DocumentIndex": 112, - "Title": "ShowViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", - "ViewState": "AgIAADIAAAAAAAAAAAAtwEgAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:28:00.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 44, - "Title": "ViewModel.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAvwGoAAAA5AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:24:58.03Z" - }, - { - "$type": "Document", - "DocumentIndex": 119, - "Title": "PlainGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAqwC0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:16:05.323Z" - }, - { - "$type": "Document", - "DocumentIndex": 118, - "Title": "Rectangle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Rectangle.cs", - "ViewState": "AgIAABAAAAAAAAAAAAA1wCUAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T19:14:47.657Z" - }, - { - "$type": "Document", - "DocumentIndex": 91, + "DocumentIndex": 7, "Title": "ViewDesigner.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewDesigner.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAmwGUAAAAUAAAAAAAAAA==", + "ViewState": "AgIAAHkAAAAAAAAAAAAmwAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-28T18:02:40.594Z" + "WhenOpened": "2024-10-02T17:23:25.276Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 124, - "Title": "KeyTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "DocumentIndex": 1, + "Title": "Lable.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Lable.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Lable.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Lable.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Lable.cs", + "ViewState": "AgIAACwAAAAAAAAAAAAAwDgAAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T22:07:04.226Z" + "WhenOpened": "2024-10-02T09:09:25.924Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 126, + "DocumentIndex": 15, + "Title": "tmmintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\tmmintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\tmmintrin.h", + "ViewState": "AgIAACIAAAAAAAAAAIAwwC0AAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-10-02T02:14:03.631Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "quick_hash.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c", + "RelativeDocumentMoniker": "StgSharpC\\quick_hash.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\quick_hash.c", + "RelativeToolTip": "StgSharpC\\quick_hash.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAZAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-10-02T01:00:22.214Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 40, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAQwDMAAAAEAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T19:25:34.473Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "vector.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c", + "RelativeDocumentMoniker": "StgSharpC\\vector.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\vector.c", + "RelativeToolTip": "StgSharpC\\vector.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-30T18:50:19.959Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 39, + "Title": "intrinsicContextProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\intrinsicContextProvider.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAowC8AAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T18:13:26.275Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 171, + "Title": "immintrin.h", + "DocumentMoniker": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h", + "ToolTip": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.41.34120\\include\\immintrin.h", + "ViewState": "AgIAAEgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-30T18:00:39.836Z" + }, + { + "$type": "Document", + "DocumentIndex": 46, + "Title": "Matrix43.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix43.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix43.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix43.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix43.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAQwJEAAABDAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:54.686Z" + }, + { + "$type": "Document", + "DocumentIndex": 47, + "Title": "Matrix23.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix23.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix23.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix23.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix23.cs", + "ViewState": "AgIAAGcAAAAAAAAAAAAQwHUAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:50.079Z" + }, + { + "$type": "Document", + "DocumentIndex": 48, + "Title": "ColumnSet2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\ColumnSet2.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAQwDgAAAA8AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:33.294Z" + }, + { + "$type": "Document", + "DocumentIndex": 45, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharp\\Data\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAABEAAAAAAAAAAADwvzIAAAAsAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:28.515Z" + }, + { + "$type": "Document", + "DocumentIndex": 44, + "Title": "Matrix22.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix22.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix22.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix22.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix22.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAzwDEAAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:27.126Z" + }, + { + "$type": "Document", + "DocumentIndex": 37, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix42.cs", + "ViewState": "AgIAAKoAAAAAAAAAAAAAwIAAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:44:11.427Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 27, + "Title": "Matrix33.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix33.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix33.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix33.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix33.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAQwIwAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:42:19.077Z" + }, + { + "$type": "Document", + "DocumentIndex": 43, + "Title": "Matrix32.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix32.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix32.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix32.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix32.cs", + "ViewState": "AgIAAHEAAAAAAAAAAAAowH4AAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-30T17:41:00.831Z" + }, + { + "$type": "Document", + "DocumentIndex": 34, + "Title": "Matrix43.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix43.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAQwJEAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:18.978Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 33, + "Title": "Matrix34.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix34.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAQwIoAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:11.967Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 28, + "Title": "Matrix33.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix33.cs", + "ViewState": "AgIAAHkAAAAAAAAAAAAuwIoAAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:49:07.562Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 32, + "Title": "Matrix32.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix32.cs", + "ViewState": "AgIAAHAAAAAAAAAAAAAQwH4AAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:48:52.232Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 31, + "Title": "Matrix24.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix24.cs", + "ViewState": "AgIAAHwAAAAAAAAAAAAzwIoAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:48:41.245Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 29, + "Title": "Matrix23.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix23.cs", + "ViewState": "AgIAAGcAAAAAAAAAAAAQwHUAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:47:48.203Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 49, + "Title": "Matrix42.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Matrix42.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Matrix42.cs", + "ViewState": "AgIAAHIAAAAAAAAAAAAQwIAAAAA7AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:47:19.267Z" + }, + { + "$type": "Document", + "DocumentIndex": 63, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:26:04.159Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, "Title": "DataBinding.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\DataBinding.cs", - "ViewState": "AgIAADgAAAAAAAAAAAA0wC8AAAAAAAAAAAAAAA==", + "ViewState": "AgIAAFIAAAAAAAAAAAAgwFsAAAAuAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:50:43.739Z" - }, - { - "$type": "Document", - "DocumentIndex": 36, - "Title": "ViewBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", - "ViewState": "AgIAABIAAAAAAAAAAAApwH8AAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:46:52.221Z" - }, - { - "$type": "Document", - "DocumentIndex": 37, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", - "ViewState": "AgIAAAwAAAAAAAAAAAAvwB8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:02:28.873Z" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "NewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\NewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\NewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\NewRender.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\NewRender.cs", - "ViewState": "AgIAACkAAAAAAAAAAAAcwDgAAAAhAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-26T21:00:30.407Z", + "WhenOpened": "2024-09-29T23:25:58.341Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 129, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewResponder.cs", - "ViewState": "AgIAABwAAAAAAAAAAIBgwDsAAAAAAAAAAAAAAA==", + "DocumentIndex": 54, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAABAAAAAAAAAAAAAQwB4AAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:44:59.912Z" - }, - { - "$type": "Document", - "DocumentIndex": 18, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewRender.cs", - "ViewState": "AgIAAFsAAAAAAAAAAAAuwG0AAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:44:50.254Z" - }, - { - "$type": "Document", - "DocumentIndex": 128, - "Title": "ViewDesigner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", - "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewDesigner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", - "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewDesigner.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAIYAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-24T14:42:19.45Z" - }, - { - "$type": "Document", - "DocumentIndex": 114, - "Title": "Control.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Control.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Control.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Control.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T23:13:34.964Z" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "Partical.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\RenderStream\\Partical.cs", - "ViewState": "AgIAACcAAAAAAAAAAAAnwC4AAAAwAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T18:54:09.535Z", + "WhenOpened": "2024-09-29T23:25:53.902Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 236, - "Title": "Render.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Render.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Render.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Render.cs", + "DocumentIndex": 56, + "Title": "Vector.Orthogonalize.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vector.Orthogonalize.cs", + "ViewState": "AgIAAA8AAAAAAAAAAAAQwB8AAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-22T18:52:26.586Z" - }, - { - "$type": "Document", - "DocumentIndex": 113, - "Title": "PlainGeometryMesh.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\PlainGeometryMesh.cs", - "ViewState": "AgIAACsAAAAAAAAAAAAiwDoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:21:10.362Z" - }, - { - "$type": "Document", - "DocumentIndex": 35, - "Title": "TexturePipeline.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TexturePipeline.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TexturePipeline.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\TexturePipeline.cs", - "ViewState": "AgIAABAAAAAAAAAAAAAhwCoAAAA0AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:20:56.032Z" - }, - { - "$type": "Document", - "DocumentIndex": 43, - "Title": "MarkingLable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\MarkingLable.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAvwC8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:08:20.718Z" - }, - { - "$type": "Document", - "DocumentIndex": 120, - "Title": "DecorationBox.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\DecorationBox.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:08:04.698Z" - }, - { - "$type": "Document", - "DocumentIndex": 122, - "Title": "CharacterIndexImage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\CharacterIndexImage.cs", - "ViewState": "AgIAAAMAAAAAAAAAAIBgwA0AAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:07:37.453Z" - }, - { - "$type": "Document", - "DocumentIndex": 39, - "Title": "BattleField.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\BattleField.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAvwCAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:06:14.126Z" - }, - { - "$type": "Document", - "DocumentIndex": 121, - "Title": "ControllingIntem.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ControllingIntem.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwA4AAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T18:05:39.942Z" - }, - { - "$type": "Document", - "DocumentIndex": 123, - "Title": "TextureProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TextureProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureProvider.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\TextureProvider.cs", - "ViewState": "AgIAABIAAAAAAAAAAAAcwCMAAAASAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T17:09:02.036Z" - }, - { - "$type": "Document", - "DocumentIndex": 14, - "Title": "Design.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\Design.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\Design.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\Design.cs", - "ViewState": "AgIAABQAAAAAAAAAAAAqwCYAAAAhAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T08:07:56.357Z" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "ViewMain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\View\\ViewMain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\View\\ViewMain.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\View\\ViewMain.cs", - "ViewState": "AgIAAEQAAAAAAAAAAAAvwFcAAAATAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-21T08:06:54.118Z", + "WhenOpened": "2024-09-29T23:25:47.906Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 64, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAAHsAAAAAAAAAAAAUwIkAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:45.42Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 58, + "Title": "DataHead.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataHead.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataHead.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataHead.cs", + "RelativeToolTip": "StgSharp\\Data\\SSD\\DataHead.cs", + "ViewState": "AgIAAAwAAAAAAAAAAADwvx4AAAAeAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:40.498Z" + }, + { + "$type": "Document", + "DocumentIndex": 60, + "Title": "Random.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Scalar\\Random.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Scalar\\Random.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Scalar\\Random.cs", + "RelativeToolTip": "StgSharp\\Math\\Scalar\\Random.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:27.05Z" + }, + { + "$type": "Document", + "DocumentIndex": 66, "Title": "DataBinding.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\DataBinding.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\DataBinding.cs", - "ViewState": "AgIAAB4AAAAAAAAAAAAgwDEAAAAAAAAAAAAAAA==", + "ViewState": "AgIAABAAAAAAAAAAAAAUwB4AAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-19T16:41:06.14Z", + "WhenOpened": "2024-09-29T23:25:26.263Z" + }, + { + "$type": "Document", + "DocumentIndex": 57, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAABQAAAAAAAAAAAAiwB8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:05.778Z" + }, + { + "$type": "Document", + "DocumentIndex": 67, + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharp\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAABcAAAAAAAAAAAAUwC4AAAARAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:25:00.158Z" + }, + { + "$type": "Document", + "DocumentIndex": 61, + "Title": "DataSegment.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", + "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataSegment.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", + "RelativeToolTip": "StgSharp\\Data\\SSD\\DataSegment.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAwwCAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:24:54.534Z" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "IntrinsicContext.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\IntrinsicContext.cs", + "ViewState": "AgIAACQAAAAAAAAAAAAAADgAAABIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:24:12.242Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 132, - "Title": "KeyEventAttribute.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEventAttribute.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyEventAttribute.cs", + "DocumentIndex": 62, + "Title": "RandomGenerator.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\RandomGenerator.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\RandomGenerator.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\RandomGenerator.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\RandomGenerator.cs", + "ViewState": "AgIAAA4AAAAAAAAAAAAgwB8AAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:23:55.248Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 69, + "Title": "M256.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\M256.cs", + "ViewState": "AgIAAB4AAAAAAAAAAAAAACYAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T23:23:44.528Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "intrinsic.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c", + "RelativeDocumentMoniker": "StgSharpC\\intrinsic.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\intrinsic.c", + "RelativeToolTip": "StgSharpC\\intrinsic.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAwwBUAAAA3AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T22:48:24.45Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "stb_image.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h", + "RelativeDocumentMoniker": "StgSharpC\\stb_image.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.h", + "RelativeToolTip": "StgSharpC\\stb_image.h", "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T22:37:09.182Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "ssc_intrinsic.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_intrinsic.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_intrinsic.h", + "RelativeToolTip": "StgSharpC\\ssc_intrinsic.h", + "ViewState": "AgIAAC0AAAAAAAAAAAAAAD8AAAAoAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T22:32:24.64Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 70, + "Title": "Program.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\BenchMark\\Program.cs", + "RelativeDocumentMoniker": "BenchMark\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\BenchMark\\Program.cs", + "RelativeToolTip": "BenchMark\\Program.cs", + "ViewState": "AgIAAAYAAAAAAAAAAAAAACEAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-19T15:04:20.506Z" - }, - { - "$type": "Document", - "DocumentIndex": 237, - "Title": "DataBinding.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\DataBinding.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-18T17:19:17.458Z" - }, - { - "$type": "Document", - "DocumentIndex": 116, - "Title": "StgSharpDebug", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-17T19:34:54.548Z" - }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "ViewModelMain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\ViewModelMain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\ViewModelMain.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\ViewModelMain.cs", - "ViewState": "AgIAABkAAAAAAAAAAAAhwDAAAAA3AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-16T07:19:49.481Z" - }, - { - "$type": "Document", - "DocumentIndex": 75, - "Title": "StgSharpDebug.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", - "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-16T07:19:00.583Z" - }, - { - "$type": "Document", - "DocumentIndex": 247, - "Title": "TimeFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\TimeFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\TimeFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\TimeFunction.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T20:04:24.579Z" + "WhenOpened": "2024-09-29T22:26:10.769Z" }, { "$type": "Document", "DocumentIndex": 30, - "Title": "TriggerButton.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\TriggerButton.cs", - "ViewState": "AgIAALMAAAAAAAAAAIA0wL4AAAAIAAAAAAAAAA==", + "Title": "Matrix44.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix44.cs", + "ViewState": "AgIAALcAAAAAAAAAAAAowMQAAAA0AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:54:09.954Z" + "WhenOpened": "2024-09-29T21:53:45.275Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 115, - "Title": "ButtonGroup.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\ButtonGroup.cs", - "ViewState": "AgIAADAAAAAAAAAAAAAqwEEAAAAJAAAAAAAAAA==", + "DocumentIndex": 50, + "Title": "Matrix22.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Matrix22.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAQwDUAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:53:42.786Z" + "WhenOpened": "2024-09-29T21:50:22.312Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 238, - "Title": "ShowViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ShowViewPort.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T19:07:20.391Z" - }, - { - "$type": "Document", - "DocumentIndex": 239, - "Title": "ViewPort.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewPort.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:55:25.494Z" - }, - { - "$type": "Document", - "DocumentIndex": 125, - "Title": "KeyControl.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyControl.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyControl.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyControl.cs", - "ViewState": "AgIAABAAAAAAAAAAAAAqwCQAAAAbAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:23:56.059Z" - }, - { - "$type": "Document", - "DocumentIndex": 240, - "Title": "ViewResponder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewResponder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewResponder.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewResponder.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T18:00:35.036Z" - }, - { - "$type": "Document", - "DocumentIndex": 241, - "Title": "ViewRender.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\ViewRender.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T17:27:33.542Z" - }, - { - "$type": "Document", - "DocumentIndex": 242, - "Title": "ViewDesigner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\ViewDesigner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\ViewDesigner.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\ViewDesigner.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T17:21:21.477Z" - }, - { - "$type": "Document", - "DocumentIndex": 127, - "Title": "View.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\View\\View.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\View\\View.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\View\\View.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-15T15:23:07.924Z" - }, - { - "$type": "Document", - "DocumentIndex": 133, - "Title": "vec3d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\vec3d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\vec3d.cs", - "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\vec3d.cs", - "ViewState": "AgIAAF0AAAAAAAAAAAAmwEcAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-14T17:17:29.238Z" - }, - { - "$type": "Document", - "DocumentIndex": 48, + "DocumentIndex": 72, "Title": "GeometryOperation.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAvwDIAAAAQAAAAAAAAAA==", + "ViewState": "AgIAAGcAAAAAAAAAAAAnwHYAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-13T17:37:00.956Z" - }, - { - "$type": "Document", - "DocumentIndex": 111, - "Title": "particle.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\particle.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA4AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-13T05:34:34.109Z" - }, - { - "$type": "Document", - "DocumentIndex": 103, - "Title": "particle.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\particle.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\particle.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\particle.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAAoAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-13T05:34:25.67Z" - }, - { - "$type": "Document", - "DocumentIndex": 96, - "Title": "fbo.vert", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.vert", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.vert", - "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.vert", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-12T17:46:54.077Z" - }, - { - "$type": "Document", - "DocumentIndex": 95, - "Title": "fbo.frag", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", - "RelativeDocumentMoniker": "StgSharpDebug\\Shader\\fbo.frag", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Shader\\fbo.frag", - "RelativeToolTip": "StgSharpDebug\\Shader\\fbo.frag", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", - "WhenOpened": "2024-07-12T17:46:52.616Z" - }, - { - "$type": "Document", - "DocumentIndex": 88, - "Title": "glEnum.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", - "ViewState": "AgIAAFUAAAAAAAAAAAASwGcAAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T17:36:17.134Z" - }, - { - "$type": "Document", - "DocumentIndex": 19, - "Title": "RenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\RenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\RenderStream.cs", - "ViewState": "AgIAAFEAAAAAAAAAAAAWwF4AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T16:50:10.581Z" - }, - { - "$type": "Document", - "DocumentIndex": 84, - "Title": "VAO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAqwCcAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-12T10:04:44.545Z" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "TextureGL.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAvwDgAAAAfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T18:46:51.043Z", + "WhenOpened": "2024-09-29T21:47:44.641Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 136, - "Title": "SR.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\74ed84df48c00229a8da75e7d99c26a3409b78c17ddfc863196b29969f1b9863\\src\\libraries\\Common\\src\\System\\SR.cs", - "ViewState": "AgIAABkAAAAAAAAAAADgvyIAAAANAAAAAAAAAA==", + "DocumentIndex": 38, + "Title": "Vec2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec2.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec2.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec2.cs", + "ViewState": "AgIAAEoAAAAAAAAAAABBwCkAAAAWAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T18:09:43.749Z" + "WhenOpened": "2024-09-29T21:46:47.983Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 27, - "Title": "ImageHelper.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", - "ViewState": "AgIAABsAAAAAAAAAAAD4vywAAAAkAAAAAAAAAA==", + "DocumentIndex": 52, + "Title": "Vec3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec3.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec3.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec3.cs", + "ViewState": "AgIAADcAAAAAAAAAAIA1wB8AAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T13:33:11Z" + "WhenOpened": "2024-09-29T21:45:17.737Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 29, - "Title": "Image.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Image.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Image.cs", - "ViewState": "AgIAADkAAAAAAAAAAIA7wE8AAAAXAAAAAAAAAA==", + "DocumentIndex": 51, + "Title": "Vec4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\Vec4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\Vec4.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\Vec4.cs", + "ViewState": "AgIAAAwAAAAAAAAAAAAQwC8AAAAmAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T13:30:30.357Z" + "WhenOpened": "2024-09-29T21:44:04.683Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 139, - "Title": "Task.cs", - "DocumentMoniker": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs", - "ToolTip": "C:\\Users\\Nitlo\\AppData\\Local\\SourceServer\\6c91e49c16b65a4a6086c168a4f34965ffdd867f9cb4d0d10207e862c24f2808\\src\\libraries\\System.Private.CoreLib\\src\\System\\Threading\\Tasks\\Task.cs", - "ViewState": "AgIAAD8JAAAAAAAAAAAjwEcJAAAIAAAAAAAAAA==", + "DocumentIndex": 71, + "Title": "IVector.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\IVector.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\IVector.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\IVector.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\IVector.cs", + "ViewState": "AgIAAB0AAAAAAAAAAAASwC4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-11T03:46:13.673Z" + "WhenOpened": "2024-09-29T21:40:46.434Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 108, - "Title": "GlHandle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\GlHandle.cs", - "ViewState": "AgIAACQAAAAAAAAAAAAYwDoAAAAJAAAAAAAAAA==", + "DocumentIndex": 35, + "Title": "ColumnSet4.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet4.cs", + "ViewState": "AgIAAEkAAAAAAAAAAAAswCYAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:49:23.76Z" + "WhenOpened": "2024-09-29T21:37:40.402Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 243, - "Title": "ViewManage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewManage.cs", + "DocumentIndex": 25, + "Title": "ColumnSet2.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet2.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAcwDsAAAAYAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:32:18.12Z" + "WhenOpened": "2024-09-29T21:37:34.496Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 13, - "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", - "ViewState": "AgIAADoAAAAAAAAAAAAswFEAAAA6AAAAAAAAAA==", + "DocumentIndex": 36, + "Title": "ColumnSet3.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\ColumnSet3.cs", + "ViewState": "AgIAAEQAAAAAAAAAAAAmwCUAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:31:57.791Z", + "WhenOpened": "2024-09-29T21:35:07.699Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 73, + "Title": "Bullet.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Bullet.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\Bullet.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\Bullet.cs", + "RelativeToolTip": "StgSharpDebug\\Stg\\Bullet.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAC0AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T21:33:00.53Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 74, + "Title": "NativeMethods.txt", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\NativeMethods.txt", + "RelativeDocumentMoniker": "StgSharpDebug\\NativeMethods.txt", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\NativeMethods.txt", + "RelativeToolTip": "StgSharpDebug\\NativeMethods.txt", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|", + "WhenOpened": "2024-09-29T21:32:56.873Z" + }, + { + "$type": "Document", + "DocumentIndex": 75, + "Title": "Control", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Control", + "RelativeDocumentMoniker": "StgSharpDebug\\Control", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Control", + "RelativeToolTip": "StgSharpDebug\\Control", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|", + "WhenOpened": "2024-09-29T21:32:55.128Z" + }, + { + "$type": "Document", + "DocumentIndex": 76, + "Title": "BlueprintActionNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ViewState": "AgIAACcAAAAAAAAAAAAAACkAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T20:59:53.281Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "mat3.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c", + "RelativeDocumentMoniker": "StgSharpC\\mat3.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat3.c", + "RelativeToolTip": "StgSharpC\\mat3.c", + "ViewState": "AgIAAA4AAAAAAAAAAAAjwBMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:46:58.962Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "mat2.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c", + "RelativeDocumentMoniker": "StgSharpC\\mat2.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat2.c", + "RelativeToolTip": "StgSharpC\\mat2.c", + "ViewState": "AgIAAA0AAAAAAAAAAAAgwCgAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:46:52.29Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "stb_image.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c", + "RelativeDocumentMoniker": "StgSharpC\\stb_image.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\stb_image.c", + "RelativeToolTip": "StgSharpC\\stb_image.c", + "ViewState": "AgIAAJASAAAAAAAAAAAewLISAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T20:37:47.434Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 26, + "Title": "ssc_framework.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_framework.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_framework.h", + "RelativeToolTip": "StgSharpC\\ssc_framework.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T19:54:56.607Z" + }, + { + "$type": "Document", + "DocumentIndex": 77, + "Title": "glfw3native.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h", + "RelativeDocumentMoniker": "StgSharpC\\glfw3native.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3native.h \u2B24", + "RelativeToolTip": "StgSharpC\\glfw3native.h \u2B24", + "ViewState": "AgIAAE4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T19:54:32.432Z" + }, + { + "$type": "Document", + "DocumentIndex": 78, + "Title": "gl.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h", + "RelativeDocumentMoniker": "StgSharpC\\gl.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\gl.h", + "RelativeToolTip": "StgSharpC\\gl.h", + "ViewState": "AgIAAIQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T19:53:16.298Z" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "dllmain.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c", + "RelativeDocumentMoniker": "StgSharpC\\dllmain.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\dllmain.c", + "RelativeToolTip": "StgSharpC\\dllmain.c", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAMAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T19:13:51.2Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "ssc_internal.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h", + "RelativeDocumentMoniker": "StgSharpC\\ssc_internal.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\ssc_internal.h", + "RelativeToolTip": "StgSharpC\\ssc_internal.h", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-09-29T17:54:05.067Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "mat4.c", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c", + "RelativeDocumentMoniker": "StgSharpC\\mat4.c", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\mat4.c", + "RelativeToolTip": "StgSharpC\\mat4.c", + "ViewState": "AgIAABIAAAAAAAAAAAAAAAYAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", + "WhenOpened": "2024-09-29T17:52:26.343Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 53, + "Title": "IRegisterType.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\IRegisterType.cs", + "ViewState": "AgIAABoAAAAAAAAAAAAewCQAAAASAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-29T08:33:34.009Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 79, - "Title": "glApiManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAABUAAAAAAAAAAIBQwLAAAACCAAAAAAAAAA==", + "Title": "MatInterface.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "RelativeToolTip": "StgSharpDebug\\Math\\Linear\\MatInterface.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAAABIAAAAHAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:26:52.544Z" + "WhenOpened": "2024-09-29T08:33:51.856Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 140, - "Title": "glApiManager.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManager.cs", - "ViewState": "AgIAACoAAAAAAAAAAAAYwD8AAAAWAAAAAAAAAA==", + "DocumentIndex": 12, + "Title": "M128.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "RelativeToolTip": "StgSharpDebug\\Data\\Intrinsic\\M128.cs", + "ViewState": "AgIAADkAAAAAAAAAAAA1wEQAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:24:34.903Z" - }, - { - "$type": "Document", - "DocumentIndex": 141, - "Title": "glApiManagerConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glApiManagerConst.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:24:33.785Z" - }, - { - "$type": "Document", - "DocumentIndex": 28, - "Title": "glFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAAOMBAAAAAAAAAIAzwPYBAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T18:05:53.065Z" - }, - { - "$type": "Document", - "DocumentIndex": 143, - "Title": "Camera.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Graphic\\Camera.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Graphic\\Camera.cs", - "RelativeToolTip": "StgSharp\\Math\\Graphic\\Camera.cs", - "ViewState": "AgIAAIUAAAAAAAAAAAA0wJEAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:59:14.403Z" + "WhenOpened": "2024-09-28T20:11:22.78Z", + "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 86, - "Title": "FBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAARAAAAAAAAAA==", + "Title": "glEnum.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glEnum.cs", + "ViewState": "AgIAAFwAAAAAAAAAAAAtwGUAAAA7AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:58:38.22Z" + "WhenOpened": "2024-09-28T19:12:37.646Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 87, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAYwC8AAAAYAAAAAAAAAA==", + "DocumentIndex": 89, + "Title": "CollisionTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", + "RelativeDocumentMoniker": "StgSharp\\Stg\\CollisionTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", + "RelativeToolTip": "StgSharp\\Stg\\CollisionTexture.cs", + "ViewState": "AgIAAJUAAAAAAAAAAIAywKUAAABCAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:58:29.9Z" + "WhenOpened": "2024-09-28T18:14:14.323Z" }, { "$type": "Document", "DocumentIndex": 55, - "Title": "GlobalSuppressions.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", - "RelativeDocumentMoniker": "StgSharp\\GlobalSuppressions.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\GlobalSuppressions.cs", - "RelativeToolTip": "StgSharp\\GlobalSuppressions.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Title": "TextureGL.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", + "ViewState": "AgIAAC0AAAAAAAAAAAA9wJcAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:41:12.94Z" - }, - { - "$type": "Document", - "DocumentIndex": 109, - "Title": "BufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAADAAAAAAAAAAAIBgwE4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:23:55.021Z" - }, - { - "$type": "Document", - "DocumentIndex": 149, - "Title": "glConst.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glConst.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glConst.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\glConst.cs", - "ViewState": "AgIAAB0AAAAAAAAAAAAqwPQSAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:17:12.687Z" - }, - { - "$type": "Document", - "DocumentIndex": 148, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", - "ViewState": "AgIAAIMAAAAAAAAAAAAowJIAAAAwAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:16:18.094Z", + "WhenOpened": "2024-09-28T18:13:40.533Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 150, - "Title": "VAO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", - "ViewState": "AgIAADcAAAAAAAAAAAAUwEgAAAA1AAAAAAAAAA==", + "DocumentIndex": 96, + "Title": "MainThreadAssert.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeToolTip": "StgSharp\\Logic\\Threading\\MainThreadAssert.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:15:13.91Z", + "WhenOpened": "2024-09-27T19:46:51.552Z" + }, + { + "$type": "Document", + "DocumentIndex": 93, + "Title": "MainThreadAssert.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Threading\\MainThreadAssert.cs", + "ViewState": "AgIAAAMAAAAAAAAAAAAvwBEAAAAdAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T19:44:38.987Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 152, - "Title": "FBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\FBO.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAcwCYAAAAOAAAAAAAAAA==", + "DocumentIndex": 99, + "Title": "TextureBufferImage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureBufferImage.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TextureBufferImage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TextureBufferImage.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TextureBufferImage.cs", + "ViewState": "AgIAACsAAAAAAAAAAAAnwDoAAAAaAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T17:05:59.749Z", + "WhenOpened": "2024-09-27T18:44:51.978Z" + }, + { + "$type": "Document", + "DocumentIndex": 100, + "Title": "TextureBufferImage.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\TextureBufferImage.cs", + "ViewState": "AgIAACoAAAAAAAAAAAAAwEsAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-27T11:13:19.671Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 156, - "Title": "InternalIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\InternalIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\InternalIO.cs", - "RelativeToolTip": "StgSharp\\Controlling\\IO\\InternalIO.cs", - "ViewState": "AgIAAFkAAAAAAAAAAAA0wGoAAAALAAAAAAAAAA==", + "DocumentIndex": 92, + "Title": "ImageHelper.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\CPUanimation\\ImageHelper.cs", + "ViewState": "AgIAACIAAAAAAAAAAAAwwDQAAAANAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T15:48:23.725Z" - }, - { - "$type": "Document", - "DocumentIndex": 142, - "Title": "Pixels.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Pixels.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Pixels.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Pixels.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-10T04:12:48.395Z" - }, - { - "$type": "Document", - "DocumentIndex": 161, - "Title": "glException.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glException.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glException.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glException.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glException.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAYwDAAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-08T11:52:05.336Z" - }, - { - "$type": "Document", - "DocumentIndex": 130, - "Title": "StgSharp.csproj", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", - "RelativeDocumentMoniker": "StgSharp\\StgSharp.csproj", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", - "RelativeToolTip": "StgSharp\\StgSharp.csproj", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2024-07-08T10:39:35.673Z" - }, - { - "$type": "Document", - "DocumentIndex": 151, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-07T17:45:11.682Z", + "WhenOpened": "2024-09-27T10:06:10.864Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 138, - "Title": "GlHandle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\GlHandle.cs", - "ViewState": "AgIAACYAAAAAAAAAAAAYwDMAAAAAAAAAAAAAAA==", + "DocumentIndex": 104, + "Title": "glApiDefine.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glApiDefine.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glApiDefine.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glApiDefine.cs", + "RelativeToolTip": "StgSharp\\Graphics\\Define\\glApiDefine.cs", + "ViewState": "AgIAACAAAAAAAAAAAAAewC8AAABRAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T08:38:18.156Z" + "WhenOpened": "2024-09-27T04:53:08.572Z" }, { "$type": "Document", - "DocumentIndex": 153, - "Title": "BufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\BufferObjectBase.cs", - "ViewState": "AgIAABgAAAAAAAAAAAAYwCsAAAAqAAAAAAAAAA==", + "DocumentIndex": 98, + "Title": "Image.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Image.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Image.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Image.cs", + "ViewState": "AgIAAGEAAAAAAAAAAIA3wHAAAAAtAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T06:22:32.666Z" - }, - { - "$type": "Document", - "DocumentIndex": 144, - "Title": "GLBufferObjectBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\GLBufferObjectBase.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T07:31:18.854Z", + "WhenOpened": "2024-09-26T19:17:53.043Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 154, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\EBO.cs", - "ViewState": "AgIAAA0AAAAAAAAAAAAswB4AAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-07-06T06:22:23.335Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 235, - "Title": "MainRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Test\\MainRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Test\\MainRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Test\\MainRenderStream.cs", - "ViewState": "AgIAABsAAAAAAAAAAAA1wC4AAAAEAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:36.555Z" - }, - { - "$type": "Document", - "DocumentIndex": 230, - "Title": "RBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\RBO.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:23.15Z" - }, - { - "$type": "Document", - "DocumentIndex": 244, - "Title": "ViewModel.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\ViewModel\\ViewModel.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:20.456Z" - }, - { - "$type": "Document", - "DocumentIndex": 162, - "Title": "ShaderStruct.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ViewState": "AgIAABUAAAAAAAAAAAAYwCgAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:17.716Z" - }, - { - "$type": "Document", - "DocumentIndex": 231, - "Title": "EBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\EBO.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:15.821Z" - }, - { - "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 90, "Title": "CollisionTexture.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Stg\\CollisionTexture.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Stg\\CollisionTexture.cs", "RelativeToolTip": "StgSharpDebug\\Stg\\CollisionTexture.cs", - "ViewState": "AgIAABcAAAAAAAAAAIAwwHAAAAAMAAAAAAAAAA==", + "ViewState": "AgIAAJUAAAAAAAAAAIAywKYAAAArAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:12.581Z", + "WhenOpened": "2024-09-26T19:10:11.893Z", "EditorCaption": "" }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "NewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\View\\NewRender.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAUwEAAAAAuAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T11:11:30.893Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAAH4AAAAAAAAAAAAAAGUAAAAqAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:59:33.901Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 94, + "Title": "EmptyThread.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Threading\\EmptyThread.cs", + "ViewState": "AgIAABMAAAAAAAAAAAAswBkAAAATAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:56:02.291Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 41, + "Title": "InternalIO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "RelativeToolTip": "StgSharpDebug\\Controlling\\IO\\InternalIO.cs", + "ViewState": "AgIAAEYAAAAAAAAAAAAxwFYAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-26T10:55:42.887Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 106, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", + "ViewState": "AgIAAGoAAAAAAAAAAAAjwHUAAACTAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:26:14.747Z" + }, { "$type": "Document", "DocumentIndex": 107, + "Title": "framework.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\framework.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\framework.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\framework.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\framework.cs", + "ViewState": "AgIAAGoAAAAAAAAAAAAkwHUAAACVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:20:37.791Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 83, + "Title": "ViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewPort.cs", + "ViewState": "AgIAAD4AAAAAAAAAAAAlwEsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T20:17:33.106Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 109, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ViewState": "AgIAADEAAAAAAAAAAAAswEYAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:41:04.007Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 110, + "Title": "glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AgIAAHoAAAAAAAAAAAAwwJsAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:37:47.129Z" + }, + { + "$type": "Document", + "DocumentIndex": 112, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AgIAACcAAAAAAAAAAEBBwDgAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:20.928Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 97, "Title": "Camera.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", "RelativeDocumentMoniker": "StgSharpDebug\\Math\\Graphic\\Camera.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Math\\Graphic\\Camera.cs", "RelativeToolTip": "StgSharpDebug\\Math\\Graphic\\Camera.cs", - "ViewState": "AgIAADkAAAAAAAAAAAAcwEUAAAAIAAAAAAAAAA==", + "ViewState": "AgIAAOkAAAAAAAAAAIAywPkAAAAOAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:11.807Z" + "WhenOpened": "2024-09-24T19:36:18.803Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 232, - "Title": "Shader.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\ShaderEdit\\Shader.cs", + "DocumentIndex": 113, + "Title": "FBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\Buffer\\FBO.cs", + "ViewState": "AgIAAEYAAAAAAAAAAIAzwFcAAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-28T00:00:06.545Z" + "WhenOpened": "2024-09-24T19:36:16.817Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 233, - "Title": "VBO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\Buffer\\VBO.cs", + "DocumentIndex": 87, + "Title": "glConst.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glConst.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Define\\glConst.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Define\\glConst.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\Define\\glConst.cs", + "ViewState": "AgIAACYAAAAAAAAAAAAewPgSAAAbAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T23:58:09.408Z" + "WhenOpened": "2024-09-24T19:36:12.868Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 234, + "DocumentIndex": 114, + "Title": "ShaderStruct.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\ShaderEdit\\ShaderStruct.cs", + "ViewState": "AgIAADgAAAAAAAAAAIAzwEkAAABGAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:36:09.259Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 80, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAMMAAAAAAAAAAAAnwNYAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:33:36.487Z" + }, + { + "$type": "Document", + "DocumentIndex": 115, + "Title": "glFucntionSourceManager.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFucntionSourceManager.cs", + "ViewState": "AgIAAC4AAAAAAAAAAAAmwCIAAAAkAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-24T19:33:08.722Z" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "StgSharpDebug.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeDocumentMoniker": "StgSharpDebug\\StgSharpDebug.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\StgSharpDebug.csproj", + "RelativeToolTip": "StgSharpDebug\\StgSharpDebug.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-09-24T19:11:24.482Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 108, + "Title": "TimeSpanProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanProvider.cs", + "ViewState": "AgIAAMQAAAAAAAAAAAAgwNQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-23T05:38:37.835Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 82, + "Title": "glException.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glException.cs", + "ViewState": "AgIAABwAAAAAAAAAAAAvwC0AAAA0AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-23T05:34:20.734Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 116, + "Title": "TimeSpanAwaitingToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ViewState": "AgIAAGgAAAAAAAAAAIAywHYAAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-22T09:24:10.041Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 91, + "Title": "ViewModel.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ViewModel.cs", + "ViewState": "AgIAANwAAAAAAAAAAAAhwOkAAAAOAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-22T09:19:39.434Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "ViewBase.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\View\\ViewBase.cs", + "ViewState": "AgIAAEMAAAAAAAAAAAAgwFIAAAA6AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-22T09:18:52.076Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 95, "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\GL\\glRenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glRenderStream.cs", + "ViewState": "AgIAAKEAAAAAAAAAAAAgwK4AAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T23:55:40.542Z" + "WhenOpened": "2024-09-12T12:26:52.516Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 146, - "Title": "Uniform.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", - "ViewState": "AgIAAJEAAAAAAAAAAAAUwCsAAAAFAAAAAAAAAA==", + "DocumentIndex": 85, + "Title": "RenderStream.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\RenderStream.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\RenderStream.cs", + "ViewState": "AgIAADQAAAAAAAAAAAAewEMAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:58:58.669Z" + "WhenOpened": "2024-09-12T12:26:38.522Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 16, - "Title": "IGraphicAPIs.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\IGraphicAPIs.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\IGraphicAPIs.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\IGraphicAPIs.cs", - "RelativeToolTip": "StgSharp\\Graphics\\IGraphicAPIs.cs", - "ViewState": "AgIAABIAAAAAAAAAAAAAAAgAAAA2AAAAAAAAAA==", + "DocumentIndex": 10, + "Title": "ShowViewPort.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "RelativeToolTip": "StgSharpDebug\\MVVM\\ViewModel\\ShowViewPort.cs", + "ViewState": "AgIAAH0AAAAAAAAAAAAewIcAAAAYAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-27T17:54:48.427Z" + "WhenOpened": "2024-09-11T16:02:42.363Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 81, + "Title": "glFunction.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "RelativeToolTip": "StgSharpDebug\\Graphics\\OpenGL\\glFunction.cs", + "ViewState": "AgIAAMgAAAAAAAAAAMBAwNgAAAAjAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:54:58.392Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 88, + "Title": "ViewMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\View\\ViewMain.cs", + "ViewState": "AgIAAFIAAAAAAAAAAAAzwFwAAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:55:14.844Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 118, + "Title": "ViewModelMain.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\ViewModelMain.cs", + "ViewState": "AgIAAC8AAAAAAAAAAAAcwEsAAAAYAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T15:54:20.497Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 42, "Title": "Program.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Demo\\Program.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Demo\\Program.cs", - "RelativeToolTip": "StgSharpDebug\\Demo\\Program.cs", - "ViewState": "AgIAAC4AAAAAAAAAAIA+wEAAAAAAAAAAAAAAAA==", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\Program.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\Program.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\Program.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\Program.cs", + "ViewState": "AgIAADMAAAAAAAAAAAAuwD8AAAAmAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-26T19:34:28.297Z" + "WhenOpened": "2024-09-11T15:53:17.351Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 56, - "Title": "BpNodeBuilder.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeBuilder.cs", - "ViewState": "AgIAAC8AAAAAAAAAAAAvwEIAAAAXAAAAAAAAAA==", + "DocumentIndex": 84, + "Title": "Partical.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "RelativeToolTip": "StgSharpDebug\\AlphaDemo\\RenderStream\\Partical.cs", + "ViewState": "AgIAAM8AAAAAAAAAAAAgwOAAAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-26T19:26:13.669Z" + "WhenOpened": "2024-09-11T15:49:43.304Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 69, - "Title": "IConvertableToBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\IConvertableToBlueprintNode.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAYwCMAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-25T23:11:19.554Z" - }, - { - "$type": "Document", - "DocumentIndex": 70, - "Title": "BpNodeActionAttribute.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", - "ViewState": "AgIAAAkAAAAAAAAAAAAAACIAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-25T18:43:08.93Z" - }, - { - "$type": "Document", - "DocumentIndex": 163, - "Title": "glfw3.h", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", - "RelativeDocumentMoniker": "StgSharpC\\glfw3.h", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", - "RelativeToolTip": "StgSharpC\\glfw3.h", - "ViewState": "AgIAAAMRAAAAAAAAAAAqwBURAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", - "WhenOpened": "2024-06-22T23:24:18.461Z" - }, - { - "$type": "Document", - "DocumentIndex": 248, - "Title": "CrossFrameBlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "RelativeToolTip": "StgSharpDebug\\Logic\\Blueprint\\CrossFrameBlueprintNode.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-17T18:41:24.48Z" - }, - { - "$type": "Document", - "DocumentIndex": 66, - "Title": "PipeLine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\PipeLine.cs", - "ViewState": "AgIAAGMAAAAAAAAAAAAowCgAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T23:18:28.288Z" - }, - { - "$type": "Document", - "DocumentIndex": 102, - "Title": "InternalData.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\InternalData.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\InternalData.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\InternalData.cs", - "RelativeToolTip": "StgSharp\\Data\\InternalData.cs", - "ViewState": "AgIAAAAAAAAAAAAAAIBQwBUAAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:31:52.702Z" - }, - { - "$type": "Document", - "DocumentIndex": 74, - "Title": "GlobalSetting.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\GlobalSetting.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\GlobalSetting.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\GlobalSetting.cs", - "RelativeToolTip": "StgSharp\\Environment\\GlobalSetting.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAvwEkAAAA2AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:52.772Z" - }, - { - "$type": "Document", - "DocumentIndex": 175, - "Title": "globalKeyStat.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\globalKeyStat.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\globalKeyStat.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\globalKeyStat.cs", - "RelativeToolTip": "StgSharp\\Environment\\globalKeyStat.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:52.177Z" - }, - { - "$type": "Document", - "DocumentIndex": 176, - "Title": "ErrorDefine.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\ErrorDefine.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\ErrorDefine.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\ErrorDefine.cs", - "RelativeToolTip": "StgSharp\\Environment\\ErrorDefine.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T20:30:51.103Z" - }, - { - "$type": "Document", - "DocumentIndex": 63, - "Title": "CancellableTask.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CancellableTask.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\CancellableTask.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\CancellableTask.cs", - "RelativeToolTip": "StgSharp\\Logic\\CancellableTask.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAYwCQAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-16T19:05:18.993Z" - }, - { - "$type": "Document", - "DocumentIndex": 60, - "Title": "SizeFixedList.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "RelativeToolTip": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", - "ViewState": "AgIAAAUAAAAAAAAAAAAIwEQAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-15T10:12:43.359Z" - }, - { - "$type": "Document", - "DocumentIndex": 58, - "Title": "BlueprintRunner.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", - "ViewState": "AgIAAGQAAAAAAAAAAAAhwJEAAAAVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-15T09:28:36.087Z" - }, - { - "$type": "Document", - "DocumentIndex": 64, - "Title": "BlueprintNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", - "ViewState": "AgIAAGAAAAAAAAAAAAA1wLgAAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-14T15:52:07.701Z" - }, - { - "$type": "Document", - "DocumentIndex": 68, - "Title": "SideNode.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", - "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\SideNode.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", - "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\SideNode.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAswCgAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-14T13:21:31.686Z" - }, - { - "$type": "Document", - "DocumentIndex": 165, + "DocumentIndex": 119, "Title": "Platform.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\Platform.cs", "RelativeDocumentMoniker": "StgSharp\\Environment\\Platform.cs", @@ -2880,31 +2086,285 @@ }, { "$type": "Document", - "DocumentIndex": 166, + "DocumentIndex": 123, "Title": "TimeProvider.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", - "RelativeDocumentMoniker": "StgSharp\\Environment\\TimeProvider.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Environment\\TimeProvider.cs", - "RelativeToolTip": "StgSharp\\Environment\\TimeProvider.cs", - "ViewState": "AgIAAG8AAAAAAAAAAAAWwHQAAAAJAAAAAAAAAA==", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeProvider.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeProvider.cs", + "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeProvider.cs", + "ViewState": "AgIAAHoAAAAAAAAAAAAQwIoAAAAjAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-12T18:36:15.947Z" + "WhenOpened": "2024-09-11T13:31:09.97Z" }, { "$type": "Document", - "DocumentIndex": 61, + "DocumentIndex": 117, + "Title": "TimeProvider.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "RelativeDocumentMoniker": "StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "RelativeToolTip": "StgSharpDebug\\Logic\\Timing\\TimeProvider.cs", + "ViewState": "AgIAAH4AAAAAAAAAAAD4v4oAAABAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-11T11:09:33.477Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 122, + "Title": "TimeSpanAwaitingToken.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeSpanAwaitingToken.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAA0wHsAAAAUAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-04T22:11:44.057Z" + }, + { + "$type": "Document", + "DocumentIndex": 126, + "Title": "TriggetFactory.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\TriggetFactory.cs", + "ViewState": "AgIAAEoAAAAAAAAAAAAxwC0AAAA8AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-09-02T20:15:59.962Z" + }, + { + "$type": "Document", + "DocumentIndex": 131, + "Title": "TexturePipeline.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\TexturePipeline.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\TexturePipeline.cs", + "RelativeToolTip": "StgSharp\\Graphics\\TexturePipeline.cs", + "ViewState": "AgIAABUAAAAAAAAAAAAvwCgAAAAbAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T03:29:30.925Z" + }, + { + "$type": "Document", + "DocumentIndex": 129, + "Title": "BidirectionalDictionary.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "RelativeToolTip": "StgSharp\\Logic\\Collections\\BidirectionalDictionary.cs", + "ViewState": "AgIAAEMAAAAAAAAAAIAzwFUAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T03:20:40.602Z" + }, + { + "$type": "Document", + "DocumentIndex": 140, + "Title": "BlueprintActionNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintActionNode.cs", + "ViewState": "AgIAABgAAAAAAAAAAIBQwCYAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-26T02:58:10.928Z" + }, + { + "$type": "Document", + "DocumentIndex": 128, + "Title": "AutoTexture.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\AutoTexture.cs", + "ViewState": "AgIAAGwAAAAAAAAAAAAiwH4AAAAQAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-08-25T21:16:55.239Z" + }, + { + "$type": "Document", + "DocumentIndex": 125, + "Title": "ViewResponder.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewResponder.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewResponder.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewResponder.cs", + "ViewState": "AgIAACMAAAAAAAAAAAAEwDUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:44:59.912Z" + }, + { + "$type": "Document", + "DocumentIndex": 124, + "Title": "ViewRender.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewRender.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewRender.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewRender.cs", + "ViewState": "AgIAABQAAAAAAAAAAAAgwCQAAAAhAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:44:50.254Z" + }, + { + "$type": "Document", + "DocumentIndex": 142, + "Title": "ViewDesigner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", + "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewDesigner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewDesigner.cs", + "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewDesigner.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAIYAAAABAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-24T14:42:19.45Z" + }, + { + "$type": "Document", + "DocumentIndex": 146, + "Title": "VBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VBO.cs", + "ViewState": "AgIAAIMAAAAAAAAAAAAowJIAAAAwAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:16:18.094Z" + }, + { + "$type": "Document", + "DocumentIndex": 147, + "Title": "VAO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\VAO.cs", + "ViewState": "AgIAADcAAAAAAAAAAAAUwEgAAAA1AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-10T17:15:13.91Z" + }, + { + "$type": "Document", + "DocumentIndex": 143, + "Title": "StgSharp.csproj", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeDocumentMoniker": "StgSharp\\StgSharp.csproj", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\StgSharp.csproj", + "RelativeToolTip": "StgSharp\\StgSharp.csproj", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", + "WhenOpened": "2024-07-08T10:39:35.673Z" + }, + { + "$type": "Document", + "DocumentIndex": 148, + "Title": "RBO.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\RBO.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-07-07T17:45:11.682Z" + }, + { + "$type": "Document", + "DocumentIndex": 144, + "Title": "Uniform.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Uniform.cs", + "ViewState": "AgIAAJEAAAAAAAAAAAAUwCsAAAAFAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-27T17:58:58.669Z" + }, + { + "$type": "Document", + "DocumentIndex": 139, + "Title": "BpNodeActionAttribute.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BpNodeActionAttribute.cs", + "ViewState": "AgIAAAYAAAAAAAAAAIBQwCIAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-25T18:43:08.93Z" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "glfw3.h", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", + "RelativeDocumentMoniker": "StgSharpC\\glfw3.h", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\glfw3.h", + "RelativeToolTip": "StgSharpC\\glfw3.h", + "ViewState": "AgIAABUAAAAAAAAAAAAAAFELAAALAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", + "WhenOpened": "2024-06-22T23:24:18.461Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 133, + "Title": "SizeFixedList.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "RelativeToolTip": "StgSharp\\Logic\\Collections\\SizeFixedList.cs", + "ViewState": "AgIAAAUAAAAAAAAAAAAIwEQAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-15T10:12:43.359Z" + }, + { + "$type": "Document", + "DocumentIndex": 132, + "Title": "BlueprintRunner.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintRunner.cs", + "ViewState": "AgIAAGQAAAAAAAAAAAAhwJEAAAAVAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-15T09:28:36.087Z" + }, + { + "$type": "Document", + "DocumentIndex": 135, + "Title": "BlueprintNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\BlueprintNode.cs", + "ViewState": "AgIAAGAAAAAAAAAAAAA1wLgAAAAtAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-14T15:52:07.701Z" + }, + { + "$type": "Document", + "DocumentIndex": 138, + "Title": "SideNode.cs", + "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", + "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\SideNode.cs", + "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\SideNode.cs", + "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\SideNode.cs", + "ViewState": "AgIAAAsAAAAAAAAAAAAswCgAAAAcAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-06-14T13:21:31.686Z" + }, + { + "$type": "Document", + "DocumentIndex": 121, "Title": "TimeSpanProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeSpanProvider.cs", - "ViewState": "AgIAAA8AAAAAAAAAAADwvyQAAAAZAAAAAAAAAA==", + "ViewState": "AgIAALsAAAAAAAAAAAAAAMIAAAAQAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-12T18:36:02.299Z" }, { "$type": "Document", - "DocumentIndex": 67, + "DocumentIndex": 137, "Title": "RouteSwitch.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\RouteSwitch.cs", @@ -2916,7 +2376,7 @@ }, { "$type": "Document", - "DocumentIndex": 168, + "DocumentIndex": 153, "Title": "Area.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\Area.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\Area.cs", @@ -2928,7 +2388,7 @@ }, { "$type": "Document", - "DocumentIndex": 172, + "DocumentIndex": 155, "Title": "SSD.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSD.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSD.cs", @@ -2940,7 +2400,7 @@ }, { "$type": "Document", - "DocumentIndex": 171, + "DocumentIndex": 154, "Title": "SSDVirtualFolder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDVirtualFolder.cs", @@ -2952,19 +2412,7 @@ }, { "$type": "Document", - "DocumentIndex": 26, - "Title": "Image.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Image.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Image.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Image.cs", - "ViewState": "AgIAADAAAAAAAAAAAAAWwEIAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-09T13:44:55.317Z" - }, - { - "$type": "Document", - "DocumentIndex": 188, + "DocumentIndex": 159, "Title": "TouhouBuilder.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouBuilder.cs", @@ -2976,7 +2424,7 @@ }, { "$type": "Document", - "DocumentIndex": 101, + "DocumentIndex": 141, "Title": "TouhouWindow.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Touhou\\TouhouWindow.cs", "RelativeDocumentMoniker": "StgSharp\\Stg\\Touhou\\TouhouWindow.cs", @@ -2988,7 +2436,7 @@ }, { "$type": "Document", - "DocumentIndex": 189, + "DocumentIndex": 160, "Title": "Program.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgsharpEnvDebug\\Program.cs", "RelativeDocumentMoniker": "StgsharpEnvDebug\\Program.cs", @@ -3000,7 +2448,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 127, "Title": "ViewManage.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewManage.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewManage.cs", @@ -3012,58 +2460,43 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 120, "Title": "ShowViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ShowViewPort.cs", - "ViewState": "AgIAACMAAAAAAAAAAIAxwDEAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAE0AAAAAAAAAAAAwwFsAAAAlAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T07:49:36.575Z", - "EditorCaption": "" + "WhenOpened": "2024-06-06T07:49:36.575Z" }, { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 105, "Title": "ViewPort.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewPort.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewPort.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewPort.cs", - "ViewState": "AgIAAHQAAAAAAAAAAIA/wIsAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAHwAAAAAAAAAAAApwIkAAAA5AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-06T06:43:01.237Z", - "EditorCaption": "" + "WhenOpened": "2024-06-06T06:43:01.237Z" }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 102, "Title": "ViewModel.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\ViewModel\\ViewModel.cs", "RelativeToolTip": "StgSharp\\MVVM\\ViewModel\\ViewModel.cs", - "ViewState": "AgIAABEBAAAAAAAAAAAywBYBAAAAAAAAAAAAAA==", + "ViewState": "AgIAAEAAAAAAAAAAAAAnwE8AAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-05T19:19:57.97Z", - "EditorCaption": "" + "WhenOpened": "2024-06-05T19:19:57.97Z" }, { "$type": "Document", - "DocumentIndex": 195, - "Title": "Cordinate.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Cordinate.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-04T09:20:55.089Z" - }, - { - "$type": "Document", - "DocumentIndex": 196, + "DocumentIndex": 163, "Title": "Square.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Square.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Square.cs", @@ -3075,7 +2508,7 @@ }, { "$type": "Document", - "DocumentIndex": 193, + "DocumentIndex": 162, "Title": "Rectangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Rectangle.cs", @@ -3087,7 +2520,7 @@ }, { "$type": "Document", - "DocumentIndex": 157, + "DocumentIndex": 149, "Title": "Triangle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Triangle.cs", @@ -3099,19 +2532,7 @@ }, { "$type": "Document", - "DocumentIndex": 194, - "Title": "Parallelogram.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Parallelogram.cs", - "ViewState": "AgIAACAAAAAAAAAAAAAtwD8AAAAGAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T18:45:48.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 160, + "DocumentIndex": 152, "Title": "Polygon5.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon5.cs", @@ -3123,7 +2544,7 @@ }, { "$type": "Document", - "DocumentIndex": 158, + "DocumentIndex": 150, "Title": "Polygon6.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon6.cs", @@ -3135,31 +2556,19 @@ }, { "$type": "Document", - "DocumentIndex": 200, - "Title": "Class1.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "RelativeToolTip": "StgSharp\\Geometries\\SpaceGeometry\\Class1.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T08:05:08.74Z" - }, - { - "$type": "Document", - "DocumentIndex": 199, + "DocumentIndex": 165, "Title": "SpaceCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\SpaceCoordinate.cs", - "ViewState": "AgIAAA8AAAAAAAAAAIBgwCoAAAAxAAAAAAAAAA==", + "ViewState": "AgIAAAwAAAAAAAAAAMBowCoAAAAxAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-03T08:04:00.326Z" }, { "$type": "Document", - "DocumentIndex": 159, + "DocumentIndex": 151, "Title": "Polygon4.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Polygon4.cs", @@ -3171,19 +2580,7 @@ }, { "$type": "Document", - "DocumentIndex": 204, - "Title": "Cordination.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Cordination.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Cordination.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Cordination.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\Cordination.cs", - "ViewState": "AgIAAAYAAAAAAAAAAIBgwB8AAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-03T07:16:53.497Z" - }, - { - "$type": "Document", - "DocumentIndex": 198, + "DocumentIndex": 164, "Title": "Point.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Point.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Point.cs", @@ -3195,91 +2592,19 @@ }, { "$type": "Document", - "DocumentIndex": 205, + "DocumentIndex": 166, "Title": "Vector.Cross.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Cross.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Cross.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Cross.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Cross.cs", - "ViewState": "AgIAABIAAAAAAAAAAIBgwB8AAAABAAAAAAAAAA==", + "ViewState": "AgIAAA8AAAAAAAAAAMBowB8AAAABAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-06-02T18:55:17.351Z" }, { "$type": "Document", - "DocumentIndex": 191, - "Title": "IGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IGeometry.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IGeometry.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IGeometry.cs", - "ViewState": "AgIAAB8AAAAAAAAAAAAiwDMAAAAeAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T18:32:52.786Z" - }, - { - "$type": "Document", - "DocumentIndex": 211, - "Title": "JoystickTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\JoystickTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACsAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:59:29.232Z" - }, - { - "$type": "Document", - "DocumentIndex": 212, - "Title": "ITrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\ITrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:56:15.991Z" - }, - { - "$type": "Document", - "DocumentIndex": 177, - "Title": "KeyTrigger.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "RelativeToolTip": "StgSharp\\Controlling\\UsrActivity\\KeyTrigger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-02T17:48:14.248Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, - "Title": "MarkingLable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\MarkingLable.cs", - "ViewState": "AgIAABwAAAAAAAAAAAAvwDAAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-01T19:38:52.786Z" - }, - { - "$type": "Document", - "DocumentIndex": 180, - "Title": "DecorationBox.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\DecorationBox.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAqAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-06-01T19:38:36.894Z" - }, - { - "$type": "Document", - "DocumentIndex": 182, + "DocumentIndex": 158, "Title": "BattleField.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\BattleField.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\BattleField.cs", @@ -3291,78 +2616,7 @@ }, { "$type": "Document", - "DocumentIndex": 224, - "Title": "KeyEvent.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\KeyEvent.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\KeyEvent.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\KeyEvent.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-31T17:44:19.826Z" - }, - { - "$type": "Document", - "DocumentIndex": 181, - "Title": "CharacterIndexImage.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\CharacterIndexImage.cs", - "ViewState": "AgIAAB8AAAAAAAAAAADgvzMAAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-31T07:27:57.971Z" - }, - { - "$type": "Document", - "DocumentIndex": 187, - "Title": "KeyControl.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyControl.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\KeyControl.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\KeyControl.cs", - "RelativeToolTip": "StgSharp\\Controlling\\KeyControl.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAtwHIAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-30T03:47:10.188Z" - }, - { - "$type": "Document", - "DocumentIndex": 131, - "Title": "ButtonGroup.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\ButtonGroup.cs", - "ViewState": "AgIAAHwAAAAAAAAAAAAqwJAAAAAUAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-30T03:07:38.817Z" - }, - { - "$type": "Document", - "DocumentIndex": 178, - "Title": "PlainGeometryMesh.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\PlainGeometryMesh.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\PlainGeometryMesh.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\PlainGeometryMesh.cs", - "RelativeToolTip": "StgSharp\\Graphics\\PlainGeometryMesh.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACoAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:54:22.53Z" - }, - { - "$type": "Document", - "DocumentIndex": 183, - "Title": "ControllingIntem.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "RelativeToolTip": "StgSharp\\Controlling\\Controls\\ControllingIntem.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBgAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:52:06.895Z" - }, - { - "$type": "Document", - "DocumentIndex": 179, + "DocumentIndex": 157, "Title": "TriggerButton.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\Controls\\TriggerButton.cs", "RelativeDocumentMoniker": "StgSharp\\Controlling\\Controls\\TriggerButton.cs", @@ -3374,54 +2628,7 @@ }, { "$type": "Document", - "DocumentIndex": 225, - "Title": "KeyboardButton.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "RelativeToolTip": "StgSharpDebug\\Controlling\\Controls\\KeyboardButton.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T18:45:36.72Z" - }, - { - "$type": "Document", - "DocumentIndex": 208, - "Title": "Plain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Plain.cs", - "ViewState": "AgIAADwAAAAAAAAAAAAUwEsAAAAfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:14:59.807Z" - }, - { - "$type": "Document", - "DocumentIndex": 209, - "Title": "IEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", - "RelativeDocumentMoniker": "StgSharp\\Entities\\IEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Entities\\IEntity.cs", - "RelativeToolTip": "StgSharp\\Entities\\IEntity.cs", - "ViewState": "AgIAACIAAAAAAAAAAAAywDkAAAAWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:13:32.629Z" - }, - { - "$type": "Document", - "DocumentIndex": 167, - "Title": "DataSegment.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\DataSegment.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\DataSegment.cs", - "RelativeToolTip": "StgSharp\\Data\\SSD\\DataSegment.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAC4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T03:13:13.688Z" - }, - { - "$type": "Document", - "DocumentIndex": 173, + "DocumentIndex": 156, "Title": "SSDraw.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\SSD\\SSDraw.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\SSD\\SSDraw.cs", @@ -3433,42 +2640,19 @@ }, { "$type": "Document", - "DocumentIndex": 222, - "Title": "Angle.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\GeometryOperation\\Angle.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-29T02:36:43.754Z" - }, - { - "$type": "Document", - "DocumentIndex": 164, - "Title": "framework.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\framework.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\framework.cs", - "RelativeToolTip": "StgSharp\\Graphics\\framework.cs", - "ViewState": "AgIAAB4BAAAAAAAAAAAYwC8AAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:14:37.475Z" - }, - { - "$type": "Document", - "DocumentIndex": 49, + "DocumentIndex": 130, "Title": "TimeFunction.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeFunction.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeFunction.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeFunction.cs", "RelativeToolTip": "StgSharp\\Logic\\Timing\\TimeFunction.cs", - "ViewState": "AgIAAAkAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAYAAAAAAAAAAIBQwB4AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T12:14:28.529Z" }, { "$type": "Document", - "DocumentIndex": 62, + "DocumentIndex": 134, "Title": "TimeSourceProvider.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Timing\\TimeSourceProvider.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Timing\\TimeSourceProvider.cs", @@ -3480,7 +2664,7 @@ }, { "$type": "Document", - "DocumentIndex": 206, + "DocumentIndex": 167, "Title": "Vector.Normalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Normalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Normalize.cs", @@ -3492,55 +2676,19 @@ }, { "$type": "Document", - "DocumentIndex": 184, - "Title": "ParticleOnPlain.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\ParticleOnPlain.cs", - "ViewState": "AgIAADkAAAAAAAAAAAAwwCoAAAApAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:13:03.322Z" - }, - { - "$type": "Document", - "DocumentIndex": 214, - "Title": "IInstancingBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancingBuffer.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancingBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancingBuffer.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IInstancingBuffer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA8AAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:12:51.691Z" - }, - { - "$type": "Document", - "DocumentIndex": 185, - "Title": "IInstancing.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancing.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\IInstancing.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\IInstancing.cs", - "RelativeToolTip": "StgSharp\\Geometries\\IInstancing.cs", - "ViewState": "AgIAACkAAAAAAAAAAAAtwDYAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T12:12:47.113Z" - }, - { - "$type": "Document", - "DocumentIndex": 145, + "DocumentIndex": 111, "Title": "ShaderStruct.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", "RelativeToolTip": "StgSharp\\Graphics\\ShaderEdit\\ShaderStruct.cs", - "ViewState": "AgIAAAMAAAAAAAAAAIBgwCsAAAApAAAAAAAAAA==", + "ViewState": "AgIAADkAAAAAAAAAAAApwEkAAAA/AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T12:06:38.571Z" }, { "$type": "Document", - "DocumentIndex": 215, + "DocumentIndex": 169, "Title": "ShaderGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\ShaderEdit\\ShaderGenerator.cs", @@ -3552,141 +2700,56 @@ }, { "$type": "Document", - "DocumentIndex": 216, - "Title": "GLIO.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\GLIO.cs", - "RelativeDocumentMoniker": "StgSharp\\Controlling\\IO\\GLIO.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Controlling\\IO\\GLIO.cs", - "RelativeToolTip": "StgSharp\\Controlling\\IO\\GLIO.cs", - "ViewState": "AgIAAEUAAAAAAAAAAAAcwCoAAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:53:35.017Z" - }, - { - "$type": "Document", - "DocumentIndex": 77, + "DocumentIndex": 65, "Title": "TextureGL.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\Buffer\\TextureGL.cs", - "ViewState": "AgIAACoAAAAAAAAAAIBQwDsAAAAAAAAAAAAAAA==", + "ViewState": "AgIAABEAAAAAAAAAAAAUwB8AAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:52:02.572Z", - "EditorCaption": "" + "WhenOpened": "2024-05-28T09:52:02.572Z" }, { "$type": "Document", - "DocumentIndex": 135, - "Title": "glEnum.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\Define\\glEnum.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\Define\\glEnum.cs", - "RelativeToolTip": "StgSharp\\Graphics\\Define\\glEnum.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAqwD0AAABLAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:51:55.169Z" - }, - { - "$type": "Document", - "DocumentIndex": 217, + "DocumentIndex": 170, "Title": "Angle.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryScaler\\Angle.cs", "RelativeToolTip": "StgSharp\\Geometries\\GeometryScaler\\Angle.cs", - "ViewState": "AgIAAHEAAAAAAAAAAEBAwH8AAAAJAAAAAAAAAA==", + "ViewState": "AgIAAHIAAAAAAAAAAAAlwH8AAAAJAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-28T09:50:33.189Z" }, { "$type": "Document", - "DocumentIndex": 78, - "Title": "CollisionTexture.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", - "RelativeDocumentMoniker": "StgSharp\\Stg\\CollisionTexture.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\CollisionTexture.cs", - "RelativeToolTip": "StgSharp\\Stg\\CollisionTexture.cs", - "ViewState": "AgIAAIkAAAAAAAAAAAAhwKkAAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-28T09:47:06.034Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 169, - "Title": "ISSDSerializable.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "RelativeToolTip": "StgSharp\\Data\\Serialize\\ISSDSerializable.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABwAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:11:24.157Z" - }, - { - "$type": "Document", - "DocumentIndex": 170, - "Title": "Define.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\Define.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\Serialize\\Define.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\Serialize\\Define.cs", - "RelativeToolTip": "StgSharp\\Data\\Serialize\\Define.cs", - "ViewState": "AgIAAA8AAAAAAAAAAMBowAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:11:21.58Z" - }, - { - "$type": "Document", - "DocumentIndex": 218, - "Title": "M128.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\M128.cs", - "RelativeDocumentMoniker": "StgSharp\\Data\\M128.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\M128.cs", - "RelativeToolTip": "StgSharp\\Data\\M128.cs", - "ViewState": "AgIAACcAAAAAAAAAAIBgwD0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-14T02:06:36.634Z" - }, - { - "$type": "Document", - "DocumentIndex": 174, + "DocumentIndex": 68, "Title": "RandomGenerator.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\RandomGenerator.cs", "RelativeDocumentMoniker": "StgSharp\\Data\\RandomGenerator.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Data\\RandomGenerator.cs", "RelativeToolTip": "StgSharp\\Data\\RandomGenerator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABgAAAAMAAAAAAAAAA==", + "ViewState": "AgIAAKAAAAAAAAAAAAAUwK4AAAAiAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-14T01:44:33.9Z" }, { "$type": "Document", - "DocumentIndex": 213, + "DocumentIndex": 17, "Title": "StgSharpC.h", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.h", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.h", "RelativeToolTip": "StgSharpC\\StgSharpC.h", - "ViewState": "AgIAABgAAAAAAAAAAIAwwCgAAAAoAAAAAAAAAA==", + "ViewState": "AgIAAA8AAAAAAAAAAAAAABYAAAAkAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", - "WhenOpened": "2024-05-11T21:42:41.09Z" + "WhenOpened": "2024-05-11T21:42:41.09Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 134, - "Title": "glFunction.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glFunction.cs", - "ViewState": "AgIAAPsAAAAAAAAAAABCwA4BAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T21:22:23.016Z" - }, - { - "$type": "Document", - "DocumentIndex": 147, + "DocumentIndex": 145, "Title": "Shader.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", @@ -3694,123 +2757,47 @@ "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\ShaderEdit\\Shader.cs", "ViewState": "AgIAALwAAAAAAAAAAAAcwN4AAAAcAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-11T19:37:12.456Z", - "EditorCaption": "" + "WhenOpened": "2024-05-11T19:37:12.456Z" }, { "$type": "Document", - "DocumentIndex": 65, + "DocumentIndex": 136, "Title": "Blueprint.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\Blueprint.cs", "RelativeDocumentMoniker": "StgSharp\\Logic\\Blueprint\\Blueprint.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Logic\\Blueprint\\Blueprint.cs", "RelativeToolTip": "StgSharp\\Logic\\Blueprint\\Blueprint.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAYwDQAAAAeAAAAAAAAAA==", + "ViewState": "AgIAADQAAAAAAAAAAAA1wDQAAAAeAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-11T15:59:06.55Z" }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 103, "Title": "ViewBase.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewBase.cs", "RelativeDocumentMoniker": "StgSharp\\MVVM\\View\\ViewBase.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\MVVM\\View\\ViewBase.cs", "RelativeToolTip": "StgSharp\\MVVM\\View\\ViewBase.cs", - "ViewState": "AgIAALAAAAAAAAAAAAAWwMMAAAApAAAAAAAAAA==", + "ViewState": "AgIAAFoAAAAAAAAAAEBBwGgAAAATAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-11T05:11:47.098Z" }, { "$type": "Document", - "DocumentIndex": 219, - "Title": "GeometryOperation.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\GeometryOperation.cs", - "ViewState": "AgIAABUAAAAAAAAAAIA0wCUAAAAfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-10T04:35:10.414Z" - }, - { - "$type": "Document", - "DocumentIndex": 50, - "Title": "GeometryOperation.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "RelativeToolTip": "StgSharp\\Geometries\\GeometryOperation\\GeometryOperation.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAhwD8AAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-10T04:34:22.843Z" - }, - { - "$type": "Document", - "DocumentIndex": 192, - "Title": "PlainGeometry.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainGeometry.cs", - "ViewState": "AgIAACUAAAAAAAAAAAAtwDoAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T11:36:04.039Z" - }, - { - "$type": "Document", - "DocumentIndex": 186, - "Title": "IPlainEntity.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\IPlainEntity.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwBMAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T11:36:00.584Z" - }, - { - "$type": "Document", - "DocumentIndex": 155, - "Title": "glResourceGenrator.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glResourceGenrator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACcAAAAZAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:44:36.325Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 52, - "Title": "glRenderStream.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeDocumentMoniker": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "RelativeToolTip": "StgSharp\\Graphics\\OpenGL\\glRenderStream.cs", - "ViewState": "AgIAAAsAAAAAAAAAAAAvwCQAAAAYAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:42:14.767Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 101, "Title": "RenderStream.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeDocumentMoniker": "StgSharp\\Graphics\\RenderStream.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Graphics\\RenderStream.cs", "RelativeToolTip": "StgSharp\\Graphics\\RenderStream.cs", - "ViewState": "AgIAACcAAAAAAAAAAAAAANoAAAAAAAAAAAAAAA==", + "ViewState": "AgIAADcAAAAAAAAAAIAzwEcAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T09:42:08.831Z", - "EditorCaption": "" + "WhenOpened": "2024-05-09T09:42:08.831Z" }, { "$type": "Document", - "DocumentIndex": 210, + "DocumentIndex": 168, "Title": "StreamLocalCoordinate.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\StreamLocalCoordinate.cs", @@ -3822,125 +2809,32 @@ }, { "$type": "Document", - "DocumentIndex": 221, - "Title": "vec3d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec3d.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec3d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec3d.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\vec3d.cs", - "ViewState": "AgIAACwAAAAAAAAAAAAjwD4AAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:42:19.181Z" - }, - { - "$type": "Document", - "DocumentIndex": 203, - "Title": "vec4d.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec4d.cs", - "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\vec4d.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\vec4d.cs", - "RelativeToolTip": "StgSharp\\Math\\Linear\\vec4d.cs", - "ViewState": "AgIAAEcAAAAAAAAAAAAAwFcAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:40:47.919Z" - }, - { - "$type": "Document", - "DocumentIndex": 207, + "DocumentIndex": 59, "Title": "Vector.Orthogonalize.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeDocumentMoniker": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", "RelativeToolTip": "StgSharp\\Math\\Linear\\Vector.Orthogonalize.cs", - "ViewState": "AgIAACcAAAAAAAAAAAAtwDEAAAArAAAAAAAAAA==", + "ViewState": "AgIAABkAAAAAAAAAAAAiwB4AAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-05-09T03:35:41.246Z" }, { "$type": "Document", - "DocumentIndex": 201, - "Title": "CoordinationBase.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\CoordinationBase.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAuwAsAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:32:12.398Z" - }, - { - "$type": "Document", - "DocumentIndex": 197, - "Title": "PlainCoordinate.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "RelativeToolTip": "StgSharp\\Geometries\\Coordination\\PlainCoordinate.cs", - "ViewState": "AgIAACMAAAAAAAAAAAAiwD8AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:29:20.299Z" - }, - { - "$type": "Document", - "DocumentIndex": 202, - "Title": "PlainInstancingBuffer.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "RelativeDocumentMoniker": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "RelativeToolTip": "StgSharp\\Geometries\\PlainGeometry\\Define\\PlainInstancingBuffer.cs", - "ViewState": "AgIAAB4AAAAAAAAAAIBgwFYAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:28:11.182Z" - }, - { - "$type": "Document", - "DocumentIndex": 220, - "Title": "Bullet.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Bullet.cs", - "RelativeDocumentMoniker": "StgSharp\\Stg\\Bullet.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharp\\Stg\\Bullet.cs", - "RelativeToolTip": "StgSharp\\Stg\\Bullet.cs", - "ViewState": "AgIAAFkAAAAAAAAAAIA1wDUAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-09T03:22:55.279Z" - }, - { - "$type": "Document", - "DocumentIndex": 223, - "Title": "IInstancing.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\PlainGeometry\\Define\\IInstancing.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-08T17:39:31.95Z" - }, - { - "$type": "Document", - "DocumentIndex": 137, + "DocumentIndex": 23, "Title": "StgSharpC.c", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeDocumentMoniker": "StgSharpC\\StgSharpC.c", "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpC\\StgSharpC.c", "RelativeToolTip": "StgSharpC\\StgSharpC.c", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA3AAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABIAAAAaAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000423|", - "WhenOpened": "2024-05-04T08:32:40.265Z" + "WhenOpened": "2024-05-04T08:32:40.265Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 227, - "Title": "ShowForm.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\ShowForm.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-05-01T20:46:20.87Z" - }, - { - "$type": "Document", - "DocumentIndex": 190, + "DocumentIndex": 161, "Title": "MainForm.cs", "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\OEM\\MainForm.cs", "RelativeDocumentMoniker": "OEM\\MainForm.cs", @@ -3949,39 +2843,6 @@ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2024-04-26T21:06:53.667Z" - }, - { - "$type": "Document", - "DocumentIndex": 228, - "Title": "FormThreading.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\FormThreading.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-25T19:29:47.069Z" - }, - { - "$type": "Document", - "DocumentIndex": 226, - "Title": "ICoord.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "RelativeToolTip": "StgSharpDebug\\Geometries\\Coordination\\ICoord.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-25T01:07:46.041Z" - }, - { - "$type": "Document", - "DocumentIndex": 229, - "Title": "Form.cs", - "DocumentMoniker": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", - "RelativeDocumentMoniker": "StgSharpDebug\\Graphics\\Form\\Form.cs", - "ToolTip": "D:\\NitloadIndustry\\\u7814\u7A76\u9879\u76EE\\1-Flagship\\TH2020\\ProjectFile\\\u6E90\u4EE3\u7801\\StgSharpDebug\\Graphics\\Form\\Form.cs", - "RelativeToolTip": "StgSharpDebug\\Graphics\\Form\\Form.cs", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2024-04-23T09:01:45.978Z" } ] } diff --git a/源代码/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt b/源代码/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt index 7dbca70f..ac4d0de4 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt and b/源代码/.vs/StgSharpDevelop/v17/HierarchyCache.v1.txt differ diff --git a/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db b/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db index 097bd967..76ff64d3 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db and b/源代码/.vs/StgSharpDevelop/v17/Solution.VC.db differ diff --git a/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog b/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog index 9197b6c3..8857abe6 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog and b/源代码/.vs/StgSharpDevelop/v17/TestStore/0/000.testlog differ diff --git a/源代码/.vs/StgSharpDevelop/v17/fileList.bin b/源代码/.vs/StgSharpDevelop/v17/fileList.bin index 6810fe16..85f826c7 100644 Binary files a/源代码/.vs/StgSharpDevelop/v17/fileList.bin and b/源代码/.vs/StgSharpDevelop/v17/fileList.bin differ diff --git a/源代码/BenchMark/obj/BenchMark.csproj.nuget.dgspec.json b/源代码/BenchMark/obj/BenchMark.csproj.nuget.dgspec.json index 03c87655..7dd751e5 100644 --- a/源代码/BenchMark/obj/BenchMark.csproj.nuget.dgspec.json +++ b/源代码/BenchMark/obj/BenchMark.csproj.nuget.dgspec.json @@ -26,7 +26,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs b/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs index a6aa79cb..ade35f86 100644 --- a/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs +++ b/源代码/BenchMark/obj/Debug/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+d082071f2d004b4566bd19a1a030cf06b112c3af")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs b/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs index 292a04c0..f4a273d0 100644 --- a/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs +++ b/源代码/BenchMark/obj/Release/net6.0/BenchMark.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BenchMark")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+924fe6eef7b6b9441b297f211c82b4684f23d002")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("BenchMark")] [assembly: System.Reflection.AssemblyTitleAttribute("BenchMark")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/BenchMark/obj/Release/net6.0/BenchMark.sourcelink.json b/源代码/BenchMark/obj/Release/net6.0/BenchMark.sourcelink.json index b6831881..b229cf6b 100644 --- a/源代码/BenchMark/obj/Release/net6.0/BenchMark.sourcelink.json +++ b/源代码/BenchMark/obj/Release/net6.0/BenchMark.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/b207f16616b7bd967d647a809cc27e7174063451/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e/*"}} \ No newline at end of file diff --git a/源代码/BenchMark/obj/project.assets.json b/源代码/BenchMark/obj/project.assets.json index 8398023b..5606b456 100644 --- a/源代码/BenchMark/obj/project.assets.json +++ b/源代码/BenchMark/obj/project.assets.json @@ -1779,7 +1779,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs b/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs index cac90d64..731d5073 100644 --- a/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs +++ b/源代码/OEM/obj/Debug/net8.0/OEM.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("OEM")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ee4e4a42f2a6b8609a6fce1d36c8da7f4182da6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("OEM")] [assembly: System.Reflection.AssemblyTitleAttribute("OEM")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/OEM/obj/OEM.csproj.nuget.dgspec.json b/源代码/OEM/obj/OEM.csproj.nuget.dgspec.json index 296686a0..c59c1fa2 100644 --- a/源代码/OEM/obj/OEM.csproj.nuget.dgspec.json +++ b/源代码/OEM/obj/OEM.csproj.nuget.dgspec.json @@ -26,7 +26,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -115,7 +114,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/OEM/obj/project.assets.json b/源代码/OEM/obj/project.assets.json index d63d4059..9f3ce1d4 100644 --- a/源代码/OEM/obj/project.assets.json +++ b/源代码/OEM/obj/project.assets.json @@ -228,7 +228,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.deps.json b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.deps.json index 421e7b7e..237c0100 100644 --- a/源代码/Output/x64/Debug/net6.0/StgSharpDebug.deps.json +++ b/源代码/Output/x64/Debug/net6.0/StgSharpDebug.deps.json @@ -8,21 +8,15 @@ ".NETCoreApp,Version=v6.0": { "StgSharpDebug/1.0.0": { "dependencies": { - "BidirectionalDict": "1.2.0", - "Microsoft.Windows.CsWin32": "0.3.49-beta" + "Microsoft.Windows.CsWin32": "0.3.49-beta", + "System.Collections.Concurrent": "4.3.0" }, "runtime": { "StgSharpDebug.dll": {} } }, - "BidirectionalDict/1.2.0": { - "runtime": { - "lib/netcoreapp3.1/BidirectionalDict.dll": { - "assemblyVersion": "1.2.0.0", - "fileVersion": "1.2.0.0" - } - } - }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "Microsoft.NETCore.Targets/1.1.0": {}, "Microsoft.Windows.CsWin32/0.3.49-beta": { "dependencies": { "Microsoft.Windows.SDK.Win32Docs": "0.1.42-alpha", @@ -39,8 +33,117 @@ "Microsoft.Windows.SDK.Win32Metadata": "55.0.45-preview" } }, + "System.Collections/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent/4.3.0": { + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Diagnostics.Debug/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Globalization/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.IO/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, "System.Memory/4.5.5": {}, - "System.Runtime.CompilerServices.Unsafe/6.0.0": {} + "System.Reflection/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.Primitives/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Resources.ResourceManager/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": {}, + "System.Runtime.Extensions/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encoding/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Threading/4.3.0": { + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks/4.3.0": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + } } }, "libraries": { @@ -49,12 +152,19 @@ "serviceable": false, "sha512": "" }, - "BidirectionalDict/1.2.0": { + "Microsoft.NETCore.Platforms/1.1.0": { "type": "package", "serviceable": true, - "sha512": "sha512-hjLTwpPTQBdseFVTVH1vf7Pbaj5ATKIM3DQN8Hup22ixyC14+r1bE4YFjtZmWfcegvJR74zYtatBTwpOHmIMNQ==", - "path": "bidirectionaldict/1.2.0", - "hashPath": "bidirectionaldict.1.2.0.nupkg.sha512" + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "path": "microsoft.netcore.targets/1.1.0", + "hashPath": "microsoft.netcore.targets.1.1.0.nupkg.sha512" }, "Microsoft.Windows.CsWin32/0.3.49-beta": { "type": "package", @@ -84,6 +194,48 @@ "path": "microsoft.windows.wdk.win32metadata/0.9.9-experimental", "hashPath": "microsoft.windows.wdk.win32metadata.0.9.9-experimental.nupkg.sha512" }, + "System.Collections/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "path": "system.collections/4.3.0", + "hashPath": "system.collections.4.3.0.nupkg.sha512" + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "path": "system.collections.concurrent/4.3.0", + "hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "path": "system.diagnostics.debug/4.3.0", + "hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512" + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "path": "system.diagnostics.tracing/4.3.0", + "hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512" + }, + "System.Globalization/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "path": "system.globalization/4.3.0", + "hashPath": "system.globalization.4.3.0.nupkg.sha512" + }, + "System.IO/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "path": "system.io/4.3.0", + "hashPath": "system.io.4.3.0.nupkg.sha512" + }, "System.Memory/4.5.5": { "type": "package", "serviceable": true, @@ -91,12 +243,68 @@ "path": "system.memory/4.5.5", "hashPath": "system.memory.4.5.5.nupkg.sha512" }, + "System.Reflection/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "path": "system.reflection/4.3.0", + "hashPath": "system.reflection.4.3.0.nupkg.sha512" + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "path": "system.reflection.primitives/4.3.0", + "hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512" + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "path": "system.resources.resourcemanager/4.3.0", + "hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512" + }, + "System.Runtime/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "path": "system.runtime/4.3.0", + "hashPath": "system.runtime.4.3.0.nupkg.sha512" + }, "System.Runtime.CompilerServices.Unsafe/6.0.0": { "type": "package", "serviceable": true, "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", "path": "system.runtime.compilerservices.unsafe/6.0.0", "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512" + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "path": "system.runtime.extensions/4.3.0", + "hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512" + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "path": "system.text.encoding/4.3.0", + "hashPath": "system.text.encoding.4.3.0.nupkg.sha512" + }, + "System.Threading/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "path": "system.threading/4.3.0", + "hashPath": "system.threading.4.3.0.nupkg.sha512" + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "path": "system.threading.tasks/4.3.0", + "hashPath": "system.threading.tasks.4.3.0.nupkg.sha512" } } } \ No newline at end of file diff --git a/源代码/StgSharp/Controlling/Controls/BattleField.cs b/源代码/StgSharp/Controlling/Controls/BattleField.cs index 02f53d54..3f0d2d59 100644 --- a/源代码/StgSharp/Controlling/Controls/BattleField.cs +++ b/源代码/StgSharp/Controlling/Controls/BattleField.cs @@ -45,12 +45,23 @@ namespace StgSharp.Controls { public bool IsEntity => true; - public ReadOnlySpan TextureBox + + public ReadOnlySpan TextureBox { get => throw new NotImplementedException(); } - public Rectangle BoundingBox { get; set; } - public vec2d Position { get; set; } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } public IEnumerator GetEnumerator() { diff --git a/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs b/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs index 9f065f1a..a02a98d8 100644 --- a/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs +++ b/源代码/StgSharp/Controlling/Controls/ButtonGroup.cs @@ -53,38 +53,48 @@ namespace StgSharp.Controls buttonList = new List(); } - public bool IsEntity { get => false; } + public bool IsEntity + { + get => false; + } - public ReadOnlySpan TextureBox + public ReadOnlySpan TextureBox { get => throw new NotSupportedException(); } - public Rectangle BoundingBox { get; set; } + public Rectangle BoundingBox + { + get; + set; + } public TriggerButton CurrentButton { get => current; } - public vec2d Position { get; set; } + public Vec2 Position + { + get; + set; + } protected List AllButton { get => buttonList; } - public void AddButton(TriggerButton button) + public void AddButton( TriggerButton button ) { - buttonList.Add(button); + buttonList.Add( button ); } public abstract void Confirm(); public IEnumerator GetEnumerator() { - foreach (TriggerButton item in buttonList) - { + foreach( TriggerButton item in buttonList ) { yield return item.Single(); } } @@ -92,12 +102,10 @@ namespace StgSharp.Controls public void MoveDown() { TriggerButton button = current; - while ((button.Down != null) && button.Down.IsDisabled) - { + while( ( button.Down != null ) && button.Down.IsDisabled ) { button = button.Right; } - if (current == button) - { + if( current == button ) { return; } current.DeHighlight(); @@ -108,12 +116,10 @@ namespace StgSharp.Controls public void MoveLeft() { TriggerButton button = current; - while ((button.Left != null) && button.Left.IsDisabled) - { + while( ( button.Left != null ) && button.Left.IsDisabled ) { button = button.Left; } - if (current == button) - { + if( current == button ) { return; } current.DeHighlight(); @@ -124,12 +130,10 @@ namespace StgSharp.Controls public void MoveRight() { TriggerButton button = current; - while ((button.Right != null) && button.Right.IsDisabled) - { + while( ( button.Right != null ) && button.Right.IsDisabled ) { button = button.Right; } - if (current == button) - { + if( current == button ) { return; } current.DeHighlight(); @@ -140,12 +144,10 @@ namespace StgSharp.Controls public void MoveUp() { TriggerButton button = current; - while ((button.Up != null) && button.Up.IsDisabled) - { + while( ( button.Up != null ) && button.Up.IsDisabled ) { button = button.Right; } - if (current == button) - { + if( current == button ) { return; } current.DeHighlight(); diff --git a/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs b/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs index 3757b516..326b01b0 100644 --- a/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs +++ b/源代码/StgSharp/Controlling/Controls/CharacterIndexImage.cs @@ -47,18 +47,21 @@ namespace StgSharp.Controls private char[] displayIndex; private char defaultChar; - Dictionary texIndex; + private Dictionary texIndex; private int length; - PlainGeometryMesh _tittleMesh; + private PlainGeometryMesh _tittleMesh; public CharacterLineIndexImage( - int length, char defaultChar, PlainGeometryMesh tittleMesh, - IEnumerable<(char, PlainGeometryMesh)> indexEnumeration) + int length, + char defaultChar, + PlainGeometryMesh tittleMesh, + IEnumerable<(char, PlainGeometryMesh)> indexEnumeration ) { this.length = length; displayIndex = new char[length]; _tittleMesh = tittleMesh; - texIndex = indexEnumeration.ToDictionary(item => item.Item1, item => item.Item2); + texIndex = indexEnumeration.ToDictionary( + item => item.Item1, item => item.Item2 ); } public bool IsEntity @@ -66,23 +69,32 @@ namespace StgSharp.Controls get => true; } - public ReadOnlySpan TextureBox + public ReadOnlySpan TextureBox { get => throw new NotSupportedException(); } - public Rectangle BoundingBox { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - public vec2d Position { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } - public void Display(string message) + public Rectangle BoundingBox { - if (string.IsNullOrEmpty(message)) - { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public Vec2 Position + { + get => throw new NotImplementedException(); + set => throw new NotImplementedException(); + } + + public void Display( string message ) + { + if( string.IsNullOrEmpty( message ) ) { message = string.Empty; } - string result = (message.Length >= length) ? - message.Substring(message.Length - displayIndex.Length) : - message.PadLeft(length, defaultChar); + string result = ( message.Length >= length ) ? + message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( + length, defaultChar ); displayIndex = result.ToCharArray(); } @@ -90,9 +102,8 @@ namespace StgSharp.Controls public IEnumerator GetEnumerator() { yield return _tittleMesh; - foreach (char item in displayIndex) - { - yield return texIndex[item]; + foreach( char item in displayIndex ) { + yield return texIndex[ item ]; } } diff --git a/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs b/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs index 54f77d8f..32c7b151 100644 --- a/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs +++ b/源代码/StgSharp/Controlling/Controls/ControllingIntem.cs @@ -42,12 +42,27 @@ namespace StgSharp.Controls public interface ControllingItem : IEnumerable { - public abstract bool IsEntity { get; } + public abstract bool IsEntity + { + get; + } - public abstract ReadOnlySpan TextureBox { get; } - public abstract Rectangle BoundingBox { get; set; } - public abstract vec2d Position { get; set; } + public abstract ReadOnlySpan TextureBox + { + get; + } + public abstract Rectangle BoundingBox + { + get; + set; + } + + public abstract Vec2 Position + { + get; + set; + } IEnumerator IEnumerable.GetEnumerator() { diff --git a/源代码/StgSharp/Controlling/Controls/DecorationBox.cs b/源代码/StgSharp/Controlling/Controls/DecorationBox.cs index bb0807a1..b9c906d2 100644 --- a/源代码/StgSharp/Controlling/Controls/DecorationBox.cs +++ b/源代码/StgSharp/Controlling/Controls/DecorationBox.cs @@ -44,20 +44,30 @@ namespace StgSharp.Controls private PlainGeometryMesh renderMesh; - public DecorationBox(Rectangle bound, Image texture, vec2d[] texCoord) + public DecorationBox( Rectangle bound, Image texture, Vec2[] texCoord ) { - renderMesh = new PlainGeometryMesh(BoundingBox, new TextureProvider(texture, texCoord)); + renderMesh = new PlainGeometryMesh( + BoundingBox, new TextureProvider( texture, texCoord ) ); } public bool IsEntity => true; - public ReadOnlySpan TextureBox + public ReadOnlySpan TextureBox { get => renderMesh.TextureCoord; } - public Rectangle BoundingBox { get; set; } - public vec2d Position { get; set; } + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } public IEnumerator GetEnumerator() { diff --git a/源代码/StgSharp/Controlling/Controls/MarkingLable.cs b/源代码/StgSharp/Controlling/Controls/MarkingLable.cs index 43d00e30..b334e9e3 100644 --- a/源代码/StgSharp/Controlling/Controls/MarkingLable.cs +++ b/源代码/StgSharp/Controlling/Controls/MarkingLable.cs @@ -48,40 +48,49 @@ namespace StgSharp.Controls private TimeFunction _movement; - private vec2d _currentPosition, _movementVec; + private Vec2 _currentPosition, _movementVec; - public MarkingLabel(PlainGeometryMesh marker, TimeFunction movement) + public MarkingLabel( PlainGeometryMesh marker, TimeFunction movement ) { this.marker = marker; _movement = movement; } public bool IsEntity => true; - public ReadOnlySpan TextureBox + + public ReadOnlySpan TextureBox { get => marker.TextureCoord; } - public Rectangle BoundingBox { get; set; } - public vec2d Position { get; set; } + + public Rectangle BoundingBox + { + get; + set; + } + + public Vec2 Position + { + get; + set; + } public IEnumerator GetEnumerator() { yield return marker; } - public void Move(vec2d movement) + public void Move( Vec2 movement ) { - if (!_movement.IsComplete) - { - Position = _currentPosition + (_movement.Calculate() * _movementVec); + if( !_movement.IsComplete ) { + Position = _currentPosition + ( _movement.Calculate() * _movementVec ); } } - public void MoveTo(vec2d target) + public void MoveTo( Vec2 target ) { - Move(target - Position); + Move( target - Position ); } } - } diff --git a/源代码/StgSharp/Controlling/Controls/TriggerButton.cs b/源代码/StgSharp/Controlling/Controls/TriggerButton.cs index 61c09e1a..b135005f 100644 --- a/源代码/StgSharp/Controlling/Controls/TriggerButton.cs +++ b/源代码/StgSharp/Controlling/Controls/TriggerButton.cs @@ -40,11 +40,14 @@ using System.Text; namespace StgSharp.Controls { - - public delegate void RenderButtonTextureCallback(ButtonStatus status, float beginTime, in TextureProvider texture); + public delegate void RenderButtonTextureCallback( + ButtonStatus status, + float beginTime, + in TextureProvider texture ); public enum ButtonStatus { + Error = 0b0, Disable = 0b1, Enable = 0b10, @@ -52,12 +55,13 @@ namespace StgSharp.Controls Confirm = 0b1000, DisableToEnable = Disable | Enable, - EnableToDisable = -(Enable | DisableToEnable), + EnableToDisable = -( Enable | DisableToEnable ), EnableToHighlight = Enable | Highlight, - HighlightToEnable = -(Enable | Highlight), + HighlightToEnable = -( Enable | Highlight ), + + HighlightToDisable = -( Highlight | Disable ), - HighlightToDisable = -(Highlight | Disable), } public class TriggerButton : ControllingItem @@ -66,14 +70,14 @@ namespace StgSharp.Controls private Action? confirmCallback; private Action? disableCallback; -#nullable enable + #nullable enable private Action? enableCallback; private float _statusBeginTime; private RenderButtonTextureCallback _renderButton; private TextureProvider _texture; -#nullable restore + #nullable restore public TriggerButton() { @@ -102,41 +106,74 @@ namespace StgSharp.Controls { add { - if (_renderButton == null) - { + if( _renderButton == null ) { _renderButton = value; - } - else - { + } else { _renderButton += value; } } remove { - if (_renderButton != null) - { + if( _renderButton != null ) { _renderButton -= value; } } } - public bool IsHighLighted { get; internal set; } + public bool IsHighLighted + { + get; + internal set; + } - public bool IsDisabled { get; internal set; } + public bool IsDisabled + { + get; + internal set; + } public bool IsEntity => true; - public ReadOnlySpan TextureBox + public ReadOnlySpan TextureBox { - get => MemoryMarshal.Cast(_texture.TextureCoordinate); + get => MemoryMarshal.Cast( _texture.TextureCoordinate ); } - public Rectangle BoundingBox { get; set; } - public TriggerButton Left { get; internal set; } - public TriggerButton Right { get; internal set; } - public TriggerButton Up { get; internal set; } - public TriggerButton Down { get; internal set; } - public vec2d Position { get; set; } + public Rectangle BoundingBox + { + get; + set; + } + + public TriggerButton Left + { + get; + internal set; + } + + public TriggerButton Right + { + get; + internal set; + } + + public TriggerButton Up + { + get; + internal set; + } + + public TriggerButton Down + { + get; + internal set; + } + + public Vec2 Position + { + get; + set; + } internal TextureProvider Texture { @@ -144,12 +181,15 @@ namespace StgSharp.Controls set => _texture = value; } - protected ButtonStatus CurrentStatus { get; set; } + protected ButtonStatus CurrentStatus + { + get; + set; + } public void DeHighlight() { - if (CurrentStatus == ButtonStatus.Highlight) - { + if( CurrentStatus == ButtonStatus.Highlight ) { CurrentStatus = ButtonStatus.HighlightToEnable; } } @@ -162,54 +202,44 @@ namespace StgSharp.Controls ButtonStatus.Highlight => ButtonStatus.HighlightToDisable, _ => CurrentStatus, }; - if (disableCallback != null) - { + if( disableCallback != null ) { disableCallback(); } } public void Enable() { - if (CurrentStatus == ButtonStatus.Disable) - { + if( CurrentStatus == ButtonStatus.Disable ) { CurrentStatus = ButtonStatus.DisableToEnable; - } - else - { + } else { return; } - if (enableCallback != null) - { + if( enableCallback != null ) { enableCallback(); } } public IEnumerator GetEnumerator() { - _renderButton(CurrentStatus, _statusBeginTime, in _texture); - yield return new PlainGeometryMesh(this.BoundingBox, _texture); + _renderButton( CurrentStatus, _statusBeginTime, in _texture ); + yield return new PlainGeometryMesh( this.BoundingBox, _texture ); } public void Highlight() { - if (CurrentStatus == ButtonStatus.Enable) - { + if( CurrentStatus == ButtonStatus.Enable ) { CurrentStatus |= ButtonStatus.EnableToHighlight; - } - else - { + } else { return; } - if (confirmCallback != null) - { + if( confirmCallback != null ) { confirmCallback(); } } - internal void Init(ButtonStatus status) + internal void Init( ButtonStatus status ) { - if (CurrentStatus == ButtonStatus.Error) - { + if( CurrentStatus == ButtonStatus.Error ) { CurrentStatus = status; } } diff --git a/源代码/StgSharp/Controlling/IO/GLIO.cs b/源代码/StgSharp/Controlling/IO/GLIO.cs index 5ee914fa..a0fbb5de 100644 --- a/源代码/StgSharp/Controlling/IO/GLIO.cs +++ b/源代码/StgSharp/Controlling/IO/GLIO.cs @@ -40,31 +40,55 @@ namespace StgSharp { internal static partial class InternalIO { + #region ssgc api define - [DllImport(SSC_libName, EntryPoint = "initGL", - CallingConvention = CallingConvention.Cdecl)] - internal static extern void InternalInitGL(int majorVersion, int minorVersion); + [DllImport( + SSC_libName, + EntryPoint = "initGL", + CallingConvention = CallingConvention.Cdecl )] + internal static extern void InternalInitGL( + int majorVersion, + int minorVersion ); - [DllImport(SSC_libName, EntryPoint = "loadGlfuncDefault", - CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] - internal static extern IntPtr InternalLoadGlfuncDefault(string name); + [DllImport( + SSC_libName, + EntryPoint = "loadGlfuncDefault", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi )] + internal static extern IntPtr InternalLoadGlfuncDefault( string name ); - [DllImport(SSC_libName, EntryPoint = "linkShaderProgram", - CallingConvention = CallingConvention.Cdecl)] - internal static extern unsafe uint InternalLinkShaderProgram(OpenglContext* context, uint shaderProgram); + [DllImport( + SSC_libName, + EntryPoint = "linkShaderProgram", + CallingConvention = CallingConvention.Cdecl )] + internal static extern unsafe uint InternalLinkShaderProgram( + OpenglContext* context, + uint shaderProgram ); - [DllImport(SSC_libName, EntryPoint = "readLog", - CallingConvention = CallingConvention.Cdecl)] + [DllImport( + SSC_libName, + EntryPoint = "readLog", + CallingConvention = CallingConvention.Cdecl )] internal static extern unsafe IntPtr InternalReadSSCLog(); - [DllImport(SSC_libName, EntryPoint = "loadImageData", - CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] - internal static extern unsafe void InternalLoadImage(string fileName, ImageInfo* output, ImageLoader loader); + [DllImport( + SSC_libName, + EntryPoint = "loadImageData", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi )] + internal static extern unsafe void InternalLoadImage( + string fileName, + ImageInfo* output, + ImageLoader loader ); - [DllImport(SSC_libName, EntryPoint = "unloadImageData", - CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] - internal static extern unsafe void InternalUnloadImage(ImageInfo* output); + [DllImport( + SSC_libName, + EntryPoint = "unloadImageData", + CallingConvention = CallingConvention.Cdecl, + CharSet = CharSet.Ansi )] + internal static extern unsafe void InternalUnloadImage( + ImageInfo* output ); #endregion ssgc api define } @@ -72,34 +96,42 @@ namespace StgSharp namespace StgSharp.Graphics { - [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Ansi)] - public delegate IntPtr ImageLoader(string name, ref int width, ref int height, ref int definedChannel, int desiredChannel); +[UnmanagedFunctionPointer( CallingConvention.Cdecl, CharSet = CharSet.Ansi )] + public delegate IntPtr ImageLoader( + string name, + ref int width, + ref int height, + ref int definedChannel, + int desiredChannel ); - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public struct OpenglContext { - public override bool Equals(object obj) + public override bool Equals( object obj ) { return false; } public override unsafe int GetHashCode() { - fixed (OpenglContext* sptr = &this) - { + fixed( OpenglContext* sptr = &this ) { return sptr->GetHashCode(); } } - public static bool operator !=(OpenglContext left, OpenglContext right) + public static bool operator !=( + OpenglContext left, + OpenglContext right ) { - return !(left == right); + return !( left == right ); } - public static bool operator ==(OpenglContext left, OpenglContext right) + public static bool operator ==( + OpenglContext left, + OpenglContext right ) { - return left.Equals(right); + return left.Equals( right ); } #region glapi @@ -244,7 +276,7 @@ namespace StgSharp.Graphics internal unsafe delegate* glBufferPageCommitmentMemNV; internal unsafe delegate* glBufferParameteriAPPLE; internal unsafe delegate* glBufferStorage; - [Obsolete("Param type uncertain", true)] internal unsafe delegate* glBufferStorageExternalEXT; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glBufferStorageExternalEXT; internal unsafe delegate* glBufferStorageMemEXT; internal unsafe delegate* glBufferSubData; internal unsafe delegate* glBufferSubDataARB; @@ -1425,7 +1457,7 @@ namespace StgSharp.Graphics internal unsafe delegate* glNamedBufferPageCommitmentMemNV; internal unsafe delegate* glNamedBufferStorage; internal unsafe delegate* glNamedBufferStorageEXT; - [Obsolete("Param type uncertain", true)] internal unsafe delegate* glNamedBufferStorageExternalEXT; + [Obsolete( "Param type uncertain", true )] internal unsafe delegate* glNamedBufferStorageExternalEXT; internal unsafe delegate* glNamedBufferStorageMemEXT; internal unsafe delegate* glNamedBufferSubData; internal unsafe delegate* glNamedBufferSubDataEXT; @@ -2103,7 +2135,7 @@ namespace StgSharp.Graphics internal unsafe delegate* glUniform1dv; internal unsafe delegate* glUniform1f; internal unsafe delegate* glUniform1fARB; - internal unsafe delegate* glUniform1fv; + internal unsafe delegate* glUniform1fv; internal unsafe delegate* glUniform1fvARB; internal unsafe delegate* glUniform1i; internal unsafe delegate* glUniform1i64ARB; @@ -2637,8 +2669,6 @@ namespace StgSharp.Graphics internal unsafe delegate* glWindowRectanglesEXT; internal unsafe delegate* glWriteMaskEXT; - #endregion glapi - - + #endregion glapi } } \ No newline at end of file diff --git a/源代码/StgSharp/Controlling/IO/InternalIO.cs b/源代码/StgSharp/Controlling/IO/InternalIO.cs index 57ba53bd..7ab9d1cc 100644 --- a/源代码/StgSharp/Controlling/IO/InternalIO.cs +++ b/源代码/StgSharp/Controlling/IO/InternalIO.cs @@ -28,12 +28,14 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -47,11 +49,13 @@ namespace StgSharp { public enum LogType { + Error, Warning, Info, InfoError, InfoWarning, + } internal static unsafe partial class InternalIO @@ -67,42 +71,45 @@ namespace StgSharp new Dictionary(); internal static readonly GCHandle ssc_logHandle = - GCHandle.Alloc(new byte[512], GCHandleType.Pinned); + GCHandle.Alloc( new byte[512], GCHandleType.Pinned ); internal static IntPtr SSClibPtr = IntPtr.Zero; - internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim(1, 1); + internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( + 1, 1 ); static InternalIO() { - GLtype.Add(TypeCode.Single, GLconst.FLOAT); - GLtype.Add(TypeCode.Int32, GLconst.INT); - GLtype.Add(TypeCode.UInt32, GLconst.UNSIGNED_INT); - GLtype.Add(TypeCode.Int16, GLconst.SHORT); - GLtype.Add(TypeCode.UInt16, GLconst.UNSIGNED_SHORT); - GLtype.Add(TypeCode.SByte, GLconst.BYTE); - GLtype.Add(TypeCode.Byte, GLconst.UNSIGNED_BYTE); + GLtype.Add( TypeCode.Single, GLconst.FLOAT ); + GLtype.Add( TypeCode.Int32, GLconst.INT ); + GLtype.Add( TypeCode.UInt32, GLconst.UNSIGNED_INT ); + GLtype.Add( TypeCode.Int16, GLconst.SHORT ); + GLtype.Add( TypeCode.UInt16, GLconst.UNSIGNED_SHORT ); + GLtype.Add( TypeCode.SByte, GLconst.BYTE ); + GLtype.Add( TypeCode.Byte, GLconst.UNSIGNED_BYTE ); + + fixed( IntrinsicContext* cptr = &_intrinsicContext ) { + LoadIntrinsicFunction( cptr ); + } } - internal static void InternalAppendLog(string log) + internal static void InternalAppendLog( string log ) { - if (!File.Exists(SS_errorLog)) - { - FileStream stream = File.Create(SS_errorLog); + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); stream.Close(); } - using (StreamWriter logStream = File.AppendText(SS_errorLog)) - { - logStream.WriteLine(log); + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( log ); } } - [Obsolete("Not completed", true)] - internal static IntPtr InternalLoadProc(IntPtr lib, string name) where T : Delegate + [Obsolete( "Not completed", true )] + internal static IntPtr InternalLoadProc( IntPtr lib, string name ) + where T: Delegate { - try - { + try { IntPtr procPtr = #if WINDOWS IntPtr.Zero; @@ -110,48 +117,48 @@ namespace StgSharp #else IntPtr.Zero; -#endif + #endif return procPtr; } - catch (Exception) - { + catch( Exception ) { throw; } } - internal static void InternalWriteLog(string logLine, LogType logType) + internal static void InternalWriteLog( string logLine, LogType logType ) { logSyncSemaphore.Wait(); - if (!File.Exists(SS_errorLog)) - { - FileStream stream = File.Create(SS_errorLog); + if( !File.Exists( SS_errorLog ) ) { + FileStream stream = File.Create( SS_errorLog ); stream.Close(); } - using (StreamWriter logStream = File.AppendText(SS_errorLog)) - { - logStream.WriteLine($"{logType}\t{DateTime.Now.ToString("o")}"); - logStream.WriteLine(logLine); + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( + $"{logType}\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); } logSyncSemaphore.Release(); } - internal static void InternalWriteLog(string beforeTime, string logLine, LogType logType) + internal static void InternalWriteLog( + string beforeTime, + string logLine, + LogType logType ) { logSyncSemaphore.Wait(); - if (!File.Exists(InternalIO.SS_errorLog)) - { - FileStream stream = File.Create(InternalIO.SS_errorLog); + if( !File.Exists( InternalIO.SS_errorLog ) ) { + FileStream stream = File.Create( InternalIO.SS_errorLog ); stream.Close(); } - using (StreamWriter logStream = File.AppendText(SS_errorLog)) - { - logStream.WriteLine(beforeTime); - logStream.WriteLine($"{logType}\t@\t{DateTime.Now.ToString("o")}"); - logStream.WriteLine(logLine); + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + logStream.WriteLine( beforeTime ); + logStream.WriteLine( + $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( logLine ); } - logSyncSemaphore.Release(1); + logSyncSemaphore.Release( 1 ); } } diff --git a/源代码/StgSharp/Controlling/KeyEnum.cs b/源代码/StgSharp/Controlling/KeyEnum.cs new file mode 100644 index 00000000..93d7e0fd --- /dev/null +++ b/源代码/StgSharp/Controlling/KeyEnum.cs @@ -0,0 +1,237 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="KeyEnum.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; + +using System; + +namespace StgSharp +{ + public enum KeyboardKey : int + { + + UNKNOWN = -1, + None = 0, + Space = 32, + Apostrophe = 39/*'*/, + Comma = 44/*,*/, + Minus = 45/*-*/, + Period = 46/*.*/, + Slash = 47/*/*/, + Zero = 48, + One = 49, + Two = 50, + Three = 51, + Four = 52, + Five = 53, + Six = 54, + Seven = 55, + Eight = 56, + Nine = 57, + Semicolon = 59/*,*/, + Equal = 61/*=*/, + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LeftBracket = 91/*[*/, + BACKSLASH = 92/*\*/, + RightBracket = 93/*]*/, + GraveAccent = 96/*`*/, + World1 = 161/*non-US#1*/, + World2 = 162/*non-US#2*/, + Esc = 256, + Enter = 257, + Tab = 258, + Backspace = 259, + Insert = 260, + Delete = 261, + Right = 262, + Left = 263, + Down = 264, + Up = 265, + PgUp = 266, + PgDown = 267, + Home = 268, + End = 269, + CapsLock = 280, + ScrollLock = 281, + NumLock = 282, + PrintScreen = 283, + Pause = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + NumPad0 = 320, + NumPad1 = 321, + NumPad2 = 322, + NumPad3 = 323, + NumPad4 = 324, + NumPad5 = 325, + NumPad6 = 326, + NumPad7 = 327, + NumPad8 = 328, + NumPad9 = 329, + NumPadDec = 330, + NumPadDiv = 331, + NumPadMul = 332, + NumPadSub = 333, + NumPadAdd = 334, + NumPadAnter = 335, + NumPadEqual = 336, + LeftShift = 340, + LeftControl = 341, + LeftAlt = 342, + LeftSuper = 343, + RightShift = 344, + RightControl = 345, + RightAlt = 346, + RightSuper = 347, + Menu = 348, + First = Space, + Last = Menu, + + } + + #pragma warning disable CA1707 + #pragma warning disable CA1712 + #pragma warning disable CA1008 + #pragma warning disable CA1027 + public enum Joystick : int + #pragma warning restore CA1027 + { + + Joystick_1 = GLconst.GLFW_JOYSTICK_1, + Joystick_2 = GLconst.GLFW_JOYSTICK_2, + Joystick_3 = GLconst.GLFW_JOYSTICK_3, + Joystick_4 = GLconst.GLFW_JOYSTICK_4, + Joystick_5 = GLconst.GLFW_JOYSTICK_5, + Joystick_6 = GLconst.GLFW_JOYSTICK_6, + Joystick_7 = GLconst.GLFW_JOYSTICK_7, + Joystick_8 = GLconst.GLFW_JOYSTICK_8, + Joystick_9 = GLconst.GLFW_JOYSTICK_9, + Joystick_10 = GLconst.GLFW_JOYSTICK_10, + Joystick_11 = GLconst.GLFW_JOYSTICK_11, + Joystick_12 = GLconst.GLFW_JOYSTICK_12, + Joystick_13 = GLconst.GLFW_JOYSTICK_13, + Joystick_14 = GLconst.GLFW_JOYSTICK_14, + Joystick_15 = GLconst.GLFW_JOYSTICK_15, + Joystick_16 = GLconst.GLFW_JOYSTICK_16, + First = Joystick_1, + Last = Joystick_16 + + } + + [System.Flags] + public enum Mouse : int + { + + Button1 = 0, + Button2 = 1, + Button3 = 2, + Button4 = 3, + Button5 = 4, + Button6 = 5, + Button7 = 6, + Button8 = 7, + First = Button1, + Last = Button8, + Left = Button1, + Right = Button2, + Middle = Button3 + + } + + #pragma warning restore CA1707 + #pragma warning restore CA1712 + #pragma warning restore CA7008 + + internal enum InputEquipment + { + + Keyboard, + Mouse, + Joystick + + } + + public enum KeyStatus : int + { + + RELEASE = 0, + PRESS = 1 + + } +} diff --git a/源代码/StgSharp/Controlling/KeyEventAttribute.cs b/源代码/StgSharp/Controlling/KeyEventAttribute.cs index f2546dff..d56ee7b1 100644 --- a/源代码/StgSharp/Controlling/KeyEventAttribute.cs +++ b/源代码/StgSharp/Controlling/KeyEventAttribute.cs @@ -36,7 +36,7 @@ using System.Threading.Tasks; namespace StgSharp { - [AttributeUsage(AttributeTargets.Method)] + [AttributeUsage( AttributeTargets.Method )] public class KeyEventAttribute : Attribute { @@ -44,27 +44,26 @@ namespace StgSharp internal int _keyStat; internal int _keyTarget; - public KeyEventAttribute(KeyboardKey key, KeyStatus status) + public KeyEventAttribute( KeyboardKey key, KeyStatus status ) { - _equipment = (int)InputEquipment.Keyboard; - _keyTarget = (int)key; - _keyStat = (int)status; + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )key; + _keyStat = ( int )status; } - public KeyEventAttribute(Joystick joystick, KeyStatus status) + public KeyEventAttribute( Joystick joystick, KeyStatus status ) { - _equipment = (int)InputEquipment.Keyboard; - _keyTarget = (int)joystick; - _keyStat = (int)status; + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )joystick; + _keyStat = ( int )status; } - public KeyEventAttribute(Mouse mouse, KeyStatus status) + public KeyEventAttribute( Mouse mouse, KeyStatus status ) { - _equipment = (int)InputEquipment.Keyboard; - _keyTarget = (int)mouse; - _keyStat = (int)status; + _equipment = ( int )InputEquipment.Keyboard; + _keyTarget = ( int )mouse; + _keyStat = ( int )status; } } - } diff --git a/源代码/StgSharp/Controlling/UsrActivity/IClickTrigger.cs b/源代码/StgSharp/Controlling/UsrActivity/IClickTrigger.cs new file mode 100644 index 00000000..327b8a32 --- /dev/null +++ b/源代码/StgSharp/Controlling/UsrActivity/IClickTrigger.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IClickTrigger.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public interface IClickTrigger + { + + public int TargetKeyOrButtonID + { + get; + } + + public KeyStatus TriggeredStatus + { + get; + } + + } +} diff --git a/源代码/StgSharp/Controlling/UsrActivity/JoystickTrigger.cs b/源代码/StgSharp/Controlling/UsrActivity/JoystickTrigger.cs index 621a20a0..a8d76f10 100644 --- a/源代码/StgSharp/Controlling/UsrActivity/JoystickTrigger.cs +++ b/源代码/StgSharp/Controlling/UsrActivity/JoystickTrigger.cs @@ -34,47 +34,57 @@ using System.Text; namespace StgSharp.Controlling.UsrActivity { - public struct JoystickTrigger : ITrigger, IEquatable + public readonly struct JoystickTrigger : IClickTrigger, IEquatable { - private KeyStatus _triggeredStat; - public Joystick Stick; + private readonly Joystick _stick; + private readonly KeyStatus _status; - public JoystickTrigger(Joystick targetKey) + public JoystickTrigger( Joystick targetKey, KeyStatus status ) { - this.Stick = targetKey; + this._stick = targetKey; + _status = status; } - public int TargetKeyOrButtonID => (int)Stick; + public int TargetKeyOrButtonID => ( int )_stick; - public KeyStatus TriggeredStatus => _triggeredStat; - - public override bool Equals(object obj) + public Joystick Stick { - return base.Equals(obj); + get => _stick; + } + + public KeyStatus TriggeredStatus => _status; + + public override bool Equals( object obj ) + { + return base.Equals( obj ); } public override int GetHashCode() { - return ((int)Stick) + (17 * ((int)_triggeredStat)); + return ( ( int )_stick ) + ( 17 * ( ( int )_status ) ); } public override string ToString() { - return $"Key {Stick} triggered when {_triggeredStat}"; + return $"Key {_stick} triggered when {_status}"; } - public static bool operator !=(JoystickTrigger left, JoystickTrigger right) + public static bool operator !=( + JoystickTrigger left, + JoystickTrigger right ) { - return !(left == right); + return !( left == right ); } - public static bool operator ==(JoystickTrigger left, JoystickTrigger right) + public static bool operator ==( + JoystickTrigger left, + JoystickTrigger right ) { - return (left._triggeredStat == right._triggeredStat) && (left.Stick == right.Stick); + return ( left._status == right._status ) && ( left._stick == right._stick ); } - bool IEquatable.Equals(JoystickTrigger other) + bool IEquatable.Equals( JoystickTrigger other ) { return other == this; } diff --git a/源代码/StgSharp/Controlling/UsrActivity/KeyTrigger.cs b/源代码/StgSharp/Controlling/UsrActivity/KeyTrigger.cs index ddf5b257..3988d883 100644 --- a/源代码/StgSharp/Controlling/UsrActivity/KeyTrigger.cs +++ b/源代码/StgSharp/Controlling/UsrActivity/KeyTrigger.cs @@ -35,31 +35,30 @@ using System.Text; namespace StgSharp.Controlling.UsrActivity { - - public struct KeyTrigger : ITrigger, IEquatable + public readonly struct KeyTrigger : IClickTrigger, IEquatable { - private KeyboardKey _targetKey; - private KeyStatus _triggerStat; + private readonly KeyboardKey _targetKey; + private readonly KeyStatus _triggerStat; - public KeyTrigger(KeyboardKey targetKey, KeyStatus targetStat) + public KeyTrigger( KeyboardKey targetKey, KeyStatus targetStat ) { this._targetKey = targetKey; this._triggerStat = targetStat; } - public int TargetKeyOrButtonID => (int)_targetKey; + public int TargetKeyOrButtonID => ( int )_targetKey; public KeyStatus TriggeredStatus => _triggerStat; - public override bool Equals(object obj) + public override bool Equals( object obj ) { - return base.Equals(obj); + return base.Equals( obj ); } public override int GetHashCode() { - return ((int)_targetKey) + (17 * ((int)_triggerStat)); + return ( ( int )_targetKey ) + ( 17 * ( ( int )_triggerStat ) ); } public override string ToString() @@ -67,17 +66,17 @@ namespace StgSharp.Controlling.UsrActivity return $"Key {_targetKey} triggered when {_triggerStat}"; } - public static bool operator !=(KeyTrigger left, KeyTrigger right) + public static bool operator !=( KeyTrigger left, KeyTrigger right ) { - return !(left == right); + return !( left == right ); } - public static bool operator ==(KeyTrigger left, KeyTrigger right) + public static bool operator ==( KeyTrigger left, KeyTrigger right ) { - return (left._triggerStat == right._triggerStat) && (left._targetKey == right._targetKey); + return ( left._triggerStat == right._triggerStat ) && ( left._targetKey == right._targetKey ); } - bool IEquatable.Equals(KeyTrigger other) + bool IEquatable.Equals( KeyTrigger other ) { return other == this; } diff --git a/源代码/StgSharp/Controlling/UsrActivity/MouseTrigger.cs b/源代码/StgSharp/Controlling/UsrActivity/MouseTrigger.cs new file mode 100644 index 00000000..9e9adbb3 --- /dev/null +++ b/源代码/StgSharp/Controlling/UsrActivity/MouseTrigger.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MouseTrigger.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Diagnostics.SymbolStore; +using System.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public readonly struct MouseTrigger : IClickTrigger, IEquatable + { + + private readonly KeyStatus _status; + private readonly Mouse _mouse; + + public MouseTrigger( Mouse mouse, KeyStatus status ) + { + _mouse = mouse; + _status = status; + } + + public int TargetKeyOrButtonID => ( int )_mouse; + + public KeyStatus TriggeredStatus => _status; + + public bool Equals( MouseTrigger other ) + { + return this == other; + } + + public static bool operator !=( MouseTrigger left, MouseTrigger right ) + { + return left._mouse != right._mouse || left._status != right._status; + } + + public static bool operator ==( MouseTrigger left, MouseTrigger right ) + { + return left._mouse == right._mouse && left._status == right._status; + } + + } +} diff --git a/源代码/StgSharp/Controlling/UsrActivity/TriggetFactory.cs b/源代码/StgSharp/Controlling/UsrActivity/TriggetFactory.cs new file mode 100644 index 00000000..fc377378 --- /dev/null +++ b/源代码/StgSharp/Controlling/UsrActivity/TriggetFactory.cs @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriggetFactory.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Text; + +namespace StgSharp.Controlling.UsrActivity +{ + public static class TriggetBuilder + { + + private const int JoystickMax = ( int )Joystick.Last + 1; + private const int JoystickMin = ( int )Joystick.First - 1; + private const int KeyboardMax = ( int )KeyboardKey.Last + 1; + private const int KeyboardMin = ( int )KeyboardKey.First - 1; + private const int MouseMax = ( int )Mouse.Last + 1; + private const int MouseMin = ( int )Mouse.First - 1; + + private static KeyTrigger keyboardtemp; + private static MouseTrigger mousetemp; + + public static JoystickTrigger BuildJoystickClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > MouseMin && keyCode < MouseMax ) { + return new JoystickTrigger( ( Joystick )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or key is not on joystick." ); + } + + public static KeyTrigger BuildKeyboardClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { + return new KeyTrigger( ( KeyboardKey )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or kay is not on keyboard." ); + } + + public static MouseTrigger BuildMouseClickTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode >= MouseMin && keyCode <= MouseMax ) { + return new MouseTrigger( ( Mouse )keyCode, status ); + } + throw new InvalidOperationException( + "Known key code or key is not on mouse." ); + } + + public static IClickTrigger BuildTrigger( + int keyCode, + KeyStatus status ) + { + if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { + return new KeyTrigger( ( KeyboardKey )keyCode, status ); + } + if( keyCode > JoystickMin && keyCode < JoystickMax ) { + return new JoystickTrigger( ( Joystick )keyCode, status ); + } + if( keyCode >= MouseMin && keyCode <= MouseMax ) { + return new MouseTrigger( ( Mouse )keyCode, status ); + } + throw new InvalidOperationException( "Known key code." ); + } + + } +} diff --git a/源代码/StgSharp/Data/GlobalData/root.cs b/源代码/StgSharp/Data/GlobalData/root.cs index 641997c0..ace664a2 100644 --- a/源代码/StgSharp/Data/GlobalData/root.cs +++ b/源代码/StgSharp/Data/GlobalData/root.cs @@ -52,6 +52,5 @@ namespace StgSharp return ret; } - }//------------------ end of class --------------------- } diff --git a/源代码/StgSharp/Data/InternalData.cs b/源代码/StgSharp/Data/InternalData.cs index d75f956a..a8b49493 100644 --- a/源代码/StgSharp/Data/InternalData.cs +++ b/源代码/StgSharp/Data/InternalData.cs @@ -96,8 +96,6 @@ namespace StgSharp } """; - #endregion - - + #endregion } } diff --git a/源代码/StgSharp/Data/Intrinsic/ColumnSet2.cs b/源代码/StgSharp/Data/Intrinsic/ColumnSet2.cs new file mode 100644 index 00000000..893bd350 --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/ColumnSet2.cs @@ -0,0 +1,90 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet2.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; +using StgSharp.Math; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet2 : IEquatable + { + + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + + internal ColumnSet2( Vector4 c0, Vector4 c1 ) + { + colum0 = c0; + colum1 = c1; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet2 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet2 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet2 left, ColumnSet2 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet2 left, ColumnSet2 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/ColumnSet3.cs b/源代码/StgSharp/Data/Intrinsic/ColumnSet3.cs new file mode 100644 index 00000000..f1e3fa3a --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/ColumnSet3.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet3.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; +using StgSharp.Math; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 12 * sizeof( float ), Pack = 16 )] + internal struct ColumnSet3 : IEquatable, IMat + { + + [FieldOffset( 0 * sizeof( float ) )] internal float m00; + [FieldOffset( 4 * sizeof( float ) )] internal float m01; + [FieldOffset( 8 * sizeof( float ) )] internal float m02; + [FieldOffset( 1 * sizeof( float ) )] internal float m10; + [FieldOffset( 5 * sizeof( float ) )] internal float m11; + [FieldOffset( 9 * sizeof( float ) )] internal float m12; + [FieldOffset( 2 * sizeof( float ) )] internal float m20; + [FieldOffset( 6 * sizeof( float ) )] internal float m21; + [FieldOffset( 10 * sizeof( float ) )] internal float m22; + [FieldOffset( 3 * sizeof( float ) )] internal float m30; + [FieldOffset( 7 * sizeof( float ) )] internal float m31; + [FieldOffset( 11 * sizeof( float ) )] internal float m32; + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vector4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vector4 colum2; + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet3 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet3 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet3 left, ColumnSet3 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet3 left, ColumnSet3 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/ColumnSet4.cs b/源代码/StgSharp/Data/Intrinsic/ColumnSet4.cs new file mode 100644 index 00000000..fa7b5006 --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/ColumnSet4.cs @@ -0,0 +1,110 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ColumnSet4.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp; +using StgSharp.Data.Intrinsic; +using StgSharp.Math; + +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Size = 16 * sizeof( float ) )] + internal struct ColumnSet4 : IEquatable, IMat + { + + [FieldOffset( 0 )] internal Vector4 colum0; + [FieldOffset( 16 )] internal Vector4 colum1; + [FieldOffset( 32 )] internal Vector4 colum2; + [FieldOffset( 48 )] internal Vector4 colum3; + + [FieldOffset( 0 )] public float m00; + + [FieldOffset( 16 )] public float m01; + + [FieldOffset( 32 )] public float m02; + + [FieldOffset( 48 )] public float m03; + [FieldOffset( 4 )] public float m10; + [FieldOffset( 20 )] public float m11; + [FieldOffset( 36 )] public float m12; + [FieldOffset( 52 )] public float m13; + [FieldOffset( 8 )] public float m20; + [FieldOffset( 24 )] public float m21; + [FieldOffset( 40 )] public float m22; + [FieldOffset( 56 )] public float m23; + [FieldOffset( 12 )] public float m30; + [FieldOffset( 28 )] public float m31; + [FieldOffset( 44 )] public float m32; + [FieldOffset( 60 )] public float m33; + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal ColumnSet4( + Vector4 colum0, + Vector4 colum1, + Vector4 colum2, + Vector4 colum3 ) + { + this.colum0 = colum0; + this.colum1 = colum1; + this.colum2 = colum2; + this.colum3 = colum3; + } + + public override bool Equals( object? obj ) + { + return ( obj is ColumnSet4 mat ) && Equals( mat ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool Equals( ColumnSet4 other ) + { + return colum0.Equals( other.colum0 ) && colum1.Equals( + other.colum1 ) && colum2.Equals( other.colum2 ) && colum3.Equals( + other.colum3 ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( ColumnSet4 left, ColumnSet4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( ColumnSet4 left, ColumnSet4 right ) + { + return left.Equals( right ); + } + + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/IRegisterType.cs b/源代码/StgSharp/Data/Intrinsic/IRegisterType.cs new file mode 100644 index 00000000..e4045f4b --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/IRegisterType.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IRegisterType.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Data.Intrinsic +{ + public interface IRegisterType + { + + public T Read( int index ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + ; + + public void Write( int index, T value ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible +#endif + ; + + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/IntrinsicContext.cs b/源代码/StgSharp/Data/Intrinsic/IntrinsicContext.cs new file mode 100644 index 00000000..80554e9e --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/IntrinsicContext.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IntrinsicContext.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct IntrinsicContext + { + + public delegate* unmanaged[Cdecl] transpose23; + public delegate* unmanaged[Cdecl] transpose24; + public delegate* unmanaged[Cdecl] transpose32; + public delegate* unmanaged[Cdecl] transpose33; + public delegate* unmanaged[Cdecl] transpose34; + public delegate* unmanaged[Cdecl] transpose42; + public delegate* unmanaged[Cdecl] transpose43; + public delegate* unmanaged[Cdecl] transpose44; + public delegate* unmanaged[Cdecl] det_mat_3; + public delegate* unmanaged[Cdecl] det_mat_4; + public delegate* unmanaged[Cdecl] normalize_v3; + public delegate* unmanaged[Cdecl] string_quickHash; + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/M128.cs b/源代码/StgSharp/Data/Intrinsic/M128.cs new file mode 100644 index 00000000..8a0060dc --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/M128.cs @@ -0,0 +1,193 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M128.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Math; +using System; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +#if NET5_0_OR_GREATER +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +#endif +using System.Text; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public unsafe struct M128 : IRegisterType + { + + [FieldOffset( 0 )] internal Vector4 vec; + + internal M128( Vector4 v ) + { + vec = v; + } + + public override bool Equals( [NotNullWhen( true )] object obj ) + { + if( obj is not M128 other ) { + return false; + } + return this == other; + } + + public override int GetHashCode() + { + return vec.GetHashCode(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public T Read( int index ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible + #endif + + { + fixed( Vector4* p = &vec ) { + #pragma warning disable CS8500 + return *( ( T* )p + index ); + #pragma warning restore CS8500 + } + } + + public override string ToString() + { + return string.Empty; + } + + public string ToString( int sample ) + { + string str = string.Empty; + for( int i = 15; i >= 0; i-- ) { + str += $"{Convert.ToString(Read(i), sample)} "; + } + return str; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Write( int index, T value ) + where T: struct +#if NET8_0_OR_GREATER + , INumber +#else + , IConvertible + #endif + { + fixed( Vector4* p = &vec ) { + #pragma warning disable CS8500 + *( ( T* )p + index ) = value; + #pragma warning restore CS8500 + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( M128 left, M128 right ) + { + return left.vec != right.vec; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( M128 left, M128 right ) + { + return left.vec == right.vec; + } + +#if NET5_0_OR_GREATER + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static explicit operator Vector128( M128 m ) + { + return m.vec.AsVector128().As(); + } + + #endif + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/M256.cs b/源代码/StgSharp/Data/Intrinsic/M256.cs new file mode 100644 index 00000000..9a4e1cba --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/M256.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="M256.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Data.Intrinsic +{ + [StructLayout( LayoutKind.Sequential )] + public unsafe struct M256 : IRegisterType + { + + private M128 v0; + private M128 v1; + + T IRegisterType.Read( int index ) + { + fixed( M128* mptr = &v0 ) { + return *( ( T* )mptr + index ); + } + } + + void IRegisterType.Write( int index, T value ) + { + fixed( M128* mptr = &v0 ) { + *( ( T* )mptr + index ) = value; + } + } + + } +} diff --git a/源代码/StgSharp/Data/Intrinsic/intrinsicContextProvider.cs b/源代码/StgSharp/Data/Intrinsic/intrinsicContextProvider.cs new file mode 100644 index 00000000..33c2ea63 --- /dev/null +++ b/源代码/StgSharp/Data/Intrinsic/intrinsicContextProvider.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="intrinsicContextProvider.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + +using System; +using System.Runtime.InteropServices; + +namespace StgSharp +{ + internal static unsafe partial class InternalIO + { + + private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext( + ); + + internal static IntrinsicContext Intrinsic + { + get => _intrinsicContext; + } + + [DllImport( + InternalIO.SSC_libName, + CallingConvention = CallingConvention.Cdecl, + EntryPoint = "load_intrinsic_function" )] + private static extern void LoadIntrinsicFunction( + IntrinsicContext* context ); + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Data/Lable.cs b/源代码/StgSharp/Data/Lable.cs new file mode 100644 index 00000000..978aebf4 --- /dev/null +++ b/源代码/StgSharp/Data/Lable.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Lable.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp; + +using System; +using System.Runtime.CompilerServices; + +namespace StgSharp.Data +{ + public class DataLabel + { + private readonly string _name; + + public DataLabel( string lableName ) + { + _name = lableName; + } + + public string Name + { + get => _name; + } + + public override unsafe int GetHashCode() + { + ReadOnlySpan nameSpan = _name.AsSpan(); + fixed( char* cptr = nameSpan ) { + return InternalIO.Intrinsic + .string_quickHash( cptr, _name.Length ); + } + } + + } + + public static class DataLabelBuilder + { + public static DataLabel AsLabel(this string name) + { + return new DataLabel(name); + } + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Data/RandomGenerator.cs b/源代码/StgSharp/Data/RandomGenerator.cs index c5e0203f..3115e04f 100644 --- a/源代码/StgSharp/Data/RandomGenerator.cs +++ b/源代码/StgSharp/Data/RandomGenerator.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Data; +using StgSharp.Data.Intrinsic; using System; using System.IO; @@ -46,38 +46,30 @@ namespace StgSharp.Data private byte[] currentKey; - private readonly byte[] originKey; private int cycleCount; private SHA512 hash; - public RandomGenerator() : this(DateTime.UtcNow.ToBinary()) - { + public RandomGenerator() : this( DateTime.UtcNow.ToBinary() ) { } - } - - public RandomGenerator(object source) + public RandomGenerator( object source ) { - try - { - if (source == null) - { - throw new ArgumentNullException(nameof(source)); + try { + if( source == null ) { + throw new ArgumentNullException( nameof( source ) ); } - XmlSerializer s = new XmlSerializer(source.GetType()); - using (StringWriter sw = new StringWriter()) - { - s.Serialize(sw, source); + XmlSerializer s = new XmlSerializer( source.GetType() ); + using( StringWriter sw = new StringWriter() ) { + s.Serialize( sw, source ); string data = sw.ToString(); - originKey = Encoding.UTF8.GetBytes(data); + originKey = Encoding.UTF8.GetBytes( data ); } } - catch (Exception) - { + catch( Exception ) { throw; } hash = SHA512.Create(); - originKey = hash.ComputeHash(originKey); + originKey = hash.ComputeHash( originKey ); currentKey = originKey; cycleCount = 0; } @@ -105,54 +97,44 @@ namespace StgSharp.Data /**/ - return source.Read(cycleCount % 4); + return source.Read( cycleCount % 4 ); } public byte GenRandomInt8() { cycleCount++; - if (cycleCount % 64 == 0) - { + if( cycleCount % 64 == 0 ) { PrivateRand(); } - return currentKey[cycleCount % 64]; + return currentKey[ cycleCount % 64 ]; } public float GenRandomSingle() { cycleCount++; - while (true) - { + while( true ) { M128 source = PrivateRand(); uint - temp0 = source.Read(0), - temp1 = source.Read(2); + temp0 = source.Read( 0 ), + temp1 = source.Read( 2 ); - if (temp0 * temp1 != 0) - { - float ret = ((temp0 % temp1) * 1.0f) / temp1; - if (ret < 0.335f) - { - ret = ret * ((ret * (-0.7811934f)) + 1.4489113f); + if( temp0 * temp1 != 0 ) { + float ret = ( ( temp0 % temp1 ) * 1.0f ) / temp1; + if( ret < 0.335f ) { + ret = ret * ( ( ret * ( -0.7811934f ) ) + 1.4489113f ); + } else { + ret = ( ret * ( ( ret * ( -0.1158368f ) ) + 1.0580600f ) ) + 0.0590584f; } - else - { - ret = (ret * ((ret * (-0.1158368f)) + 1.0580600f)) + 0.0590584f; - } - if (ret > 1) - { + if( ret > 1 ) { continue; } return ret; } - } - } - public void Reset() { currentKey = originKey; @@ -161,24 +143,27 @@ namespace StgSharp.Data private unsafe M128 PrivateRand() { - currentKey = hash.ComputeHash(currentKey); + currentKey = hash.ComputeHash( currentKey ); M128 ret; - fixed (byte* bptr = currentKey) - { - switch ((cycleCount % 16) / 4) - { + fixed( byte* bptr = currentKey ) { + switch( ( cycleCount % 16 ) / 4 ) { case 0: - ret = *(((M128*)bptr) + 0); break; + ret = *( ( ( M128* )bptr ) + 0 ); + break; case 1: - ret = *(((M128*)bptr) + 1); break; + ret = *( ( ( M128* )bptr ) + 1 ); + break; case 2: - ret = *(((M128*)bptr) + 2); break; + ret = *( ( ( M128* )bptr ) + 2 ); + break; case 3: - ret = *(((M128*)bptr) + 3); break; + ret = *( ( ( M128* )bptr ) + 3 ); + break; default: throw new InvalidOperationException(); } } + //Console.WriteLine(ret.ToString(16)); return ret; } diff --git a/源代码/StgSharp/Data/SSD/Area.cs b/源代码/StgSharp/Data/SSD/Area.cs index ae52916e..245e3b8d 100644 --- a/源代码/StgSharp/Data/SSD/Area.cs +++ b/源代码/StgSharp/Data/SSD/Area.cs @@ -39,12 +39,9 @@ using System.Threading.Tasks; namespace StgSharp.Data { /// - /// An independent storage area, used as the only folder type in root folder. - /// Contains several files reference as virtual disc. - /// Data is actually stored in s in certain RAID mode. + /// An independent storage area, used as the only folder type in root folder. Contains several + /// files reference as virtual disc. Data is actually stored in s in certain RAID mode. /// - public partial class Area - { - - } + public partial class Area { } } diff --git a/源代码/StgSharp/Data/SSD/DataHead.cs b/源代码/StgSharp/Data/SSD/DataHead.cs index 1e839b60..1f43dffc 100644 --- a/源代码/StgSharp/Data/SSD/DataHead.cs +++ b/源代码/StgSharp/Data/SSD/DataHead.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Collections; using System.Collections.Generic; @@ -38,52 +40,44 @@ using System.Text; namespace StgSharp.Data { - - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct SSDSegmentHead { + [FieldOffset( 12 )] internal byte size; - [FieldOffset(12)] internal byte size; - - [FieldOffset(0)] internal M128 data; - [FieldOffset(13)] public byte selfDefine_1; - [FieldOffset(14)] public byte selfDefine_2; - [FieldOffset(15)] public byte selfDefine_3; - - [FieldOffset(0)] public int globalID; - [FieldOffset(4)] public int nextID; - [FieldOffset(8)] public int previousHash; + [FieldOffset( 0 )] internal M128 data; + [FieldOffset( 13 )] public byte selfDefine_1; + [FieldOffset( 14 )] public byte selfDefine_2; + [FieldOffset( 15 )] public byte selfDefine_3; + [FieldOffset( 0 )] public int globalID; + [FieldOffset( 4 )] public int nextID; + [FieldOffset( 8 )] public int previousHash; public int Size { - get => ((int)size) + 1; + get => ( ( int )size ) + 1; set { - if ((value > 256) || (value < 0)) - { + if( ( value > 256 ) || ( value < 0 ) ) { throw new ArgumentOutOfRangeException(); } - size = (byte)(value - 1); + size = ( byte )( value - 1 ); } } public unsafe byte[] GetBytes() { byte[] ret = new byte[16]; - fixed (Vector4* vptr = &data.vec) - { - byte* bptr = (byte*)vptr; - for (int i = 0; i < 15; i++) - { - ret[i] = *bptr; + fixed( Vector4* vptr = &data.vec ) { + byte* bptr = ( byte* )vptr; + for( int i = 0; i < 15; i++ ) { + ret[ i ] = *bptr; } } return ret; } } - - } diff --git a/源代码/StgSharp/Data/SSD/DataSegment.cs b/源代码/StgSharp/Data/SSD/DataSegment.cs index ffa9de1e..8f863255 100644 --- a/源代码/StgSharp/Data/SSD/DataSegment.cs +++ b/源代码/StgSharp/Data/SSD/DataSegment.cs @@ -28,6 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; using StgSharp.Math; using System; @@ -40,38 +41,37 @@ using System.Threading.Tasks; namespace StgSharp.Data { - [StructLayout(LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16)] + [StructLayout( LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16 )] public unsafe struct SSDSegment : IComparable, IComparable { - [FieldOffset(16)] public fixed byte Data[16 * (StgSharp.ssdSegmentLength - 1)]; - [FieldOffset(12)] public int DataHash; - [FieldOffset(8)] public int PreviousHash; - [FieldOffset(0 * 16)] public SSDSegmentHead Head; + [FieldOffset( 16 )] public fixed byte Data[ + 16 * ( StgSharp.ssdSegmentLength - 1 ) ]; + [FieldOffset( 12 )] public int DataHash; + [FieldOffset( 8 )] public int PreviousHash; + [FieldOffset( 0 * 16 )] public SSDSegmentHead Head; - public SSDSegment(int previousHash) + public SSDSegment( int previousHash ) { this.PreviousHash = previousHash; } - public byte this[int index] + public byte this[ int index ] { get { - if (index > (16 * (StgSharp.ssdSegmentLength - 1)) - 1) - { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } - return Data[index]; + return Data[ index ]; } set { - if (index > (16 * (StgSharp.ssdSegmentLength - 1)) - 1) - { + if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } - Data[index] = value; + Data[ index ] = value; } } @@ -83,31 +83,27 @@ namespace StgSharp.Data public short Size => Head.size; - public void FillRandomBytes(int begin) + public void FillRandomBytes( int begin ) { - if (begin > 255) - { + if( begin > 255 ) { return; } - for (int i = begin; i < 255; i++) - { - Data[i] = Scaler.Random(); //TODO: 使用STGSHARP内部随机数工具处理它 + for( int i = begin; i < 255; i++ ) { + Data[ i ] = Scaler.Random(); //TODO: 使用STGSHARP内部随机数工具处理它 } } - public static SSDSegment FromStream(byte[] stream) + public static SSDSegment FromStream( byte[] stream ) { - if (stream.Length != 16 * StgSharp.ssdSegmentLength) - { + if( stream.Length != 16 * StgSharp.ssdSegmentLength ) { throw new ArgumentException(); } SSDSegment ret = new SSDSegment(); - fixed (byte* bptr = stream) - { - ret.Head.data = *(M128*)bptr; - for (int i = 1; i < StgSharp.ssdSegmentLength; i++) - { - ret.WriteData(i - 1, *(M128*)(bptr + (16 * i))); + fixed( byte* bptr = stream ) { + ret.Head.data = *( M128* )bptr; + for( int i = 1; i < StgSharp.ssdSegmentLength; i++ ) { + ret.WriteData( + i - 1, *( M128* )( bptr + ( 16 * i ) ) ); } } return ret; @@ -116,15 +112,12 @@ namespace StgSharp.Data public byte[] GetBytes() { byte[] ret = new byte[16 * StgSharp.ssdSegmentLength]; - fixed (M128* mptr = &Head.data) - { - fixed (byte* aptr = ret) - { - Vector4* vsptr = (Vector4*)mptr; - Vector4* vtptr = (Vector4*)aptr; - for (int i = 0; i < 18; i++) - { - *(vtptr + i) = *(vsptr + i); + fixed( M128* mptr = &Head.data ) { + fixed( byte* aptr = ret ) { + Vector4* vsptr = ( Vector4* )mptr; + Vector4* vtptr = ( Vector4* )aptr; + for( int i = 0; i < 18; i++ ) { + *( vtptr + i ) = *( vsptr + i ); } } } @@ -135,15 +128,13 @@ namespace StgSharp.Data public int GetDataHash() { Vector4 v = Vector4.One; - fixed (M128* mptr = &Head.data) - { - Vector4* vptr = (Vector4*)mptr; - for (int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1) - { - v += (*vptr) * 31; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1 ) { + v += ( *vptr ) * 31; } } - M128 m = new M128(v); + M128 m = new M128( v ); DataHash = m.vec.GetHashCode(); return DataHash; } @@ -151,45 +142,40 @@ namespace StgSharp.Data public override int GetHashCode() { int ret = 17; - fixed (M128* mptr = &Head.data) - { - Vector4* vptr = (Vector4*)mptr; - for (int i = 0; i < StgSharp.ssdSegmentLength; i++) - { - ret = (ret + (*vptr).GetHashCode()) * 31; + fixed( M128* mptr = &Head.data ) { + Vector4* vptr = ( Vector4* )mptr; + for( int i = 0; i < StgSharp.ssdSegmentLength; i++ ) { + ret = ( ret + ( *vptr ).GetHashCode() ) * 31; } } return ret; } - public unsafe T ReadData(int index) where T : struct + public unsafe T ReadData( int index ) where T: struct { - fixed (byte* bptr = Data) - { - T* tptr = (T*)bptr; - return *(tptr + index); + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + return *( tptr + index ); } } - public unsafe void WriteData(int index, T value) where T : struct + public unsafe void WriteData( int index, T value ) where T: struct { - fixed (byte* bptr = Data) - { - T* tptr = (T*)bptr; - *(tptr + index) = value; + fixed( byte* bptr = Data ) { + T* tptr = ( T* )bptr; + *( tptr + index ) = value; } } - int IComparable.CompareTo(int other) + int IComparable.CompareTo( int other ) { - return ID.CompareTo(other); + return ID.CompareTo( other ); } - int IComparable.CompareTo(SSDSegment other) + int IComparable.CompareTo( SSDSegment other ) { - return ID.CompareTo(other.ID); + return ID.CompareTo( other.ID ); } } - } diff --git a/源代码/StgSharp/Data/SSD/SSD.cs b/源代码/StgSharp/Data/SSD/SSD.cs index b5cc1805..30f9ae40 100644 --- a/源代码/StgSharp/Data/SSD/SSD.cs +++ b/源代码/StgSharp/Data/SSD/SSD.cs @@ -50,17 +50,19 @@ namespace StgSharp.Data fileList = new Dictionary(); } - public SSD(FileStream fileStream) + public SSD( FileStream fileStream ) { fileList = new Dictionary(); file = fileStream; } - public static SSD FromFile(string fileRoute) + public static SSD FromFile( string fileRoute ) { - return new SSD(new FileStream(fileRoute, FileMode.Open, FileAccess.Read)) { }; + return new SSD( + new FileStream( fileRoute, FileMode.Open, FileAccess.Read ) ) + { + }; } } - } diff --git a/源代码/StgSharp/Data/SSD/SSDVirtualFolder.cs b/源代码/StgSharp/Data/SSD/SSDVirtualFolder.cs index 24afdc03..4e1b9c71 100644 --- a/源代码/StgSharp/Data/SSD/SSDVirtualFolder.cs +++ b/源代码/StgSharp/Data/SSD/SSDVirtualFolder.cs @@ -49,19 +49,15 @@ namespace StgSharp.Data folders = new Dictionary(); } - internal SSDFolder(string name) + internal SSDFolder( string name ) { - if (name == "root") - { + if( name == "root" ) { throw new ArgumentException( - "Name cannot be root," + - "it is preserved for root file indexer."); + "Name cannot be root," + "it is preserved for root file indexer." ); } - if (name == "default") - { + if( name == "default" ) { throw new ArgumentException( - "Name cannot be default," + - "it is preserved for default file id provider."); + "Name cannot be default," + "it is preserved for default file id provider." ); } _name = name; folders = new Dictionary(); @@ -69,12 +65,11 @@ namespace StgSharp.Data public SerializableTypeCode SSDTypeCode => SerializableTypeCode.VirtualFolder; - public void FromBytes(byte[] stream) + public void FromBytes( byte[] stream ) { throw new NotImplementedException(); } - //TODO 虚拟文件夹的GetBytes好难写 public byte[] GetBytes() { diff --git a/源代码/StgSharp/Data/SSD/SSDraw.cs b/源代码/StgSharp/Data/SSD/SSDraw.cs index 44c6f23c..87a7e8f2 100644 --- a/源代码/StgSharp/Data/SSD/SSDraw.cs +++ b/源代码/StgSharp/Data/SSD/SSDraw.cs @@ -50,28 +50,30 @@ namespace StgSharp.Data.FileIO private byte[] data; - public SSDraw(string name, Stream streamSource) + public SSDraw( string name, Stream streamSource ) { - if ((streamSource == null) || (streamSource.Length == 0)) - { - throw new ArgumentNullException(nameof(streamSource)); + if( ( streamSource == null ) || ( streamSource.Length == 0 ) ) { + throw new ArgumentNullException( nameof( streamSource ) ); } Name = name; data = new byte[streamSource.Length]; - streamSource.Read(data.AsSpan()); + streamSource.Read( data.AsSpan() ); } - public SSDrawHead Head { get; set; } - public string Name { get; set; } + public SSDrawHead Head + { + get; + set; + } + + public string Name + { + get; + set; + } } - - [StructLayout(LayoutKind.Explicit, Size = 32 * 16)] - public unsafe struct SSDrawHead - { - - } - - + [StructLayout( LayoutKind.Explicit, Size = 32 * 16 )] + public unsafe struct SSDrawHead { } } diff --git a/源代码/StgSharp/Data/Serialize/Define.cs b/源代码/StgSharp/Data/Serialize/Define.cs index 1e8949c7..6cd30161 100644 --- a/源代码/StgSharp/Data/Serialize/Define.cs +++ b/源代码/StgSharp/Data/Serialize/Define.cs @@ -34,13 +34,8 @@ using System.Text; namespace StgSharp.Data { - /// /// A class contains a sets of methods to serialize several types /// - public static partial class Serializer - { - - - } + public static partial class Serializer { } } diff --git a/源代码/StgSharp/Data/Serialize/ISSDSerializable.cs b/源代码/StgSharp/Data/Serialize/ISSDSerializable.cs index 70b64c54..8dc7cd77 100644 --- a/源代码/StgSharp/Data/Serialize/ISSDSerializable.cs +++ b/源代码/StgSharp/Data/Serialize/ISSDSerializable.cs @@ -36,20 +36,23 @@ using System.Threading.Tasks; namespace StgSharp.Data { - public interface ISSDSerializable { - public SerializableTypeCode SSDTypeCode { get; } + public SerializableTypeCode SSDTypeCode + { + get; + } public byte[] GetBytes(); - internal void FromBytes(byte[] stream); + internal void FromBytes( byte[] stream ); } public enum SerializableTypeCode { + Unknown = 0, IndexTable = 1, PixelImage = 2, @@ -59,22 +62,23 @@ namespace StgSharp.Data Text = 6, RawData = 7, VirtualFolder = int.MaxValue, + } public static partial class Serializer { - public static T Deserialize(byte[] stream) where T : ISSDSerializable + public static T Deserialize( byte[] stream ) + where T: ISSDSerializable { T serializableObject = Activator.CreateInstance(); - serializableObject.FromBytes(stream); + serializableObject.FromBytes( stream ); return serializableObject; } - public static string GetNameTail(SerializableTypeCode typeCode) + public static string GetNameTail( SerializableTypeCode typeCode ) { - switch (typeCode) - { + switch( typeCode ) { case SerializableTypeCode.IndexTable: return "_idt"; case SerializableTypeCode.PixelImage: @@ -92,10 +96,11 @@ namespace StgSharp.Data case SerializableTypeCode.VirtualFolder: return "_fod"; default: - throw new ArgumentException("Unknown file type"); + throw new ArgumentException( "Unknown file type" ); } } - public static byte[] Serialize(ISSDSerializable serializableObject) + + public static byte[] Serialize( ISSDSerializable serializableObject ) { return serializableObject.GetBytes(); } diff --git a/源代码/StgSharp/Entities/BehaviorArgs.cs b/源代码/StgSharp/Entities/BehaviorArgs.cs index 692aa406..01cc4e09 100644 --- a/源代码/StgSharp/Entities/BehaviorArgs.cs +++ b/源代码/StgSharp/Entities/BehaviorArgs.cs @@ -30,8 +30,5 @@ //----------------------------------------------------------------------- namespace StgSharp.Entities { - public abstract class BehaviorArgs - { - - } + public abstract class BehaviorArgs { } } diff --git a/源代码/StgSharp/Entities/EliteEnemy.cs b/源代码/StgSharp/Entities/EliteEnemy.cs index e2c80638..26024854 100644 --- a/源代码/StgSharp/Entities/EliteEnemy.cs +++ b/源代码/StgSharp/Entities/EliteEnemy.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; @@ -43,9 +42,23 @@ namespace StgSharp.Entities internal LinkedList> _commonBulletLauncher; public bool _selectalbe; - public Launcher AwardLauncher { get; set; } - public Launcher DieBulletLauncher { get; set; } - public LinkedList> CommonBulletLauncher { get; set; } + public Launcher AwardLauncher + { + get; + set; + } + + public Launcher DieBulletLauncher + { + get; + set; + } + + public LinkedList> CommonBulletLauncher + { + get; + set; + } public virtual void OnRender() { @@ -55,8 +68,7 @@ namespace StgSharp.Entities public override void OnRenderFrame() { this.OnUpdate(); - foreach (Launcher launcher in CommonBulletLauncher) - { + foreach( Launcher launcher in CommonBulletLauncher ) { launcher.Launch(); } this.OnRender(); @@ -67,6 +79,5 @@ namespace StgSharp.Entities new NotImplementedException(); } - } } \ No newline at end of file diff --git a/源代码/StgSharp/Entities/Enemy.cs b/源代码/StgSharp/Entities/Enemy.cs index 503cd257..6b5a48cc 100644 --- a/源代码/StgSharp/Entities/Enemy.cs +++ b/源代码/StgSharp/Entities/Enemy.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - namespace StgSharp.Entities { public class Enemy : IEntity @@ -40,15 +39,28 @@ namespace StgSharp.Entities internal Launcher _dieBulletLauncher; public bool _selectalbe; - public Launcher AwardLauncher { get; set; } - public Launcher CommonBulletLauncher { get; set; } - public Launcher DieBulletLauncher { get; set; } + public Launcher AwardLauncher + { + get; + set; + } + + public Launcher CommonBulletLauncher + { + get; + set; + } + + public Launcher DieBulletLauncher + { + get; + set; + } public override void OnRenderFrame() { CommonBulletLauncher.Launch(); } - } } diff --git a/源代码/StgSharp/Entities/EntityPartical.cs b/源代码/StgSharp/Entities/EntityPartical.cs index 552832a1..9b654c1a 100644 --- a/源代码/StgSharp/Entities/EntityPartical.cs +++ b/源代码/StgSharp/Entities/EntityPartical.cs @@ -30,8 +30,5 @@ //----------------------------------------------------------------------- namespace StgSharp.Entities { - public abstract class EntityPartical : IEntity - { - - } + public abstract class EntityPartical : IEntity { } } diff --git a/源代码/StgSharp/Entities/IEntity.cs b/源代码/StgSharp/Entities/IEntity.cs index 925e9980..345394a9 100644 --- a/源代码/StgSharp/Entities/IEntity.cs +++ b/源代码/StgSharp/Entities/IEntity.cs @@ -40,7 +40,7 @@ namespace StgSharp { protected uint _bornTick; - internal Func _movHandler; + internal Func _movHandler; internal LinkedList _collisionBox; internal Point _basePoint; internal Point _pos; @@ -51,12 +51,20 @@ namespace StgSharp /// /// X position of an enenmy entity /// - public float X { get; set; } + public float X + { + get; + set; + } /// /// Y position of an enemy entity /// - public float Y { get; set; } + public float Y + { + get; + set; + } public LinkedList CollisionBox { @@ -73,16 +81,24 @@ namespace StgSharp set => _collisionSensor = value; } - public string TextureGL { get; set; } + public string TextureGL + { + get; + set; + } /// - /// A 2D vector presenting the position of an enemy entity, position can also be visited by X, Y + /// A 2D vector presenting the position of an enemy entity, position can also be visited by + /// X, Y /// - public vec2d Location { get; } + public Vec2 Location + { + get; + } public abstract void OnRenderFrame(); - public void SetLocation(Point p) + public void SetLocation( Point p ) { _pos = p; } diff --git a/源代码/StgSharp/Entities/Launcher.cs b/源代码/StgSharp/Entities/Launcher.cs index 49ba47fe..1a1073ee 100644 --- a/源代码/StgSharp/Entities/Launcher.cs +++ b/源代码/StgSharp/Entities/Launcher.cs @@ -33,7 +33,7 @@ using StgSharp.Math; namespace StgSharp { - public class Launcher where T : IEntity + public class Launcher where T: IEntity { internal uint[] launchtick; //发射子弹的内部计时 @@ -44,7 +44,7 @@ namespace StgSharp *用于发射其他的实体,主要是子弹 和 掉落物 */ - internal vec2d _center; //发射器的参考位置,运动轨迹的方程应当基于这个参考点构建 + internal Vec2 _center; //发射器的参考位置,运动轨迹的方程应当基于这个参考点构建 public EntityPartical Bullet { @@ -52,12 +52,7 @@ namespace StgSharp set => _bulletSample = value; } - internal virtual void Launch() - { - - } - - + internal virtual void Launch() { } } } diff --git a/源代码/StgSharp/Entities/Player.cs b/源代码/StgSharp/Entities/Player.cs index dae08276..1fed616b 100644 --- a/源代码/StgSharp/Entities/Player.cs +++ b/源代码/StgSharp/Entities/Player.cs @@ -37,7 +37,5 @@ namespace StgSharp public float Velocity => _velocity; - - } } diff --git a/源代码/StgSharp/Environment/ErrorDefine.cs b/源代码/StgSharp/Environment/ErrorDefine.cs index 92c5704c..05123fb7 100644 --- a/源代码/StgSharp/Environment/ErrorDefine.cs +++ b/源代码/StgSharp/Environment/ErrorDefine.cs @@ -39,11 +39,9 @@ namespace StgSharp public class UniformEmptyReferenceException : Exception { - public UniformEmptyReferenceException(string program, string name) : - base($"Location -1 returned when trying to find uniform {name} in shader program {program}") - { - - } + public UniformEmptyReferenceException( string program, string name ) + : base( + $"Location -1 returned when trying to find uniform {name} in shader program {program}" ) { } } } diff --git a/源代码/StgSharp/Environment/GlobalSetting.cs b/源代码/StgSharp/Environment/GlobalSetting.cs index 312c1c7d..205e9638 100644 --- a/源代码/StgSharp/Environment/GlobalSetting.cs +++ b/源代码/StgSharp/Environment/GlobalSetting.cs @@ -44,7 +44,7 @@ namespace StgSharp internal const int ssdSegmentLength = 16; - static byte[] _currentHash; + private static byte[] _currentHash; private static bool _inited; private static int _mainThreadID = -1; @@ -53,14 +53,12 @@ namespace StgSharp { get { - if (_currentHash == null) - { + if( _currentHash == null ) { string route = Assembly.GetExecutingAssembly().Location; string time = DateTime.UtcNow.ToString(); - using (SHA256 sh = SHA256.Create()) - { - byte[] bytes = Encoding.UTF8.GetBytes(route); - _currentHash = sh.ComputeHash(bytes); + using( SHA256 sh = SHA256.Create() ) { + byte[] bytes = Encoding.UTF8.GetBytes( route ); + _currentHash = sh.ComputeHash( bytes ); } } return _currentHash; @@ -69,26 +67,24 @@ namespace StgSharp public static int MainThreadID { - get => (_mainThreadID == -1) ? - throw new InvalidOperationException("StgSharp environment is not inited. " + - "Main thread id is not available") : _mainThreadID; + get => ( _mainThreadID == -1 ) ? + throw new InvalidOperationException( + "StgSharp environment is not inited. " + "Main thread id is not available" ) : _mainThreadID; } /// - /// CustomizeInit an instance of OpenGL program, - /// This method should be called before any other StgSharp api. + /// CustomizeInit an instance of OpenGL program, This method should be called before any + /// other StgSharp api. /// - public static void InitGL(int majorVersion, int minorVersion) + public static void InitGL( int majorVersion, int minorVersion ) { - if (API == default) - { + if( API == default ) { API = GraphicAPI.GL; } - if (API != GraphicAPI.GL) - { + if( API != GraphicAPI.GL ) { return; } - InternalIO.InternalInitGL(majorVersion, minorVersion); + InternalIO.InternalInitGL( majorVersion, minorVersion ); } public static class GlobalSetting @@ -101,7 +97,7 @@ namespace StgSharp get => vsyncActivated; set { - InternalIO.glfwSwapInterval(value ? 1 : 0); + InternalIO.glfwSwapInterval( value ? 1 : 0 ); vsyncActivated = value; } } diff --git a/源代码/StgSharp/Environment/Monitors.cs b/源代码/StgSharp/Environment/Monitors.cs index f6f8fe3d..753ed36b 100644 --- a/源代码/StgSharp/Environment/Monitors.cs +++ b/源代码/StgSharp/Environment/Monitors.cs @@ -48,13 +48,13 @@ namespace StgSharp { get { - if (monitorsArray == null) - { + if( monitorsArray == null ) { int count = 0; - IntPtr* arrayhandle = InternalIO.glfwGetMonitors(&count); + IntPtr* arrayhandle = InternalIO.glfwGetMonitors( &count ); monitorsArray = new IntPtr[count]; - Marshal.Copy((IntPtr)arrayhandle, monitorsArray, 0, count); - Marshal.FreeHGlobal((IntPtr)arrayhandle); + Marshal.Copy( + ( IntPtr )arrayhandle, monitorsArray, 0, count ); + Marshal.FreeHGlobal( ( IntPtr )arrayhandle ); } return monitorsArray; } @@ -62,10 +62,8 @@ namespace StgSharp public static IntPtr DefaultMonitor { - get { return MonitorsHandleArray[0]; } + get { return MonitorsHandleArray[ 0 ]; } } } - - } diff --git a/源代码/StgSharp/Environment/Platform.cs b/源代码/StgSharp/Environment/Platform.cs index 9334ce4e..98e17b18 100644 --- a/源代码/StgSharp/Environment/Platform.cs +++ b/源代码/StgSharp/Environment/Platform.cs @@ -60,18 +60,19 @@ namespace StgSharp { internal enum GraphicAPI : byte { + GL, DX, VK + } public static partial class StgSharp { /// - /// Version of current StgSharp platform. - /// Main version represent in hundred's digit, - /// and sub version represent in ten's digit. + /// Version of current StgSharp platform. Main version represent in hundred's digit, and sub + /// version represent in ten's digit. /// public const long version = 430; @@ -85,38 +86,39 @@ namespace StgSharp mainTimeProvider = new StgSharpTime(); MainTimeProvider.StartProvidingTime(); InternalIO.glfwInit(); - InternalIO.InternalAppendLog("\n\n\n"); + InternalIO.InternalAppendLog( "\n\n\n" ); InternalIO.InternalWriteLog( $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", - LogType.Info); + LogType.Info ); _mainThreadID = Environment.CurrentManagedThreadId; } - public static void LogError(Exception ex) + public static void LogError( Exception ex ) { - InternalIO.InternalWriteLog(ex.Message, LogType.Error); + InternalIO.InternalWriteLog( ex.Message, LogType.Error ); } - public static void LogInfo(string log) + public static void LogInfo( string log ) { - InternalIO.InternalWriteLog(log, LogType.Info); + InternalIO.InternalWriteLog( log, LogType.Info ); } - public static void LogWarning(string log) + public static void LogWarning( string log ) { - InternalIO.InternalWriteLog(log, LogType.Warning); - } - public static void LogWarning(Exception notVerySeriesException) - { - InternalIO.InternalWriteLog(notVerySeriesException.Message, LogType.Warning); + InternalIO.InternalWriteLog( log, LogType.Warning ); } - public static void Mark(bool needConsole) + public static void LogWarning( Exception notVerySeriesException ) + { + InternalIO.InternalWriteLog( + notVerySeriesException.Message, LogType.Warning ); + } + + public static void Mark( bool needConsole ) { markCount++; - if (needConsole) - { - Console.WriteLine(markCount); + if( needConsole ) { + Console.WriteLine( markCount ); } } @@ -132,68 +134,60 @@ namespace StgSharp bool isConsole, [CallerFilePath] string filePath = "", [CallerMemberName] string callerName = "", - [CallerLineNumber] int lineNumber = 0 - ) + [CallerLineNumber] int lineNumber = 0 ) { Type t = target.GetType(); string log = $"Tracked object: {nameof(target)}\t\tType:{t.Name}\n"; - FieldInfo[] fieldInfo = t.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); + FieldInfo[] fieldInfo = t.GetFields( + BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance ); log += "|\tFieldName\t|\tFieldType\t|\tFieldValue\t|\n"; - foreach (FieldInfo field in fieldInfo) - { + foreach( FieldInfo field in fieldInfo ) { log += $"|{field.Name}\t\t|{field.FieldType}\t\t|{field.GetValue(target)}\t\t|\n"; } log += $"Tracking at:\n{filePath}\t{callerName}\tline {lineNumber}\n"; log += $"Additional information:\n{message}\n"; - if (isConsole) - { - Console.WriteLine(log); - } - else - { - InternalIO.InternalWriteLog(log, LogType.Info); + if( isConsole ) { + Console.WriteLine( log ); + } else { + InternalIO.InternalWriteLog( log, LogType.Info ); } } /// /// Write a log message to log file, and mark the _level of this message. /// - /// A string contains information of how current evironment runs. - /// The severity of current message. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static void WriteLog(string message, LogType logType) + /// A string contains information of how current evironment runs. + /// The severity of current message. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static void WriteLog( string message, LogType logType ) { - InternalIO.InternalWriteLog(message, logType); + InternalIO.InternalWriteLog( message, logType ); } - internal static TDele ConvertAPI(IntPtr funcPtr) + internal static TDele ConvertAPI( IntPtr funcPtr ) { - if (funcPtr == IntPtr.Zero) - { - throw new Exception("Failed to convert api, the function pointer is zero."); + if( funcPtr == IntPtr.Zero ) { + throw new Exception( + "Failed to convert api, the function pointer is zero." ); } - try - { - return Marshal.GetDelegateForFunctionPointer(funcPtr); + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr ); } - catch (Exception) - { + catch( Exception ) { throw; } } - internal static Delegate ConvertAPI(IntPtr funcPtr, Type T) + internal static Delegate ConvertAPI( IntPtr funcPtr, Type T ) { - if (funcPtr == IntPtr.Zero) - { - throw new Exception("Failed to convert api, the function pointer is zero."); + if( funcPtr == IntPtr.Zero ) { + throw new Exception( + "Failed to convert api, the function pointer is zero." ); } - try - { - return Marshal.GetDelegateForFunctionPointer(funcPtr, T); + try { + return Marshal.GetDelegateForFunctionPointer( funcPtr, T ); } - catch (Exception) - { + catch( Exception ) { throw; } } diff --git a/源代码/StgSharp/Environment/globalKeyStat.cs b/源代码/StgSharp/Environment/globalKeyStat.cs index 9ed4c49c..afddb8ab 100644 --- a/源代码/StgSharp/Environment/globalKeyStat.cs +++ b/源代码/StgSharp/Environment/globalKeyStat.cs @@ -37,18 +37,16 @@ using System.Threading.Tasks; namespace StgSharp { - public static partial class StgSharp { private static ConcurrentDictionary keyListener = new ConcurrentDictionary(); - public static KeyStatus CheckKey(KeyboardKey key) + public static KeyStatus CheckKey( KeyboardKey key ) { - return keyListener.GetOrAdd((int)key, KeyStatus.RELEASE); + return keyListener.GetOrAdd( ( int )key, KeyStatus.RELEASE ); } - } } diff --git a/源代码/StgSharp/Geometries/Coordination/CoordinationBase.cs b/源代码/StgSharp/Geometries/Coordination/CoordinationBase.cs index bec389d7..e86c9be5 100644 --- a/源代码/StgSharp/Geometries/Coordination/CoordinationBase.cs +++ b/源代码/StgSharp/Geometries/Coordination/CoordinationBase.cs @@ -45,9 +45,7 @@ namespace StgSharp.Geometries private CoordinationBase localCoordination; private Matrix44 coordMat; - - public CoordinationBase( - CoordinationBase localCoordination) + public CoordinationBase( CoordinationBase localCoordination ) { this.localCoordination = localCoordination; coordMat = new Matrix44(); @@ -55,23 +53,23 @@ namespace StgSharp.Geometries public virtual Point LocalOrigin { - get => new Point(coordMat.colum3.XYZ); + get => new Point( coordMat.colum3.XYZ ); internal set => coordMat.colum3.XYZ = value.Coord; } - public virtual vec3d LocalX + public virtual Vec3 LocalX { get => coordMat.colum0.XYZ; internal set => coordMat.colum0.XYZ = value; } - public virtual vec3d LocalY + public virtual Vec3 LocalY { get => coordMat.colum1.XYZ; internal set => coordMat.colum1.XYZ = value; } - public virtual vec3d LocalZ + public virtual Vec3 LocalZ { get => coordMat.colum2.XYZ; set => coordMat.colum2.XYZ = value; diff --git a/源代码/StgSharp/Geometries/Coordination/PlainCoordinate.cs b/源代码/StgSharp/Geometries/Coordination/PlainCoordinate.cs index 1535bdf6..e8624a1e 100644 --- a/源代码/StgSharp/Geometries/Coordination/PlainCoordinate.cs +++ b/源代码/StgSharp/Geometries/Coordination/PlainCoordinate.cs @@ -41,23 +41,22 @@ namespace StgSharp.Geometries { private static PlainCoordinate statndardPlainCoordination = new PlainCoordinate( - null, new Point(0, 0, 0), - new vec3d(1, 0, 0), - new vec3d(0, 1, 0) - ); + null, new Point( 0, 0, 0 ), new Vec3( 1, 0, 0 ), + new Vec3( 0, 1, 0 ) ); public PlainCoordinate( CoordinationBase local, Point origin, - vec3d xAxis, - vec3d yAxis - ) : base(local) + Vec3 xAxis, + Vec3 yAxis ) + : base( local ) { CoordMat = Matrix44.Unit; - CoordMat.colum0 = new vec4d(xAxis, 0); - CoordMat.colum1 = new vec4d(yAxis, 0); - CoordMat.colum2 = new vec4d(Linear.Normalize(Vec3d.Cross(xAxis, yAxis)), 0); + CoordMat.colum0 = new Vec4( xAxis, 0 ); + CoordMat.colum1 = new Vec4( yAxis, 0 ); + CoordMat.colum2 = new Vec4( + Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); LocalOrigin = origin; } diff --git a/源代码/StgSharp/Geometries/Coordination/SpaceCoordinate.cs b/源代码/StgSharp/Geometries/Coordination/SpaceCoordinate.cs index f6797ffe..4e83172d 100644 --- a/源代码/StgSharp/Geometries/Coordination/SpaceCoordinate.cs +++ b/源代码/StgSharp/Geometries/Coordination/SpaceCoordinate.cs @@ -40,11 +40,12 @@ namespace StgSharp.Geometries { public SpaceCoordinate( - CoordinationBase localCoordination, Point origin, - vec3d xAxis, vec3d yAxis, vec3d zAxis - ) : base(localCoordination) - { - } + CoordinationBase localCoordination, + Point origin, + Vec3 xAxis, + Vec3 yAxis, + Vec3 zAxis ) + : base( localCoordination ) { } } } diff --git a/源代码/StgSharp/Geometries/GemoryException.cs b/源代码/StgSharp/Geometries/GemoryException.cs index cea81165..1189a134 100644 --- a/源代码/StgSharp/Geometries/GemoryException.cs +++ b/源代码/StgSharp/Geometries/GemoryException.cs @@ -36,20 +36,19 @@ namespace StgSharp.Geometries public unsafe class ToUpperDimensionException : Exception { - protected ToUpperDimensionException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - public ToUpperDimensionException() - { - } + protected ToUpperDimensionException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } - public ToUpperDimensionException(string message) : base(message) - { - } + public ToUpperDimensionException() { } - public ToUpperDimensionException(string message, Exception innerException) : base(message, innerException) - { - } + public ToUpperDimensionException( string message ) : base( message ) { } + + public ToUpperDimensionException( + string message, + Exception innerException ) + : base( message, innerException ) { } } @@ -59,20 +58,17 @@ namespace StgSharp.Geometries public class UnusedVertexException : Exception { - protected UnusedVertexException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - public UnusedVertexException() - { - } + protected UnusedVertexException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } - public UnusedVertexException(string message) : base(message) - { - } + public UnusedVertexException() { } - public UnusedVertexException(string message, Exception innerException) : base(message, innerException) - { - } + public UnusedVertexException( string message ) : base( message ) { } + + public UnusedVertexException( string message, Exception innerException ) + : base( message, innerException ) { } } } diff --git a/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs b/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs index fc75902d..c8833636 100644 --- a/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs +++ b/源代码/StgSharp/Geometries/GeometryOperation/GeometryOperation.cs @@ -39,8 +39,10 @@ using System.Text; namespace StgSharp.Geometries { - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate vec3d GeometryMotionDelegate(TimeSpanProvider timeSource, out float rotation); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate Vec3 GeometryMotionDelegate( + TimeSpanProvider timeSource, + out float rotation ); public class GeometryMotion { @@ -54,69 +56,60 @@ namespace StgSharp.Geometries public unsafe GeometryMotion( bool isIncreament, TimeSpanProvider timeSource, - GeometryMotionDelegate motionDelegate - ) + GeometryMotionDelegate motionDelegate ) { isIncrementMode = isIncreament; time = timeSource; - if (motionDelegate == null) - { - handle = (IntPtr)(delegate*)&defaultMotion; + if( motionDelegate == null ) { + handle = ( IntPtr )( delegate* )&defaultMotion; movement = defaultMotion; - } - else if (motionDelegate.Method.IsStatic) - { + } else if( motionDelegate.Method.IsStatic ) { sourceIsStatic = true; - handle = Marshal.GetFunctionPointerForDelegate(motionDelegate); + handle = Marshal.GetFunctionPointerForDelegate( motionDelegate ); movement = motionDelegate; - } - else - { + } else { movement = motionDelegate; } + //sourceIsStatic = false; } public bool IsIncrement { get => isIncrementMode; - } public static GeometryMotion DefaultMotion { - get => new GeometryMotion(true, null, null); + get => new GeometryMotion( true, null, null ); } - public unsafe void RunMotion(ref vec3d coord, ref float rotation) + public unsafe void RunMotion( ref Vec3 coord, ref float rotation ) { float rot; - vec3d vec; - if (sourceIsStatic) - { - vec = ((delegate* unmanaged[Cdecl])handle)(time, out rot); - } - else - { - vec = movement(time, out rot); + Vec3 vec; + if( sourceIsStatic ) { + vec = ( ( delegate* unmanaged[Cdecl] )handle )( + time, out rot ); + } else { + vec = movement( time, out rot ); } - if (isIncrementMode) - { + if( isIncrementMode ) { coord += vec; rotation += rot; - } - else - { + } else { coord = vec; rotation = rot; } } - private static vec3d defaultMotion(TimeSpanProvider provider, out float rotation) + private static Vec3 defaultMotion( + TimeSpanProvider provider, + out float rotation ) { rotation = 0; - return Vec3d.Zero; + return Vec3.Zero; } }//------------------------------- End of Class ------------------------------- diff --git a/源代码/StgSharp/Geometries/GeometryScaler/Angle.cs b/源代码/StgSharp/Geometries/GeometryScaler/Angle.cs index a1b3ee58..4c072d97 100644 --- a/源代码/StgSharp/Geometries/GeometryScaler/Angle.cs +++ b/源代码/StgSharp/Geometries/GeometryScaler/Angle.cs @@ -42,46 +42,46 @@ namespace StgSharp.Math internal const float DegToRad = 180 / Scaler.Pi; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Cos(Radius r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Radius r ) { - return MathF.Cos(r._radius); + return MathF.Cos( r._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Cos(Degree r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( Degree r ) { - return MathF.Cos(r._degree / DegToRad); + return MathF.Cos( r._degree / DegToRad ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Sin(Radius r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Radius r ) { - return MathF.Sin(r._radius); + return MathF.Sin( r._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Sin(Degree r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sin( Degree r ) { - return MathF.Sin(r._degree / DegToRad); + return MathF.Sin( r._degree / DegToRad ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Tan(Radius r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Radius r ) { - return MathF.Tan(r._radius); + return MathF.Tan( r._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Tan(Degree r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Tan( Degree r ) { - return MathF.Tan(r._degree / DegToRad); + return MathF.Tan( r._degree / DegToRad ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Degree ToDegree(float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Degree ToDegree( float value ) { - return new Degree(value); + return new Degree( value ); } } @@ -91,14 +91,14 @@ namespace StgSharp.Math internal float _degree; - internal Degree(float dgree) + internal Degree( float dgree ) { _degree = dgree; } - public static implicit operator Radius(Degree d) + public static implicit operator Radius( Degree d ) { - return new Radius(d._degree / GeometryScaler.DegToRad); + return new Radius( d._degree / GeometryScaler.DegToRad ); } } @@ -108,70 +108,70 @@ namespace StgSharp.Math internal float _radius; - [Obsolete("Unsafe, you may forget this is radius.", true)] + [Obsolete( "Unsafe, you may forget this is radius.", true )] public Radius() { } - public Radius(float radius) + public Radius( float radius ) { _radius = radius; } public static Radius Zero { - get => new Radius(0); + get => new Radius( 0 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Radius operator -(Radius r) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius r ) { - return new Radius(-r._radius); + return new Radius( -r._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Radius operator -(Radius left, Radius Right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator -( Radius left, Radius Right ) { - return new Radius(left._radius - Right._radius); + return new Radius( left._radius - Right._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(Radius left, Radius right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Radius left, Radius right ) { return left._radius != right._radius; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Radius operator *(Radius left, float right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator *( Radius left, float right ) { - return new Radius(left._radius * right); + return new Radius( left._radius * right ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Radius operator /(Radius left, float right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator /( Radius left, float right ) { - return new Radius(left._radius / right); + return new Radius( left._radius / right ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float operator /(Radius left, Radius right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator /( Radius left, Radius right ) { return left._radius / right._radius; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Radius operator +(Radius left, Radius Right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Radius operator +( Radius left, Radius Right ) { - return new Radius(left._radius + Right._radius); + return new Radius( left._radius + Right._radius ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(Radius left, Radius right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Radius left, Radius right ) { return left._radius == right._radius; } - public static implicit operator Degree(Radius r) + public static implicit operator Degree( Radius r ) { - return new Degree((r._radius * 180) / Scaler.Pi); + return new Degree( ( r._radius * 180 ) / Scaler.Pi ); } } diff --git a/源代码/StgSharp/Geometries/IGeometry.cs b/源代码/StgSharp/Geometries/IGeometry.cs index 5934dc97..22fda049 100644 --- a/源代码/StgSharp/Geometries/IGeometry.cs +++ b/源代码/StgSharp/Geometries/IGeometry.cs @@ -42,19 +42,23 @@ namespace StgSharp.Geometries public interface IGeometry { - public Point this[int index] + public Point this[ int index ] { get; set; } -#pragma warning disable CA1819 - public vec4d[] VertexStream -#pragma warning restore CA1819 + #pragma warning disable CA1819 + public Vec4[] VertexStream + #pragma warning restore CA1819 + { + get; + } + + public CoordinationBase Coordination { get; } - public CoordinationBase Coordination { get; } public int VertexCount { diff --git a/源代码/StgSharp/Geometries/IGeomtryBuffer.cs b/源代码/StgSharp/Geometries/IGeomtryBuffer.cs index f43cc279..3dc01ff7 100644 --- a/源代码/StgSharp/Geometries/IGeomtryBuffer.cs +++ b/源代码/StgSharp/Geometries/IGeomtryBuffer.cs @@ -36,9 +36,5 @@ using System.Threading.Tasks; namespace StgSharp.Geometries { - public interface IGeomtryBuffer - { - - - } + public interface IGeomtryBuffer { } } diff --git a/源代码/StgSharp/Geometries/IInstancing.cs b/源代码/StgSharp/Geometries/IInstancing.cs index efb9083c..33e26535 100644 --- a/源代码/StgSharp/Geometries/IInstancing.cs +++ b/源代码/StgSharp/Geometries/IInstancing.cs @@ -45,24 +45,25 @@ namespace StgSharp.Geometries public float Rotation { - get { return GlobalBuffer.CoordAndRotationList[BufferId].W; } + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].W; } set { - vec4d temp = GlobalBuffer.CoordAndRotationList[BufferId]; + Vec4 temp = GlobalBuffer.CoordAndRotationList[ BufferId ]; temp.W = value; - GlobalBuffer.CoordAndRotationList[BufferId] = temp; + GlobalBuffer.CoordAndRotationList[ BufferId ] = temp; } } public float Scale { - get { return GlobalBuffer.ScalingList[BufferId]; } - set { GlobalBuffer.ScalingList[BufferId] = value; } + get { return GlobalBuffer.ScalingList[ BufferId ]; } + set { GlobalBuffer.ScalingList[ BufferId ] = value; } } public GeometryMotion Motion { - get; set; + get; + set; } public IInstancingBuffer GlobalBuffer @@ -77,25 +78,25 @@ namespace StgSharp.Geometries internal set; } - public vec3d CenterPositionGlobal + public Vec3 CenterPositionGlobal { get; internal set; } - public vec3d Coord + public Vec3 Coord { - get { return GlobalBuffer.CoordAndRotationList[BufferId].XYZ; } - set { GlobalBuffer.CoordAndRotationList[BufferId] = new vec4d(value.vec); } + get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } + set { GlobalBuffer.CoordAndRotationList[ BufferId ] = new Vec4( + value.vec ); } } public void Move() { - (vec3d coord, float rotation) = (Coord, Rotation); - Motion.RunMotion(ref coord, ref rotation); + (Vec3 coord, float rotation) = (Coord, Rotation); + Motion.RunMotion( ref coord, ref rotation ); (Coord, Rotation) = (coord, rotation); } } - } diff --git a/源代码/StgSharp/Geometries/IInstancingBuffer.cs b/源代码/StgSharp/Geometries/IInstancingBuffer.cs index 23705fc0..85e0841b 100644 --- a/源代码/StgSharp/Geometries/IInstancingBuffer.cs +++ b/源代码/StgSharp/Geometries/IInstancingBuffer.cs @@ -39,19 +39,35 @@ namespace StgSharp.Geometries public interface IInstancingBuffer { - public Span CoordAndRotationSpan { get; } + public Span CoordAndRotationSpan + { + get; + } - public Span ScalingSpan { get; } + public Span ScalingSpan + { + get; + } - internal IGeometry TypicalShape { get; } + internal IGeometry TypicalShape + { + get; + } - internal List InstanceList { get; } + internal List InstanceList + { + get; + } - internal List CoordAndRotationList { get; } - - internal List ScalingList { get; } + internal List CoordAndRotationList + { + get; + } + internal List ScalingList + { + get; + } } - } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Cordinate.cs b/源代码/StgSharp/Geometries/PlainGeometry/Cordinate.cs index 215abcca..b90df786 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Cordinate.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Cordinate.cs @@ -40,7 +40,7 @@ using System.Threading.Tasks; namespace StgSharp.Geometries { - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public struct PartialPlainCoordinate { @@ -49,40 +49,36 @@ namespace StgSharp.Geometries /// /// The origin of this coordinate. /// - public vec3d origin; + public Vec3 origin; - public PartialPlainCoordinate - ( - vec3d origin, - vec3d horiziontial, - vec3d vertical - ) + public PartialPlainCoordinate( + Vec3 origin, + Vec3 horiziontial, + Vec3 vertical ) { this.origin = origin; axis = new Matrix32(); -#if NET5_0_OR_GREATER - Unsafe.SkipInit(out axis.mat); -#endif + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out axis.mat ); + #endif axis.colum0 = horiziontial; axis.colum1 = vertical; } /// - /// The horizontial axis of the coordinate. - /// Point to the right direction. + /// The horizontial axis of the coordinate. Point to the right direction. /// - public vec3d axis_H => axis.colum0; + public Vec3 axis_H => axis.colum0; /// - /// The vertical axis of the coordinate. - /// Point to the top direction. + /// The vertical axis of the coordinate. Point to the top direction. /// - public vec3d axis_V => axis.colum1; + public Vec3 axis_V => axis.colum1; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public vec3d GetRealLocate(vec2d raletiveLocation) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public Vec3 GetRealLocate( Vec2 raletiveLocation ) { - return origin + axis.VerticalVecMultiply(raletiveLocation); + return origin + axis.VerticalVecMultiply( raletiveLocation ); } } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Define/GeometryOperation.cs b/源代码/StgSharp/Geometries/PlainGeometry/Define/GeometryOperation.cs index cae7f18c..dbd0206c 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Define/GeometryOperation.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Define/GeometryOperation.cs @@ -34,16 +34,14 @@ using System.Runtime.CompilerServices; namespace StgSharp.Geometries { - public static unsafe class GeometryOperation { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static vec3d DefaultMotion(int tick) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 DefaultMotion( int tick ) { - return default(vec3d); + return default( Vec3 ); } } - } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Define/IPlainEntity.cs b/源代码/StgSharp/Geometries/PlainGeometry/Define/IPlainEntity.cs index b79f2ee8..a6773c55 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Define/IPlainEntity.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -38,39 +38,39 @@ using System.Threading.Tasks; namespace StgSharp.Geometries { - public interface IPlainEntity { - public vec2d CenterPosition { get; set; } + public Vec2 CenterPosition + { + get; + set; + } - public bool CollideWith(IPlainEntity entity); + public bool CollideWith( IPlainEntity entity ); } - - public class PlainEntity : IPlainEntity { private PlainGeometry _shape; - public PlainEntity(PlainGeometry shape) + public PlainEntity( PlainGeometry shape ) { _shape = shape; } - bool IPlainEntity.CollideWith(IPlainEntity entity) + bool IPlainEntity.CollideWith( IPlainEntity entity ) { throw new NotImplementedException(); } - vec2d IPlainEntity.CenterPosition + Vec2 IPlainEntity.CenterPosition { get => _shape.Coordination.LocalOrigin.Coord.XY; set => throw new InvalidOperationException(); } } - } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/源代码/StgSharp/Geometries/PlainGeometry/Define/ParticleOnPlain.cs index 44f3a1f6..d9581574 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Define/ParticleOnPlain.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -43,15 +43,14 @@ namespace StgSharp.Geometries public class ParticleOnPlain : IInstancing, IPlainEntity { - public ParticleOnPlain(PlainInstancingBuffer buffer) + public ParticleOnPlain( PlainInstancingBuffer buffer ) { - if (buffer == null) - { - throw new ArgumentNullException(paramName: nameof(buffer)); + if( buffer == null ) { + throw new ArgumentNullException( paramName: nameof( buffer ) ); } GlobalBuffer = buffer; BufferId = buffer.CreateInstanceID(); - ((IInstancingBuffer)buffer).InstanceList.Add(this); + ( ( IInstancingBuffer )buffer ).InstanceList.Add( this ); } public GeometryMotion Motion @@ -72,21 +71,20 @@ namespace StgSharp.Geometries set; } - vec3d IInstancing.CenterPositionGlobal + Vec3 IInstancing.CenterPositionGlobal { get; set; } - - bool IPlainEntity.CollideWith(IPlainEntity entity) + bool IPlainEntity.CollideWith( IPlainEntity entity ) { throw new NotImplementedException(); } - vec2d IPlainEntity.CenterPosition + Vec2 IPlainEntity.CenterPosition { - get => GlobalBuffer.CoordAndRotationList[BufferId].XY; + get => GlobalBuffer.CoordAndRotationList[ BufferId ].XY; set => throw new NotImplementedException(); } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainGeometry.cs b/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainGeometry.cs index 3b1f7ac7..dd5466bf 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainGeometry.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -42,33 +42,31 @@ namespace StgSharp.Geometries public abstract class PlainGeometry : IGeometry { - protected vec4d[] vertexMat; + protected Vec4[] vertexMat; internal CoordinationBase coordinate; - - internal PlainGeometry(CoordinationBase coordination) + internal PlainGeometry( CoordinationBase coordination ) { coordinate = coordination; } - public Point this[int index] + public Point this[ int index ] { - get => new Point(vertexMat[index]); - set => vertexMat[index].vec = value.coordVec; + get => new Point( vertexMat[ index ] ); + set => vertexMat[ index ].vec = value.coordVec; } - public int VertexCount => this.vertexMat.Length; - public abstract ReadOnlySpan VertexIndices { get; } + public abstract ReadOnlySpan VertexIndices + { + get; + } -#pragma warning disable CA1819 - public vec4d[] VertexStream => vertexMat; + #pragma warning disable CA1819 + public Vec4[] VertexStream => vertexMat; public CoordinationBase Coordination => this.coordinate; #pragma warning restore CA1819 - - - } } \ No newline at end of file diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs index 7359fe27..86e54b61 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -44,26 +44,24 @@ using System.Threading.Tasks; namespace StgSharp.Geometries { - public class PlainInstancingBuffer : - IDisposable, IEnumerable, IInstancingBuffer - where T : - IInstancing + public class PlainInstancingBuffer : IDisposable, IEnumerable, IInstancingBuffer + where T: IInstancing { private bool disposedValue; private CoordinatePlain globalCorrdinnate; - private List coordList; + private List coordList; private List instanceList; private List scalingList; private Mutex mutex; public PlainInstancingBuffer() { - coordList = new List(capacity: 100); - instanceList = new List(capacity: 100); - scalingList = new List(capacity: 100); - coordArray = Array.Empty(); + coordList = new List( capacity: 100 ); + instanceList = new List( capacity: 100 ); + scalingList = new List( capacity: 100 ); + coordArray = Array.Empty(); scaleArray = Array.Empty(); mutex = new Mutex(); } @@ -73,7 +71,7 @@ namespace StgSharp.Geometries get => instanceList; } - public List CoordAndRotationList + public List CoordAndRotationList { get => coordList; } @@ -83,25 +81,25 @@ namespace StgSharp.Geometries get => scalingList; } - public Span CoordAndRotationSpan + public Span CoordAndRotationSpan { get { - if (coordArray.Length != coordList.Capacity) - { - FieldInfo fieldInfo = typeof(List). - GetField("_items", BindingFlags.NonPublic | BindingFlags.Instance); - if (fieldInfo == null) - { -#pragma warning disable CA1065 -#pragma warning disable CA2201 + if( coordArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 throw new NullReferenceException(); -#pragma warning restore CA2201 -#pragma warning restore CA1065 + #pragma warning restore CA2201 + #pragma warning restore CA1065 } - coordArray = (vec4d[])fieldInfo.GetValue(coordList); + coordArray = ( Vec4[] )fieldInfo.GetValue( coordList ); } - return new Span(coordArray, 0, coordList.Count); + return new Span( coordArray, 0, coordList.Count ); } } @@ -109,21 +107,21 @@ namespace StgSharp.Geometries { get { - if (scaleArray.Length != coordList.Capacity) - { - FieldInfo fieldInfo = typeof(List). - GetField("_items", BindingFlags.NonPublic | BindingFlags.Instance); - if (fieldInfo == null) - { -#pragma warning disable CA1065 -#pragma warning disable CA2201 + if( scaleArray.Length != coordList.Capacity ) { + FieldInfo fieldInfo = typeof( List ). + GetField( + "_items", + BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) { + #pragma warning disable CA1065 + #pragma warning disable CA2201 throw new NullReferenceException(); -#pragma warning restore CA2201 -#pragma warning restore CA1065 + #pragma warning restore CA2201 + #pragma warning restore CA1065 } - scaleArray = (float[])fieldInfo.GetValue(scalingList); + scaleArray = ( float[] )fieldInfo.GetValue( scalingList ); } - return new Span(scaleArray, 0, coordList.Count); + return new Span( scaleArray, 0, coordList.Count ); } } @@ -131,8 +129,8 @@ namespace StgSharp.Geometries { mutex.WaitOne(); int ret = instanceList.Count; - coordList.Add(new vec4d()); - scalingList.Add(0); + coordList.Add( new Vec4() ); + scalingList.Add( 0 ); mutex.ReleaseMutex(); return ret; } @@ -144,55 +142,51 @@ namespace StgSharp.Geometries public void Dispose() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + Dispose( disposing: true ); + GC.SuppressFinalize( this ); } public IEnumerator GetEnumerator() { - foreach (IInstancing item in instanceList) - { - yield return (T)item; + foreach( IInstancing item in instanceList ) { + yield return ( T )item; } } - public void Remove(T instance) + public void Remove( T instance ) { mutex.WaitOne(); - if (instance.GlobalBuffer != this) - { + if( instance.GlobalBuffer != this ) { throw new ArgumentException( message: "instance does not belong to current Particle Buffer", - paramName: nameof(instance)); + paramName: nameof( instance ) ); } int index = instance.BufferId; - IInstancing temp = instanceList[instanceList.Count - 1]; - instanceList[instance.BufferId] = temp; + IInstancing temp = instanceList[ instanceList.Count - 1 ]; + instanceList[ instance.BufferId ] = temp; temp.BufferId = instance.BufferId; - coordList[instance.BufferId] = coordList[coordList.Count - 1]; - scalingList[instance.BufferId] = scalingList[scalingList.Count - 1]; + coordList[ instance.BufferId ] = coordList[ coordList.Count - 1 ]; + scalingList[ instance.BufferId ] = scalingList[ + scalingList.Count - 1 ]; - instanceList.RemoveAt(instanceList.Count - 1); - coordList.RemoveAt(coordList.Count - 1); - scalingList.RemoveAt(scalingList.Count - 1); + instanceList.RemoveAt( instanceList.Count - 1 ); + coordList.RemoveAt( coordList.Count - 1 ); + scalingList.RemoveAt( scalingList.Count - 1 ); mutex.ReleaseMutex(); } public void UpdateAllParticles() { - foreach (IInstancing particle in instanceList) - { + foreach( IInstancing particle in instanceList ) { particle.Move(); } } - protected virtual void Dispose(bool disposing) + protected virtual void Dispose( bool disposing ) { - if (!disposedValue) - { - if (disposing) - { + if( !disposedValue ) { + if( disposing ) { mutex.Dispose(); } @@ -205,21 +199,19 @@ namespace StgSharp.Geometries IEnumerator IEnumerable.GetEnumerator() { - foreach (IInstancing item in instanceList) - { - yield return (T)item; + foreach( IInstancing item in instanceList ) { + yield return ( T )item; } } - IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException(); + IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException( + ); #region field of mem opt - vec4d[] coordArray; - float[] scaleArray; - - #endregion - + private Vec4[] coordArray; + private float[] scaleArray; + #endregion } } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Parallelogram.cs b/源代码/StgSharp/Geometries/PlainGeometry/Parallelogram.cs index cd623745..98b877de 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Parallelogram.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Parallelogram.cs @@ -38,52 +38,50 @@ namespace StgSharp.Geometries public class Parallelogram : Polygon4 { - internal readonly Func movCenterOperation = - new Func(GeometryOperation.DefaultMotion); + internal readonly Func movCenterOperation = + new Func( GeometryOperation.DefaultMotion ); internal Point center; public Parallelogram( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base( - v0x, v0y, v1x, v1y, - v2x, v2y, v3x, v3y - ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) { -#if DEBUG - if ( - this[0].Coord + this[2].Coord != - this[1].Coord + this[3].Coord - ) - { - InternalIO.InternalWriteLog("Init of geometry item failed, because four vertices cannot form a rectangle.", LogType.Warning); + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); } -#endif + #endif } public Parallelogram( PlainCoordinate coordination, - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base(coordination, - v0x, v0y, v1x, v1y, - v2x, v2y, v3x, v3y - ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) { -#if DEBUG - if ( - this[0].Coord + this[2].Coord != - this[1].Coord + this[3].Coord - ) - { - InternalIO.InternalWriteLog("Init of geometry item failed, because four vertices cannot form a rectangle.", LogType.Warning); + #if DEBUG + if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + InternalIO.InternalWriteLog( + "Init of geometry item failed, because four vertices cannot form a rectangle.", + LogType.Warning ); } -#endif + #endif } } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Plain.cs b/源代码/StgSharp/Geometries/PlainGeometry/Plain.cs index 4eccfc4b..2338a379 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Plain.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Plain.cs @@ -38,52 +38,54 @@ namespace StgSharp.Geometries { internal readonly float d = -1; - internal vec3d origin; + internal Vec3 origin; - internal vec3d plainParameter; - internal vec3d vec1; - internal vec3d vec2; + internal Vec3 plainParameter; + internal Vec3 vec1; + internal Vec3 vec2; - internal Plain(Vector4 origin, Vector4 p1, Vector4 p2) + internal Plain( Vector4 origin, Vector4 p1, Vector4 p2 ) { - this.origin = new vec3d(origin); + this.origin = new Vec3( origin ); - vec1 = new vec3d(p1 - origin); - vec2 = new vec3d(p2 - origin); + vec1 = new Vec3( p1 - origin ); + vec2 = new Vec3( p2 - origin ); } - public Plain(vec3d o, vec3d v1, vec3d v2) + public Plain( Vec3 o, Vec3 v1, Vec3 v2 ) { this.origin = o; - this.vec1 = v1 - (v2 * (v1.Y / v2.Y)); //计算平面在xz平面上的方向投影 - this.vec2 = v2 - (vec1 * (v2.X / v1.X)); //计算平面在yz平面上的方向投影 + this.vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + this.vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; - plainParameter.Z = origin.Z - (vec1.Z * (origin.X / vec1.X)) - (vec2.Z * (origin.Y / vec2.Y)); + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y - plainParameter.X = vec1.X * (vec1.Z / plainParameter.Z); - plainParameter.Y = vec2.Y * (vec2.Z / plainParameter.Z); + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); plainParameter.X = 1 / plainParameter.X; plainParameter.Y = 1 / plainParameter.Y; plainParameter.Z = 1 / plainParameter.Z; } - public Plain(Point p1, Point p2, Point p3) + public Plain( Point p1, Point p2, Point p3 ) { - vec3d origin = p1.Coord; - vec3d v1 = p2.Coord - origin; - vec3d v2 = p3.Coord - origin; + Vec3 origin = p1.Coord; + Vec3 v1 = p2.Coord - origin; + Vec3 v2 = p3.Coord - origin; - vec1 = v1 - (v2 * (v1.Y / v2.Y)); //计算平面在xz平面上的方向投影 - vec2 = v2 - (vec1 * (v2.X / v1.X)); //计算平面在yz平面上的方向投影 + vec1 = v1 - ( v2 * ( v1.Y / v2.Y ) ); //计算平面在xz平面上的方向投影 + vec2 = v2 - ( vec1 * ( v2.X / v1.X ) ); //计算平面在yz平面上的方向投影 //|origin|-k1*|vec1|-k2*|vec2|计算plainParameter.Z; - plainParameter.Z = origin.Z - (vec1.Z * (origin.X / vec1.X)) - (vec2.Z * (origin.Y / vec2.Y)); + plainParameter.Z = origin.Z - ( vec1.Z * ( origin.X / vec1.X ) ) - ( vec2.Z * ( origin.Y / vec2.Y ) ); + //根据plainParameter.Z和对应的方向矢量计算plainParameter.X和plainParameter.Y - plainParameter.X = vec1.X * (vec1.Z / plainParameter.Z); - plainParameter.Y = vec2.Y * (vec2.Z / plainParameter.Z); + plainParameter.X = vec1.X * ( vec1.Z / plainParameter.Z ); + plainParameter.Y = vec2.Y * ( vec2.Z / plainParameter.Z ); plainParameter.X = 1 / plainParameter.X; plainParameter.Y = 1 / plainParameter.Y; diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Polygon4.cs b/源代码/StgSharp/Geometries/PlainGeometry/Polygon4.cs index a95ab543..7af184cc 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Polygon4.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Polygon4.cs @@ -41,17 +41,17 @@ namespace StgSharp.Geometries protected static int[] Indices = [0, 1, 2, 0, 2, 3]; - internal Polygon4() : base(PlainCoordinate.StandardPlainCoordination) + internal Polygon4() + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[4]; + vertexMat = new Vec4[4]; } - internal Polygon4(vec4d[] rawCoord) : - base(PlainCoordinate.StandardPlainCoordination) + internal Polygon4( Vec4[] rawCoord ) + : base( PlainCoordinate.StandardPlainCoordination ) { - if (rawCoord.Length != 4) - { - throw new ArgumentOutOfRangeException(nameof(rawCoord)); + if( rawCoord.Length != 4 ) { + throw new ArgumentOutOfRangeException( nameof( rawCoord ) ); } vertexMat = rawCoord; } @@ -60,61 +60,67 @@ namespace StgSharp.Geometries Point topLeft, Point topRight, Point bottomRight, - Point bottomLeft - ) : base(PlainCoordinate.StandardPlainCoordination) + Point bottomLeft ) + : base( PlainCoordinate.StandardPlainCoordination ) { - this[0] = topLeft; - this[1] = topRight; - this[2] = bottomRight; - this[3] = bottomLeft; - + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; } - - public Polygon4(CoordinationBase coordinate, + public Polygon4( + CoordinationBase coordinate, PlainCoordinate coordination, Point topLeft, Point topRight, Point bottomRight, - Point bottomLeft - ) : base(coordinate) + Point bottomLeft ) + : base( coordinate ) { - this[0] = topLeft; - this[1] = topRight; - this[2] = bottomRight; - this[3] = bottomLeft; - + this[ 0 ] = topLeft; + this[ 1 ] = topRight; + this[ 2 ] = bottomRight; + this[ 3 ] = bottomLeft; } public Polygon4( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base(PlainCoordinate.StandardPlainCoordination) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[4]; + vertexMat = new Vec4[4]; - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); - this[3] = new Point(v3x, v3y, 0); + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); } public Polygon4( PlainCoordinate coordination, - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base(coordination) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination ) { - vertexMat = new vec4d[4]; + vertexMat = new Vec4[4]; - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); - this[3] = new Point(v3x, v3y, 0); + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); } public override ReadOnlySpan VertexIndices => Indices; diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Polygon5.cs b/源代码/StgSharp/Geometries/PlainGeometry/Polygon5.cs index 87034d28..3ddbc743 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Polygon5.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Polygon5.cs @@ -41,42 +41,53 @@ namespace StgSharp.Geometries internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4]; - public unsafe Polygon5() : base(PlainCoordinate.StandardPlainCoordination) + public unsafe Polygon5() + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[5]; + vertexMat = new Vec4[5]; } public Polygon5( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y, - float v4x, float v4y - ) : base(PlainCoordinate.StandardPlainCoordination) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[5]; - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); - this[3] = new Point(v3x, v3y, 0); - this[4] = new Point(v4x, v4y, 0); + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); } public Polygon5( PlainCoordinate coordination, - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y, - float v4x, float v4y - ) : base(coordination) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y, + float v4x, + float v4y ) + : base( coordination ) { - vertexMat = new vec4d[5]; - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); - this[3] = new Point(v3x, v3y, 0); - this[4] = new Point(v4x, v4y, 0); + vertexMat = new Vec4[5]; + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); + this[ 3 ] = new Point( v3x, v3y, 0 ); + this[ 4 ] = new Point( v4x, v4y, 0 ); } public override ReadOnlySpan VertexIndices => Indices; diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Polygon6.cs b/源代码/StgSharp/Geometries/PlainGeometry/Polygon6.cs index e6c42dad..be3813b0 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Polygon6.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Polygon6.cs @@ -41,30 +41,31 @@ namespace StgSharp.Geometries internal static int[] Indices = [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5]; - public Polygon6() : base(PlainCoordinate.StandardPlainCoordination) + public Polygon6() + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[6]; + vertexMat = new Vec4[6]; } public Polygon6( PlainCoordinate coordination, - vec2d vert0, - vec2d vert1, - vec2d vert2, - vec2d vert3, - vec2d vert4, - vec2d vert5, - vec2d vert6 - ) : base(coordination) + Vec2 vert0, + Vec2 vert1, + Vec2 vert2, + Vec2 vert3, + Vec2 vert4, + Vec2 vert5, + Vec2 vert6 ) + : base( coordination ) { - vertexMat = new vec4d[6]; - vertexMat[0].vec = vert0.vec; - vertexMat[1].vec = vert1.vec; - vertexMat[2].vec = vert2.vec; - vertexMat[3].vec = vert3.vec; - vertexMat[4].vec = vert4.vec; - vertexMat[5].vec = vert5.vec; - vertexMat[6].vec = vert6.vec; + vertexMat = new Vec4[6]; + vertexMat[ 0 ].vec = vert0.vec; + vertexMat[ 1 ].vec = vert1.vec; + vertexMat[ 2 ].vec = vert2.vec; + vertexMat[ 3 ].vec = vert3.vec; + vertexMat[ 4 ].vec = vert4.vec; + vertexMat[ 5 ].vec = vert5.vec; + vertexMat[ 6 ].vec = vert6.vec; } public override ReadOnlySpan VertexIndices => Indices; diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Rectangle.cs b/源代码/StgSharp/Geometries/PlainGeometry/Rectangle.cs index e3cecb75..30aacf82 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Rectangle.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Rectangle.cs @@ -38,59 +38,54 @@ namespace StgSharp.Geometries { public Rectangle( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base( - v0x, v0y, - v1x, v1y, - v2x, v2y, - v3x, v3y - ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) { -#if DEBUG - vec2d side0 = (this[0].Coord - this[1].Coord).XY; - vec2d side1 = (this[2].Coord - this[1].Coord).XY; - if (side0.Cross(side1) == 0) - { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { throw new ArgumentException(); } -#endif + #endif } - public Rectangle( PlainCoordinate coordination, - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y - ) : base(coordination, - v0x, v0y, - v1x, v1y, - v2x, v2y, - v3x, v3y - ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( coordination, v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) { -#if DEBUG - vec2d side0 = (this[0].Coord - this[1].Coord).XY; - vec2d side1 = (this[2].Coord - this[1].Coord).XY; - if (side0.Cross(side1) == 0) - { + #if DEBUG + Vec2 side0 = ( this[ 0 ].Coord - this[ 1 ].Coord ).XY; + Vec2 side1 = ( this[ 2 ].Coord - this[ 1 ].Coord ).XY; + if( side0.Cross( side1 ) == 0 ) { throw new ArgumentException(); } -#endif + #endif } /// /// Calculate movement to center /// - /// CurrentBlueprint time tick + /// CurrentBlueprint time tick /// - public virtual vec3d MovCenter(uint tick) + public virtual Vec3 MovCenter( uint tick ) { - return default(vec3d); + return default( Vec3 ); } } diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Square.cs b/源代码/StgSharp/Geometries/PlainGeometry/Square.cs index e97fc2c3..c4a5ce8a 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Square.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Square.cs @@ -34,7 +34,6 @@ using System.Numerics; namespace StgSharp.Geometries { - /// /// A square /// @@ -42,21 +41,18 @@ namespace StgSharp.Geometries { public Square( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y, - float v3x, float v3y) - : base(v0x, v0y, - v1x, v1y, - v2x, v2y, - v3x, v3y) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) + : base( v0x, v0y, v1x, v1y, v2x, v2y, v3x, v3y ) { - if (true) - { - - } + if( true ) { } } - } } \ No newline at end of file diff --git a/源代码/StgSharp/Geometries/PlainGeometry/Triangle.cs b/源代码/StgSharp/Geometries/PlainGeometry/Triangle.cs index 60d53318..04933c7f 100644 --- a/源代码/StgSharp/Geometries/PlainGeometry/Triangle.cs +++ b/源代码/StgSharp/Geometries/PlainGeometry/Triangle.cs @@ -37,60 +37,64 @@ using System.Numerics; namespace StgSharp.Geometries { - - public unsafe class Triangle : PlainGeometry { internal static int[] Indices = [0, 1, 2]; - public Triangle() : base(PlainCoordinate.StandardPlainCoordination) + public Triangle() + : base( PlainCoordinate.StandardPlainCoordination ) { - vertexMat = new vec4d[3]; + vertexMat = new Vec4[3]; + } + + public Triangle( Point vertex01, Point vertex02, Point vertex03 ) + : base( PlainCoordinate.StandardPlainCoordination ) + { + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; } public Triangle( + PlainCoordinate coordination, Point vertex01, Point vertex02, - Point vertex03 - ) : base(PlainCoordinate.StandardPlainCoordination) + Point vertex03 ) + : base( coordination ) { - this[0] = vertex01; - this[1] = vertex02; - this[2] = vertex03; - } - - public Triangle(PlainCoordinate coordination, - Point vertex01, - Point vertex02, - Point vertex03 - ) : base(coordination) - { - this[0] = vertex01; - this[1] = vertex02; - this[2] = vertex03; + this[ 0 ] = vertex01; + this[ 1 ] = vertex02; + this[ 2 ] = vertex03; } public Triangle( - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y - ) : base(PlainCoordinate.StandardPlainCoordination) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( PlainCoordinate.StandardPlainCoordination ) { - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); } - public Triangle(PlainCoordinate coordination, - float v0x, float v0y, - float v1x, float v1y, - float v2x, float v2y - ) : base(coordination) + public Triangle( + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) + : base( coordination ) { - this[0] = new Point(v0x, v0y, 0); - this[1] = new Point(v1x, v1y, 0); - this[2] = new Point(v2x, v2y, 0); + this[ 0 ] = new Point( v0x, v0y, 0 ); + this[ 1 ] = new Point( v1x, v1y, 0 ); + this[ 2 ] = new Point( v2x, v2y, 0 ); } public override ReadOnlySpan VertexIndices => Indices; diff --git a/源代码/StgSharp/Geometries/Point.cs b/源代码/StgSharp/Geometries/Point.cs index 0f0f9496..9731a2cc 100644 --- a/源代码/StgSharp/Geometries/Point.cs +++ b/源代码/StgSharp/Geometries/Point.cs @@ -38,37 +38,39 @@ using System.Text; namespace StgSharp.Geometries { - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct Point { - [FieldOffset(0)] private vec3d coord; - [FieldOffset(0)] internal Vector4 coordVec; + [FieldOffset( 0 )] private Vec3 coord; + [FieldOffset( 0 )] internal Vector4 coordVec; - internal Point(vec4d vector) + internal Point( Vec4 vector ) { coordVec = vector.vec; coordVec.W = 1; } - public Point(vec3d coord) + public Point( Vec3 coord ) { Coord = coord; coordVec.W = 1; } - public Point(float x, float y, float z) + public Point( float x, float y, float z ) { - coordVec = new Vector4(x, y, z, 1); + coordVec = new Vector4( x, y, z, 1 ); } - public vec3d Coord + public Vec3 Coord { get => coord; - set { coord = value; coordVec.W = 1; } + set + { + coord = value; + coordVec.W = 1; + } } - - } } diff --git a/源代码/StgSharp/Geometries/SpaceGeometry/Class1.cs b/源代码/StgSharp/Geometries/SpaceGeometry/Class1.cs index 26a650a2..1a2d98c1 100644 --- a/源代码/StgSharp/Geometries/SpaceGeometry/Class1.cs +++ b/源代码/StgSharp/Geometries/SpaceGeometry/Class1.cs @@ -34,7 +34,5 @@ using System.Text; namespace StgSharp.Geometries.SpaceGeometry { - internal class Class1 - { - } + internal class Class1 { } } diff --git a/源代码/StgSharp/Graphics/CPUanimation/IImageProvider.cs b/源代码/StgSharp/Graphics/CPUanimation/IImageProvider.cs index b86e8674..1741e253 100644 --- a/源代码/StgSharp/Graphics/CPUanimation/IImageProvider.cs +++ b/源代码/StgSharp/Graphics/CPUanimation/IImageProvider.cs @@ -36,6 +36,8 @@ namespace StgSharp.Graphics { public interface IImageProvider { + Image ProvideImage(); + } } diff --git a/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs b/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs index e7f3fe2d..e41a960a 100644 --- a/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs +++ b/源代码/StgSharp/Graphics/CPUanimation/ImageHelper.cs @@ -30,23 +30,35 @@ //----------------------------------------------------------------------- using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; namespace StgSharp.Graphics { public static class ImageHelper { - public static void Resize(Image i, int width, int height, ImageMovement move) + + public static void Resize( + Image i, + int width, + int height, + ImageMovement move ) { - if (i == null) - { - throw new ArgumentNullException(nameof(i)); + if( i == null ) { + throw new ArgumentNullException( nameof( i ) ); } - Array.Resize(ref i.Data, width * height * i.PixelSize); + if( i.Size == (width, height) ) { + return; + } + if( !Enum.IsDefined( typeof( ImageMovement ), move ) ) { + throw new InvalidEnumArgumentException( nameof( move ) ); + } + byte[] oldData = i.Data; + i.Data = new byte[width * height * i.PixelSize]; i.Height = height; i.Width = width; - switch (move) - { + i.PixelUpdateCount++; + switch( move ) { case ImageMovement.Discard: break; case ImageMovement.Top: @@ -54,8 +66,8 @@ namespace StgSharp.Graphics default: throw new NotImplementedException(); } - i.PixelUpdateCount++; } + } [Flags] @@ -63,7 +75,7 @@ namespace StgSharp.Graphics { #pragma warning disable CA1008 Discard = 0, -#pragma warning restore CA1008 + #pragma warning restore CA1008 Top = 1, Bottom = 2, Left = 4, @@ -72,5 +84,6 @@ namespace StgSharp.Graphics BottomLeft = Bottom | Left, TopRight = Top | Right, BottomRight = Bottom | Right, + } } diff --git a/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs b/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs index cd0d5847..69eb900d 100644 --- a/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs +++ b/源代码/StgSharp/Graphics/Define/BufferObjectBase.cs @@ -52,31 +52,31 @@ namespace StgSharp.Graphics /// /// /// - public GlHandle this[int index] => _bufferHandle[index]; + public GlHandle this[ int index ] => _bufferHandle[ index ]; /// /// Bind a buffer instance to OpenGL /// - /// Index of handle of the object in this instance to be bind - public abstract void Bind(int index); + /// Index of handle of the object in this instance to be bind + public abstract void Bind( int index ); public void Dispose() { - Dispose(disposing: true); - GC.SuppressFinalize(this); + Dispose( disposing: true ); + GC.SuppressFinalize( this ); } - /// + /// public override string ToString() { return $"This is a {GetType().FullName}, containing {_bufferHandle.Length} buffer handles: {_bufferHandle.ToString()}."; } - protected abstract void Dispose(bool disposing); + protected abstract void Dispose( bool disposing ); ~BufferObjectBase() { - Dispose(disposing: false); + Dispose( disposing: false ); } } diff --git a/源代码/StgSharp/Graphics/Define/StructDefine.cs b/源代码/StgSharp/Graphics/Define/StructDefine.cs index 99506f23..83bb929a 100644 --- a/源代码/StgSharp/Graphics/Define/StructDefine.cs +++ b/源代码/StgSharp/Graphics/Define/StructDefine.cs @@ -45,7 +45,7 @@ namespace StgSharp.Graphics #region GLFW3 struct - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWcontext { @@ -116,12 +116,12 @@ namespace StgSharp.Graphics //GLFW_PLATFORM_CONTEXT_STATE } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct glfwVideomode { - /*! The refresh rate, in Hz, of the video mode. */ + private int refreshRate; /*! The bit depth of the blue channel of the video mode. */ @@ -142,12 +142,12 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct glfwGammaramp { - /*! An array of value describing the response of the blue channel. */ + private ushort* blue; /*! An array of value describing the response of the green channel. */ @@ -162,12 +162,12 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWimage { - /*! The pixel _data of this image, arranged left-to-right, top-to-bottom. */ + private byte* pixels; /*! The height, in pixels, of this image. @@ -177,26 +177,25 @@ namespace StgSharp.Graphics */ private int width; - } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWgamepadstate { - /*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS` * or `GLFW_RELEASE`. */ - public fixed byte buttons[15]; + + public fixed byte buttons[ 15 ]; /*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0 * to 1.0 inclusive. */ - public fixed float axes[6]; + public fixed float axes[ 6 ]; } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWallocator { @@ -213,7 +212,7 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct glfwMonitor { @@ -221,7 +220,7 @@ namespace StgSharp.Graphics private glfwWindow* window; - private fixed byte name[128]; + private fixed byte name[ 128 ]; private glfwGammaramp currentRamp; private glfwGammaramp originalRamp; @@ -231,57 +230,55 @@ namespace StgSharp.Graphics private int width, height; private IntPtr userPointer; - public glfwMonitor() - { } + public glfwMonitor() { } public unsafe string Name { get { - fixed (byte* cptr = name) - { - return Marshal.PtrToStringAnsi((IntPtr)cptr); + fixed( byte* cptr = name ) { + return Marshal.PtrToStringAnsi( ( IntPtr )cptr ); } } } } - [StructLayout(LayoutKind.Sequential)] - unsafe struct glfwWindow + [StructLayout( LayoutKind.Sequential )] + internal unsafe struct glfwWindow { - glfwWindow* next; - void* userPointer; - bool rawMouseMotion; - Callbacks callbacks; + private glfwWindow* next; + private void* userPointer; + private bool rawMouseMotion; + private Callbacks callbacks; // Virtual cursor position when cursor is disabled - double virtualCursorPosX, virtualCursorPosY; - int autoIconify; - int cursorMode; - int decorated; - int doublebuffer; - int floating; - int focusOnShow; - int lockKeyMods; - int maxwidth, maxheight; + private double virtualCursorPosX, virtualCursorPosY; + private int autoIconify; + private int cursorMode; + private int decorated; + private int doublebuffer; + private int floating; + private int focusOnShow; + private int lockKeyMods; + private int maxwidth, maxheight; - int minwidth, minheight; - int mousePassthrough; - int numer, denom; + private int minwidth, minheight; + private int mousePassthrough; + private int numer, denom; // Window settings and state - int resizable; - int shouldClose; + private int resizable; + private int shouldClose; - int stickyKeys; - int stickyMouseButtons; - IntPtr cursor; // _GLFWcursor* cursor; + private int stickyKeys; + private int stickyMouseButtons; + private IntPtr cursor; // _GLFWcursor* cursor; // glfwVideomode videoMode; // 根据GLFWvidmode的定义转换 - IntPtr monitor; // _GLFWmonitor* monitor; - public fixed byte keys[GLconst.GLFW_KEY_LAST + 1]; - public fixed byte mouseButtons[GLconst.GLFW_MOUSE_BUTTON_LAST + 1]; + private IntPtr monitor; // _GLFWmonitor* monitor; + public fixed byte keys[ GLconst.GLFW_KEY_LAST + 1 ]; + public fixed byte mouseButtons[ GLconst.GLFW_MOUSE_BUTTON_LAST + 1 ]; // _GLFWcontext viewPortDisplay; // 根据_GLFWcontext的定义转换 @@ -312,14 +309,10 @@ namespace StgSharp.Graphics // GLFW_PLATFORM_WINDOW_STATE platformWindowState; } + [StructLayout( LayoutKind.Sequential )] + public struct GLFWwindowCallback { } - [StructLayout(LayoutKind.Sequential)] - public struct GLFWwindowCallback - { - - } - - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public struct GLFWcursor { @@ -347,7 +340,7 @@ namespace StgSharp.Graphics } */ - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWinitconfig { @@ -361,7 +354,7 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWwndconfig { @@ -392,31 +385,25 @@ namespace StgSharp.Graphics internal X11 x11 = new X11(); - public GLFWwndconfig() - { - } + public GLFWwndconfig() { } internal struct Ns { private GLFWbool retina = false; - public fixed byte frameName[256]; + public fixed byte frameName[ 256 ]; - public Ns() - { - } + public Ns() { } } internal struct X11 { - public fixed byte className[256]; - public fixed byte instanceName[256]; + public fixed byte className[ 256 ]; + public fixed byte instanceName[ 256 ]; - public X11() - { - } + public X11() { } } @@ -430,17 +417,15 @@ namespace StgSharp.Graphics internal struct Wl { - public fixed byte appId[256]; + public fixed byte appId[ 256 ]; - public Wl() - { - } + public Wl() { } } } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWctxconfig { @@ -461,9 +446,7 @@ namespace StgSharp.Graphics internal Nsgl nsgl = new Nsgl(); - public GLFWctxconfig() - { - } + public GLFWctxconfig() { } internal struct Nsgl { @@ -474,7 +457,7 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWfbconfig { @@ -500,11 +483,13 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] internal unsafe struct GLFWlibrary { - [MarshalAs(UnmanagedType.ByValArray, SizeConst = GLconst.GLFW_JOYSTICK_LAST + 1)] + [MarshalAs( + UnmanagedType.ByValArray, + SizeConst = GLconst.GLFW_JOYSTICK_LAST + 1 )] private GLFWjoystick[] joysticks = new GLFWjoystick[GLconst.GLFW_JOYSTICK_LAST + 1]; private GLFWallocator allocator; @@ -546,9 +531,7 @@ namespace StgSharp.Graphics internal Osmesa osmesa = new Osmesa(); - public GLFWlibrary() - { - } + public GLFWlibrary() { } internal unsafe struct Hints { @@ -566,6 +549,7 @@ namespace StgSharp.Graphics { private ulong offset; + // This is defined in platform.h //not transformed function defination @@ -652,11 +636,9 @@ namespace StgSharp.Graphics private GLFWbool KHR_xlib_surface; private GLFWbool MVK_macos_surface; private IntPtr GetInstanceProcAddr; - private fixed ulong extensions[2]; + private fixed ulong extensions[ 2 ]; - public vk() - { - } + public vk() { } } @@ -671,7 +653,7 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWmapelement { @@ -684,25 +666,24 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWmapping { - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 6 )] private GLFWmapelement[] axes = new GLFWmapelement[6]; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 15)] + [MarshalAs( UnmanagedType.ByValArray, SizeConst = 15 )] private GLFWmapelement[] buttons = new GLFWmapelement[15]; - private fixed byte guid[33]; + private fixed byte guid[ 33 ]; - private fixed byte name[128]; + private fixed byte name[ 128 ]; - public GLFWmapping() - { } + public GLFWmapping() { } } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWjoystick { @@ -710,8 +691,8 @@ namespace StgSharp.Graphics private byte* buttons; private byte* hats; private void* userPointer; - private fixed byte guid[33]; - private fixed byte name[128]; + private fixed byte guid[ 33 ]; + private fixed byte name[ 128 ]; private GLFWbool allocated; private GLFWbool connected; @@ -726,20 +707,20 @@ namespace StgSharp.Graphics // not completed in transforming // GLFW_PLATFORM_JOYSTICK_STATE; - public GLFWjoystick() - { } + public GLFWjoystick() { } } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWls { + // This is defined in platform.h //GLFW_PLATFORM_TLS_STATE } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWplatform { @@ -812,6 +793,7 @@ namespace StgSharp.Graphics internal IntPtr setCursorMode; #region input + /* void (* getCursorPos) (glfwWindow*, double*, double*); void (* setCursorPos) (glfwWindow*, double, double); void (* setCursorMode) (glfwWindow*, int); @@ -878,6 +860,7 @@ namespace StgSharp.Graphics void (* waitEventsTimeout) (double); void (* postEmptyEvent) (void); */ + #endregion internal IntPtr setCursorPos; @@ -910,25 +893,24 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public unsafe struct GLFWmutex { + // This is defined in platform.h //GLFW_PLATFORM_MUTEX_STATE } //public unsafe struct VkAllocationCallbacks { } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] internal unsafe struct VkExtensionProperties { - private fixed byte extensionName[256]; + private fixed byte extensionName[ 256 ]; private uint specVersion; - public VkExtensionProperties() - { - } + public VkExtensionProperties() { } } @@ -947,14 +929,14 @@ namespace StgSharp.Graphics } */ - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct uintptr_t { - [FieldOffset(0)] + [FieldOffset( 0 )] private long part1; - [FieldOffset(8)] + [FieldOffset( 8 )] private long part2; } @@ -963,7 +945,7 @@ namespace StgSharp.Graphics #region glad struct - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] internal struct GLsync { diff --git a/源代码/StgSharp/Graphics/Define/glApiDefine.cs b/源代码/StgSharp/Graphics/Define/glApiDefine.cs index c71f8202..f2c01524 100644 --- a/源代码/StgSharp/Graphics/Define/glApiDefine.cs +++ b/源代码/StgSharp/Graphics/Define/glApiDefine.cs @@ -39,27 +39,59 @@ namespace StgSharp.Graphics /// /// Function handler to load an opengl function by searching its name. /// - /// the name of the Opengl function - /// An Intptr value representing the pointer to the function - public delegate IntPtr glLoader(string name); + /// the name of the Opengl function + /// An Intptr value representing the pointer to the function + public delegate IntPtr glLoader( string name ); #region StgSharpDele - public unsafe delegate void FrameBufferSizeHandler(IntPtr window, uint width, uint height); + public unsafe delegate void FrameBufferSizeHandler( + IntPtr window, + int width, + int height ); - public unsafe delegate void FramePositionHandler(IntPtr window, float width, float height); + public unsafe delegate void FramePositionHandler( + IntPtr window, + float width, + float height ); #endregion #region glDEBUG - internal unsafe delegate void GLDEBUGPROC(int source, int type, uint id, int severity, int length, sbyte* message, void* userParam); - internal unsafe delegate void GLDEBUGPROCARB(int source, int type, uint id, int severity, int length, sbyte* message, void* userParam); - internal unsafe delegate void GLDEBUGPROCKHR(int source, int type, uint id, int severity, int length, sbyte* message, void* userParam); - internal unsafe delegate void GLDEBUGPROCAMD(uint id, int category, int severity, int length, sbyte* message, void* userParam); - - #endregion + internal unsafe delegate void GLDEBUGPROC( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam ); + internal unsafe delegate void GLDEBUGPROCARB( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam ); + internal unsafe delegate void GLDEBUGPROCKHR( + int source, + int type, + uint id, + int severity, + int length, + sbyte* message, + void* userParam ); + internal unsafe delegate void GLDEBUGPROCAMD( + uint id, + int category, + int severity, + int length, + sbyte* message, + void* userParam ); +#endregion } diff --git a/源代码/StgSharp/Graphics/Define/glConst.cs b/源代码/StgSharp/Graphics/Define/glConst.cs index 0e3c6f3b..021f8887 100644 --- a/源代码/StgSharp/Graphics/Define/glConst.cs +++ b/源代码/StgSharp/Graphics/Define/glConst.cs @@ -337,7 +337,6 @@ namespace StgSharp.Graphics.OpenGL #region glad - public const int _1PASS_EXT = 0x80A1; public const int _1PASS_SGIS = 0x80A1; public const int _2PASS_0_EXT = 0x80A2; @@ -4839,12 +4838,7 @@ namespace StgSharp.Graphics.OpenGL public const int ZERO_TO_ONE = 0x935F; public const int Z_EXT = 0x87D7; - - - - #endregion - } public static class glAttachment @@ -4854,18 +4848,14 @@ namespace StgSharp.Graphics.OpenGL public const uint DepthAndStencil = GLconst.DEPTH_STENCIL_ATTACHMENT; public const uint Stencil = GLconst.STENCIL_ATTACHMENT; - private static int colorRange = - OpenGLFunction.CurrentGL.GetMaskInteger((uint)GLconst.MAX_COLOR_ATTACHMENTS); - - public static uint Color(int i) + public static uint Color( int i ) { -#if DEBUG - if ((i > colorRange) || (i < 0)) - { + #if DEBUG + if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) { throw new ArgumentOutOfRangeException(); } -#endif - return (uint)(GLconst.COLOR_ATTACHMENT0 + i); + #endif + return ( uint )( GLconst.COLOR_ATTACHMENT0 + i ); } } diff --git a/源代码/StgSharp/Graphics/Define/glEnum.cs b/源代码/StgSharp/Graphics/Define/glEnum.cs index 64f7c00d..7dc29186 100644 --- a/源代码/StgSharp/Graphics/Define/glEnum.cs +++ b/源代码/StgSharp/Graphics/Define/glEnum.cs @@ -29,13 +29,13 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL { public enum PixelChannelLayout { + UByte = GLconst.UNSIGNED_BYTE, Byte = GLconst.BYTE, UShort = GLconst.UNSIGNED_SHORT, @@ -55,10 +55,12 @@ namespace StgSharp.Graphics.OpenGL UInt8888Rev = GLconst.UNSIGNED_INT_8_8_8_8_REV, UInt1010102 = GLconst.UNSIGNED_INT_10_10_10_2, UInt2101010Rev = GLconst.UNSIGNED_INT_2_10_10_10_REV + } public enum FrameBufferStatus { + Complete = GLconst.FRAMEBUFFER_COMPLETE, // GL_FRAMEBUFFER_COMPLETE IncompleteAttachment = GLconst.FRAMEBUFFER_INCOMPLETE_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT IncompleteMissingAttachment = GLconst.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, // GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT @@ -67,10 +69,12 @@ namespace StgSharp.Graphics.OpenGL Unsupported = GLconst.FRAMEBUFFER_UNSUPPORTED, // GL_FRAMEBUFFER_UNSUPPORTED IncompleteMultisample = GLconst.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, // GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE IncompleteLayerTargets = GLconst.FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS // GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS + } internal enum VkStructureType : uint { + VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, @@ -78,10 +82,12 @@ namespace StgSharp.Graphics.OpenGL VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF + } public enum FrameBufferChannel { + STENCIL_INDEX = GLconst.STENCIL_INDEX, DEPTH_COMPONENT = GLconst.DEPTH_COMPONENT, DEPTH_STENCIL = GLconst.DEPTH_STENCIL, @@ -92,17 +98,22 @@ namespace StgSharp.Graphics.OpenGL BGR = GLconst.BGR, RGBA = GLconst.RGBA, BGRA = GLconst.BGRA + } public enum FrameBufferAttachment { + Color = GLconst.COLOR_ATTACHMENT0, Depth = GLconst.DEPTH_ATTACHMENT, Stencil = GLconst.STENCIL_ATTACHMENT, + DepthAndStencil = GLconst.DEPTH_STENCIL_ATTACHMENT, + } public enum Texture2DTarget { + Texture2D = GLconst.TEXTURE_2D, ProxyTexture2D = GLconst.PROXY_TEXTURE_2D, Texture1DArray = GLconst.TEXTURE_1D_ARRAY, @@ -116,21 +127,27 @@ namespace StgSharp.Graphics.OpenGL TextureCubeMapPositiveZ = GLconst.TEXTURE_CUBE_MAP_POSITIVE_Z, TextureCubeMapNegativeZ = GLconst.TEXTURE_CUBE_MAP_NEGATIVE_Z, ProxyTextureCubeMap = GLconst.PROXY_TEXTURE_CUBE_MAP + } public enum RenderBufferInternalFormat : uint { + RGBA8 = GLconst.RGBA8, Depth24_Stencil8 = GLconst.DEPTH24_STENCIL8, + } public enum GLOperation : uint { + StencilTest = GLconst.STENCIL_TEST, + } internal enum VkResult { + VK_SUCCESS = 0, VK_NOT_READY = 1, VK_TIMEOUT = 2, @@ -155,22 +172,26 @@ namespace StgSharp.Graphics.OpenGL VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, VK_RESULT_MAX_ENUM = 0x7FFFFFFF + } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum ShaderType : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { + Fragment = GLconst.FRAGMENT_SHADER, Vertex = GLconst.VERTEX_SHADER, Compute = GLconst.COMPUTE_SHADER, Geometry = GLconst.GEOMETRY_SHADER, + } -#pragma warning disable CA1008 // 枚举应具有零值 + #pragma warning disable CA1008 // 枚举应具有零值 public enum BufferType : int -#pragma warning restore CA1008 // 枚举应具有零值 + #pragma warning restore CA1008 // 枚举应具有零值 { + ArrayBuffer = GLconst.ARRAY_BUFFER, ElementArrayBuffer = GLconst.ELEMENT_ARRAY_BUFFER, AtomicCounterBuffer = GLconst.ATOMIC_COUNTER_BUFFER, @@ -185,12 +206,14 @@ namespace StgSharp.Graphics.OpenGL TEXTURE_BUFFER = GLconst.TEXTURE_BUFFER, TRANSFORM_FEEDBACK_BUFFER = GLconst.TRANSFORM_FEEDBACK_BUFFER, UNIFORM_BUFFER = GLconst.UNIFORM_BUFFER, + } -#pragma warning disable CA1008 // 枚举应具有零值 + #pragma warning disable CA1008 // 枚举应具有零值 public enum BufferUsage : int -#pragma warning restore CA1008 // 枚举应具有零值 + #pragma warning restore CA1008 // 枚举应具有零值 { + StreamDraw = 0x88E0, StreamRead = 0x88E1, StreamCopy = 0x88E2, @@ -200,18 +223,21 @@ namespace StgSharp.Graphics.OpenGL DynamicDraw = 0x88E8, DynamicRead = 0x88E9, DynamicCopy = 0x88EA - } + } public enum MaskBufferBit { + COLOR = GLconst.COLOR_BUFFER_BIT, DEPTH = GLconst.DEPTH_BUFFER_BIT, STENCIL = GLconst.STENCIL_BUFFER_BIT, + } public enum GeometryType : uint { + POINTS = 0x0000, LINES = 0x0001, LINE_LOOP = 0x0002, @@ -219,11 +245,14 @@ namespace StgSharp.Graphics.OpenGL TRIANGLES = 0x0004, TRIANGLE_STRIP = 0x0005, TRIANGLE_FAN = 0x0006 + } public enum TextureFiltering { + Nearest = 0x2600, Linear = 0x2601 + } } diff --git a/源代码/StgSharp/Graphics/Define/glType.cs b/源代码/StgSharp/Graphics/Define/glType.cs index b8a101ca..942ead22 100644 --- a/源代码/StgSharp/Graphics/Define/glType.cs +++ b/源代码/StgSharp/Graphics/Define/glType.cs @@ -36,81 +36,114 @@ using System.Collections.ObjectModel; using System.Runtime.InteropServices; using System.Text; - namespace StgSharp.Graphics { - - public delegate IntPtr GLfuncLoader(string name); + public delegate IntPtr GLfuncLoader( string name ); internal delegate void GLVULKANPROCNV(); public unsafe struct GLhandleARB { - dynamic value; + private dynamic value; - public unsafe GLhandleARB(dynamic value) + public unsafe GLhandleARB( dynamic value ) { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - if (value.GetType().Name != "Uint32") - { + if( !RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) { + if( value.GetType().Name != "Uint32" ) { goto errorlog; } this.value = value; - } - else - { - if (value.GetType().Name != "IntPtr") - { + } else { + if( value.GetType().Name != "IntPtr" ) { goto errorlog; } this.value = value; } - errorlog: + errorlog: { InternalIO.InternalWriteLog( $"{value.GetType().Name} does not match definination of GLhandlARB on OS {Environment.OSVersion.Platform} ", - LogType.Error); + LogType.Error ); } - } - public static implicit operator uint(GLhandleARB value) + public static implicit operator uint( GLhandleARB value ) { - return (uint)value; + return ( uint )value; } - - } #region GLFW_dele - internal unsafe delegate void GLFWwindowsizefun(glfwWindow* window, int width, int height); - internal unsafe delegate void GLFWwindowrefreshfun(glfwWindow* window); - internal unsafe delegate void GLFWwindowposfun(glfwWindow* window, int xpos, int ypos); - internal unsafe delegate void GLFWwindowmaximizefun(glfwWindow* window, int maximized); - internal unsafe delegate void GLFWwindowiconifyfun(glfwWindow* window, int iconified); - internal unsafe delegate void GLFWwindowfocusfun(glfwWindow* window, int focused); - internal unsafe delegate void GLFWwindowcontentscalefun(glfwWindow* window, float xscale, float yscale); - internal unsafe delegate void GLFWwindowclosefun(glfwWindow* window); + internal unsafe delegate void GLFWwindowsizefun( + glfwWindow* window, + int width, + int height ); + internal unsafe delegate void GLFWwindowrefreshfun( glfwWindow* window ); + internal unsafe delegate void GLFWwindowposfun( + glfwWindow* window, + int xpos, + int ypos ); + internal unsafe delegate void GLFWwindowmaximizefun( + glfwWindow* window, + int maximized ); + internal unsafe delegate void GLFWwindowiconifyfun( + glfwWindow* window, + int iconified ); + internal unsafe delegate void GLFWwindowfocusfun( + glfwWindow* window, + int focused ); + internal unsafe delegate void GLFWwindowcontentscalefun( + glfwWindow* window, + float xscale, + float yscale ); + internal unsafe delegate void GLFWwindowclosefun( glfwWindow* window ); internal unsafe delegate void GLFWvkproc(); - internal unsafe delegate void GLFWscrollfun(glfwWindow* window, double xoffset, double yoffset); - internal unsafe delegate void GLFWmousebuttonfun(glfwWindow* window, int button, int action, int mods); - internal unsafe delegate void GLFWmonitorfun(glfwMonitor* monitor, int monitorevent); - internal unsafe delegate void GLFWkeyfun(glfwWindow* window, int key, int scancode, int action, int mods); - internal unsafe delegate void GLFWjoystickfun(int jid, int keyevent); + internal unsafe delegate void GLFWscrollfun( + glfwWindow* window, + double xoffset, + double yoffset ); + internal unsafe delegate void GLFWmousebuttonfun( + glfwWindow* window, + int button, + int action, + int mods ); + internal unsafe delegate void GLFWmonitorfun( + glfwMonitor* monitor, + int monitorevent ); + internal unsafe delegate void GLFWkeyfun( + glfwWindow* window, + int key, + int scancode, + int action, + int mods ); + internal unsafe delegate void GLFWjoystickfun( int jid, int keyevent ); public unsafe delegate void GLFWglproc(); - internal unsafe delegate void GLFWerrorfun(int error_code, sbyte* description); - internal unsafe delegate void GLFWdropfun(glfwWindow* window, int path_count, sbyte*[] paths); - internal unsafe delegate void GLFWcursorposfun(glfwWindow* window, double xpos, double ypos); - internal unsafe delegate void GLFWcursorenterfun(glfwWindow* window, int entered); - internal unsafe delegate void GLFWcharmodsfun(glfwWindow* window, uint codepoint, int mods); - internal unsafe delegate void GLFWcharfun(glfwWindow* window, uint codepoint); - - #endregion + internal unsafe delegate void GLFWerrorfun( + int error_code, + sbyte* description ); + internal unsafe delegate void GLFWdropfun( + glfwWindow* window, + int path_count, + sbyte*[] paths ); + internal unsafe delegate void GLFWcursorposfun( + glfwWindow* window, + double xpos, + double ypos ); + internal unsafe delegate void GLFWcursorenterfun( + glfwWindow* window, + int entered ); + internal unsafe delegate void GLFWcharmodsfun( + glfwWindow* window, + uint codepoint, + int mods ); + internal unsafe delegate void GLFWcharfun( + glfwWindow* window, + uint codepoint ); +#endregion } \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/IGraphicAPIs.cs b/源代码/StgSharp/Graphics/IGraphicAPIs.cs index b97068a4..70646eac 100644 --- a/源代码/StgSharp/Graphics/IGraphicAPIs.cs +++ b/源代码/StgSharp/Graphics/IGraphicAPIs.cs @@ -37,8 +37,10 @@ namespace StgSharp.Graphics public interface IGraphicAPIs { - public IntPtr GraphicApiPackageHandle { get; } + public IntPtr GraphicApiPackageHandle + { + get; + } } - } diff --git a/源代码/StgSharp/Graphics/Image.cs b/源代码/StgSharp/Graphics/Image.cs index dc8ffd7e..f1c5d504 100644 --- a/源代码/StgSharp/Graphics/Image.cs +++ b/源代码/StgSharp/Graphics/Image.cs @@ -46,32 +46,43 @@ namespace StgSharp.Graphics { public class Image : ISSDSerializable, IImageProvider { + private byte[] _data; - private ImageInfo info; + private ImageInfo _rawInfo; private int _pixelUpdateCount = 0; internal unsafe Image() { - info = new ImageInfo(); + _rawInfo = new ImageInfo(); } - internal Image(ImageInfo information) + internal Image( ImageInfo information ) { - info = information; + _rawInfo = information; _data = Array.Empty(); - //int length = info.width * info.height * info.channel; - } - internal ref byte[] Data - { - get => ref _data; + //int length = _rawInfo.width * _rawInfo.height * _rawInfo.channel; } public (int width, int height) Size { - get => (info.Width, info.Height); + get => (_rawInfo.Width, _rawInfo.Height); } + public byte[] PixelBuffer + { + get + { + if( ( _data.Length == 0 ) || ( _data == null ) ) { + GetBytes(); + return _data!; + } + return _data; + } + } + + public ImageChannel Channel => _rawInfo.Channel; + /// /// Hash code of time pixels updated last time. /// @@ -81,59 +92,51 @@ namespace StgSharp.Graphics internal set => _pixelUpdateCount = value; } - public byte[] PixelBuffer - { - get - { - if ((_data.Length == 0) || (_data == null)) - { - GetBytes(); - return _data!; - } - return _data; - } - } + public int ChannelCount => _rawInfo.ChannelCount; - public ImageChannel Channel => info.Channel; - public int ChannelCount => info.ChannelCount; public int Height { - get => info.Height; - internal set => info.Height = value; + get => _rawInfo.Height; + internal set => _rawInfo.Height = value; } public int Width { - get => info.Width; - internal set => info.Width = value; + get => _rawInfo.Width; + internal set => _rawInfo.Width = value; } - public int PixelSize => GlHelper.GetPixelSize(info.pixelLayout, info.Channel); + public int PixelSize => GlHelper.GetPixelSize( + _rawInfo.pixelLayout, _rawInfo.Channel ); public PixelChannelLayout PixelLayout { - get => info.pixelLayout; - private set => info.pixelLayout = value; + get => _rawInfo.pixelLayout; + private set => _rawInfo.pixelLayout = value; } public SerializableTypeCode SSDTypeCode => SerializableTypeCode.PixelImage; - public void FromBytes(byte[] stream) + internal ref byte[] Data { - + get => ref _data; } - public static unsafe Image FromFile(string route, ImageLoader loader) + public void FromBytes( byte[] stream ) { } + + public static unsafe Image FromFile( string route, ImageLoader loader ) { Image ret = new Image(); - fixed (ImageInfo* iptr = &ret.info) - { - InternalIO.InternalLoadImage(route, iptr, loader); + fixed( ImageInfo* iptr = &ret._rawInfo ) { + InternalIO.InternalLoadImage( route, iptr, loader ); } return ret; } - public static Image FromMemory((int width, int height) size, ImageChannel channel, byte[] stream) + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -142,13 +145,17 @@ namespace StgSharp.Graphics Channel = channel, StreamPtr = IntPtr.Zero }; - Image ret = new Image(_info); + Image ret = new Image( _info ); ret.PixelLayout = PixelChannelLayout.Byte; ret._data = stream; return ret; } - public static Image FromMemory((int width, int height) size, ImageChannel channel, PixelChannelLayout layout, byte[] stream) + public static Image FromMemory( + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -157,7 +164,7 @@ namespace StgSharp.Graphics Channel = channel, StreamPtr = IntPtr.Zero }; - Image ret = new Image(_info); + Image ret = new Image( _info ); ret.PixelLayout = layout; ret._data = stream; return ret; @@ -165,20 +172,34 @@ namespace StgSharp.Graphics public unsafe byte[] GetBytes() { - if (_data.Length == 0) - { - int size = Width * Height * GlHelper.GetPixelSize(PixelLayout, Channel); - _data = new Span((byte*)info.StreamPtr, size).ToArray(); - fixed (ImageInfo* pptr = &info) - { - InternalIO.InternalUnloadImage(pptr); + if( _data.Length == 0 ) { + int size = Width * Height * GlHelper.GetPixelSize( + PixelLayout, Channel ); + _data = new Span( ( byte* )_rawInfo.StreamPtr, + size ).ToArray(); + fixed( ImageInfo* pptr = &_rawInfo ) { + InternalIO.InternalUnloadImage( pptr ); } - info.StreamPtr = IntPtr.Zero; + _rawInfo.StreamPtr = IntPtr.Zero; } return _data; } + public Image ProvideImage() => this; + internal static Image FromMemory( + ImageInfo info, + byte[] data, + int operationCount ) + { + return new Image + { + _rawInfo = info, + _data = data, + _pixelUpdateCount = operationCount + }; + } + byte[] ISSDSerializable.GetBytes() { throw new NotImplementedException(); @@ -186,7 +207,7 @@ namespace StgSharp.Graphics } - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] internal struct ImageInfo { @@ -204,7 +225,7 @@ namespace StgSharp.Graphics public int ChannelCount { - get => GlHelper.GetChannelCount(channel); + get => GlHelper.GetChannelCount( channel ); } public int Height @@ -215,7 +236,8 @@ namespace StgSharp.Graphics public int StreamSize { - get => width * height * GlHelper.GetPixelSize(pixelLayout, channel); + get => width * height * GlHelper.GetPixelSize( + pixelLayout, channel ); } public int Width @@ -230,27 +252,30 @@ namespace StgSharp.Graphics internal set => pixelPtr = value; } - public override string ToString() - { - return $"{channel}\t{width}\t{height}\t{(ulong)StreamPtr}"; - } - public override int GetHashCode() { int hash = 17; hash = hash * 17 + width; hash = hash * 17 + height; - hash = hash * 17 + (int)channel; + hash = hash * 17 + ( int )channel; return hash; } + + public override string ToString() + { + return $"{channel}\t{width}\t{height}\t{(ulong)StreamPtr}"; + } + } public enum ImageChannel : uint { + SingleColor = GLconst.RED, DoubleColor = GLconst.RG, TripleColor = GLconst.RGB, WithAlphaChannel = GLconst.RGBA, + } } @@ -259,7 +284,7 @@ namespace StgSharp.Graphics.OpenGL public static partial class GlHelper { - internal static int GetChannelCount(ImageChannel channel) + internal static int GetChannelCount( ImageChannel channel ) { return channel switch { @@ -267,34 +292,44 @@ namespace StgSharp.Graphics.OpenGL ImageChannel.DoubleColor => 2, ImageChannel.TripleColor => 3, ImageChannel.WithAlphaChannel => 4, - _ => throw new InvalidCastException("Unknown color channel decoding setting.") + _ => throw new InvalidCastException( + "Unknown color channel decoding setting." ) }; } - internal static int GetPixelSize(PixelChannelLayout layout, ImageChannel cahnnel) + internal static int GetPixelSize( + PixelChannelLayout layout, + ImageChannel cahnnel ) { return layout switch { - PixelChannelLayout.UByte => sizeof(byte) * GetChannelCount(cahnnel), - PixelChannelLayout.Byte => sizeof(byte) * GetChannelCount(cahnnel), - PixelChannelLayout.UShort => sizeof(short) * GetChannelCount(cahnnel), - PixelChannelLayout.Short => sizeof(short) * GetChannelCount(cahnnel), - PixelChannelLayout.UInt => sizeof(int) * GetChannelCount(cahnnel), - PixelChannelLayout.Int => sizeof(int) * GetChannelCount(cahnnel), - PixelChannelLayout.Float => sizeof(float) * GetChannelCount(cahnnel), - PixelChannelLayout.UByte332 => sizeof(byte), - PixelChannelLayout.UByte233Rev => sizeof(byte), - PixelChannelLayout.UShort565 => sizeof(short), - PixelChannelLayout.UShort565Rev => sizeof(short), - PixelChannelLayout.UShort4444 => sizeof(short), - PixelChannelLayout.UShort4444Rev => sizeof(short), - PixelChannelLayout.UShort5551 => sizeof(short), - PixelChannelLayout.UShort1555Rev => sizeof(short), - PixelChannelLayout.UInt8888 => sizeof(int), - PixelChannelLayout.UInt8888Rev => sizeof(int), - PixelChannelLayout.UInt1010102 => sizeof(int), - PixelChannelLayout.UInt2101010Rev => sizeof(int), - _ => throw new ArgumentException("Unknown layout type"), + PixelChannelLayout.UByte => sizeof( byte ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.Byte => sizeof( byte ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.UShort => sizeof( short ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.Short => sizeof( short ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.UInt => sizeof( int ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.Int => sizeof( int ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.Float => sizeof( float ) * GetChannelCount( + cahnnel ), + PixelChannelLayout.UByte332 => sizeof( byte ), + PixelChannelLayout.UByte233Rev => sizeof( byte ), + PixelChannelLayout.UShort565 => sizeof( short ), + PixelChannelLayout.UShort565Rev => sizeof( short ), + PixelChannelLayout.UShort4444 => sizeof( short ), + PixelChannelLayout.UShort4444Rev => sizeof( short ), + PixelChannelLayout.UShort5551 => sizeof( short ), + PixelChannelLayout.UShort1555Rev => sizeof( short ), + PixelChannelLayout.UInt8888 => sizeof( int ), + PixelChannelLayout.UInt8888Rev => sizeof( int ), + PixelChannelLayout.UInt1010102 => sizeof( int ), + PixelChannelLayout.UInt2101010Rev => sizeof( int ), + _ => throw new ArgumentException( "Unknown layout type" ), }; } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/AutoTexture.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/AutoTexture.cs index bc283550..37fbc638 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/AutoTexture.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/AutoTexture.cs @@ -29,60 +29,60 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Collections; + using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Runtime.CompilerServices; using System.Text; -using System.Threading.Tasks; -using StgSharp.Collections; +using System.Threading.Tasks; namespace StgSharp.Graphics.OpenGL { /// - /// A collection of a sets of OpenGL textures. The collection can automatically select one of the - /// texture with minimum costs to upgrade pixels to buffer. Usually is used for - /// loading, but not for target of - /// . + /// A collection of a sets of OpenGL textures. The collection can automatically select one of + /// the texture with minimum costs to upgrade pixels to buffer. Usually is used for loading, but not for + /// target of . /// public sealed class AutoTextureGL { - private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary(); - private Dictionary imageUpdateIndex = new Dictionary(); + + private TextureProperty[] propertyCache; + private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary( + ); + private Dictionary imageUpdateIndex = new Dictionary( + ); private int _size, _currentIndex; private LinkedList usedTextureIndex; private Queue unusedTextureUnitIndex; - private TextureProperty[] propertyCache; private TextureGL texturePackage; private TextureProperty _textureProperty; - private OpenGLFunction GL - { - get => texturePackage.GL; - } - - private AutoTextureGL(TextureGL texture) + private AutoTextureGL( TextureGL texture ) { texturePackage = texture; _size = texture.Count; imageIndexMap = new BidirectionalDictionary(); unusedTextureUnitIndex = new Queue( - Enumerable.Range(0, _size)); + Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } - public AutoTextureGL(int textureObjectSize, [NotNull]glRender binding) + public AutoTextureGL( int textureObjectSize, [NotNull]glRender binding ) { this._size = textureObjectSize; imageIndexMap = new BidirectionalDictionary(); - texturePackage = new TextureGL(textureObjectSize, binding); + texturePackage = new TextureGL( textureObjectSize, binding ); unusedTextureUnitIndex = new Queue( - Enumerable.Range(0, _size)); + Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } @@ -93,75 +93,70 @@ namespace StgSharp.Graphics.OpenGL set => _textureProperty = value; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SelectTextureAndBind(Image i) + private OpenGLFunction GL + { + get => texturePackage.GL; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SelectTextureAndBind( Image i ) { TextureProperty property = _textureProperty; - SelectTextureAndBind(i, property); + SelectTextureAndBind( i, property ); } - public void SelectTextureAndBind([NotNull]Image i, TextureProperty property) + public void SelectTextureAndBind( + [NotNull]Image i, + TextureProperty property ) { //usable texture with image match - if (imageIndexMap.TryGetValue(i, out int index)) - { + if( imageIndexMap.TryGetValue( i, out int index ) ) { //prop setting match - if (propertyCache[index] == property) - { + if( propertyCache[ index ] == property ) { _currentIndex = index; //GL.Assert(true); - texturePackage.Bind2D(index); //GL.Assert(true); - if (i.PixelUpdateCount != imageUpdateIndex[i]) - { - texturePackage.LoadTexture(index, i); //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); + } + } else { + _currentIndex = index; //GL.Assert(true); + texturePackage.Bind2D( index ); //GL.Assert(true); + texturePackage.Set2dProperty( index, property ); //GL.Assert(true); + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + texturePackage.LoadTexture( index, i ); //GL.Assert(true); } } - else - { - _currentIndex = index; //GL.Assert(true); - texturePackage.Bind2D(index); //GL.Assert(true); - texturePackage.Set2dProperty(index, property); //GL.Assert(true); - if (i.PixelUpdateCount != imageUpdateIndex[i]) - { - texturePackage.LoadTexture(index, i); //GL.Assert(true); - } - } - } - else - { - if (unusedTextureUnitIndex.TryDequeue(out int newIndex)) - { + } else { + if( unusedTextureUnitIndex.TryDequeue( out int newIndex ) ) { //has extra unused texture object - imageIndexMap.Add(i, index); - texturePackage.Bind2D(index); - texturePackage.Set2dProperty(index, property); - texturePackage.LoadTexture(index, i); - usedTextureIndex.AddLast(newIndex); - propertyCache[newIndex] = property; - imageUpdateIndex[i] = i.PixelUpdateCount; - } - else - { + imageIndexMap.Add( i, index ); + texturePackage.Bind2D( index ); + texturePackage.Set2dProperty( index, property ); + texturePackage.LoadTexture( index, i ); + usedTextureIndex.AddLast( newIndex ); + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; + } else { //recycle from current int reusedIndex = usedTextureIndex.First!.Value; usedTextureIndex.RemoveFirst(); - usedTextureIndex.AddLast(reusedIndex); - imageIndexMap[i] = reusedIndex; - propertyCache[newIndex] = property; - imageUpdateIndex[i] = i.PixelUpdateCount; + usedTextureIndex.AddLast( reusedIndex ); + imageIndexMap[ i ] = reusedIndex; + propertyCache[ newIndex ] = property; + imageUpdateIndex[ i ] = i.PixelUpdateCount; } } } - public static AutoTextureGL ToAuto([NotNull]TextureGL texture) + public static AutoTextureGL ToAuto( [NotNull]TextureGL texture ) { - if (texture.IndexOfCurrentTexture != -1) - { - throw new InvalidOperationException("Texture to be converted has been editted."); + if( texture.IndexOfCurrentTexture != -1 ) { + throw new InvalidOperationException( + "Texture to be converted has been editted." ); } - return new AutoTextureGL(texture); + return new AutoTextureGL( texture ); } } - } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs index 06cae15e..b98e4817 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/EBO.cs @@ -41,42 +41,50 @@ using System.Text; namespace StgSharp.Graphics.OpenGL { /// - /// A collection of handle to Element Buffer Object in OpenglFunc. - /// Each value indexed from instance of this class this - /// is the only handle to one Element Buffer Object. + /// A collection of handle to Element Buffer Object in OpenglFunc. Each + /// value indexed from instance of this class this is the only handle to one Element Buffer + /// Object. /// public sealed unsafe class ElementBuffer : GlBufferObjectBase { - internal ElementBuffer(int n, glRender binding) : base(binding) + internal ElementBuffer( int n, glRender binding ) + : base( binding ) { - _bufferHandle = GL.GenBuffers(n); + _bufferHandle = GL.GenBuffers( n ); } - public override sealed void Bind(int index) + public override sealed void Bind( int index ) { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); } - public void SetValue(int index, T[] bufferArray, BufferUsage usage) - where T : struct, IConvertible + public void SetValue( int index, T[] bufferArray, BufferUsage usage ) + where T: struct, IConvertible { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ElementArrayBuffer, bufferArray, usage); + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( + BufferType.ElementArrayBuffer, bufferArray, usage ); } - public void SetValue(int index, ReadOnlySpan bufferSpan, BufferUsage usage) - where T : struct, IConvertible + public void SetValue( + int index, + ReadOnlySpan bufferSpan, + BufferUsage usage ) + where T: struct, IConvertible { - GL.BindBuffer(BufferType.ElementArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ElementArrayBuffer, bufferSpan, usage); + GL.BindBuffer( + BufferType.ElementArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ElementArrayBuffer, bufferSpan, + usage ); } - protected override sealed void Dispose(bool disposing) + protected override sealed void Dispose( bool disposing ) { - if (disposing) - { - GL.DeleteBuffers(_bufferHandle); + if( disposing ) { + GL.DeleteBuffers( _bufferHandle ); } } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs index fd314064..6379e957 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/FBO.cs @@ -40,55 +40,59 @@ using System.Threading.Tasks; namespace StgSharp.Graphics.OpenGL { -#pragma warning disable CA1008 -#pragma warning disable CA1028 + #pragma warning disable CA1008 + #pragma warning disable CA1028 public enum FrameBufferTarget : uint -#pragma warning restore CA1028 -#pragma warning restore CA1008 + #pragma warning restore CA1028 + #pragma warning restore CA1008 { + Read = GLconst.READ_FRAMEBUFFER, All = GLconst.FRAMEBUFFER, Draw = GLconst.DRAW_FRAMEBUFFER, + } public sealed class FrameBuffer : GlBufferObjectBase { - internal unsafe FrameBuffer(int count, glRender binding) : base(binding) + internal unsafe FrameBuffer( int count, glRender binding ) + : base( binding ) { - _bufferHandle = GL.GenFrameBuffers(count); + _bufferHandle = GL.GenFrameBuffers( count ); } /// - /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. - /// will be set as default target. + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified + /// by target. will be set as default target. /// - /// Index of object to be binded in handle set - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override unsafe void Bind(int index) + /// Index of object to be binded in handle set + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override unsafe void Bind( int index ) { - GL.BindFrameBuffer(FrameBufferTarget.All, _bufferHandle[index]); + GL.BindFrameBuffer( FrameBufferTarget.All, _bufferHandle[ index ] ); } /// - /// Bind the frame buffer object with name frame buffer to the frame buffer target specified by target. - /// Target of this frame buffer should be set manually. + /// Bind the frame buffer object with name frame buffer to the frame buffer target specified + /// by target. Target of this frame buffer should be set manually. /// - /// The frame buffer target of the binding operation. - /// Index of object to be binded in handle set - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Bind(FrameBufferTarget target, int index) + /// The frame buffer target of the binding operation. + /// Index of object to be binded in handle set + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Bind( FrameBufferTarget target, int index ) { - GL.BindFrameBuffer(target, _bufferHandle[index]); + GL.BindFrameBuffer( target, _bufferHandle[ index ] ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public static void BindNull() { - OpenGLFunction.CurrentGL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); + OpenGLFunction.CurrentGL + .BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); } - protected override void Dispose(bool disposing) + protected override void Dispose( bool disposing ) { throw new NotImplementedException(); } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs index f5b4ad81..675cb155 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/GLBufferObjectBase.cs @@ -41,7 +41,7 @@ namespace StgSharp.Graphics.OpenGL private readonly glRender _contextBinding; - protected GlBufferObjectBase(glRender contextBinding) + protected GlBufferObjectBase( glRender contextBinding ) { binding = contextBinding; _contextBinding = contextBinding; diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs index bcf2959c..56d16466 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/RBO.cs @@ -35,36 +35,38 @@ using System.Collections.Generic; using System.Security.Principal; using System.Text; - namespace StgSharp.Graphics.OpenGL { - - - public sealed class RenderBuffer : GlBufferObjectBase { - public RenderBuffer(int count, glRender binding) : base(binding) + public RenderBuffer( int count, glRender binding ) + : base( binding ) { - _bufferHandle = GL.GenRenderBuffer(count); + _bufferHandle = GL.GenRenderBuffer( count ); } - public override void Bind(int index) + public override void Bind( int index ) { - GL.BindRenderBuffer(this[index]); + GL.BindRenderBuffer( this[ index ] ); } - public void Store(RenderBufferInternalFormat format, (int width, int height) size) + public void Store( + RenderBufferInternalFormat format, + (int width, int height) size ) { - if ((size.width > binding.Width) || (size.height > binding.Height)) - { - StgSharp.LogWarning("FrameBuffer is larger than current canvas binding"); + if( ( size.width > binding.Width ) || ( size.height > binding.Height ) ) { + StgSharp.LogWarning( + "FrameBuffer is larger than current canvas binding" ); } } - protected override void Dispose(bool disposing) + protected override void Dispose( bool disposing ) { - throw new NotImplementedException(); + foreach( GlHandle item in _bufferHandle ) { + Console.WriteLine( "removing a render buffer" ); + GL.DeleteRenderBuffer( item ); + } } } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs index a5926e7f..ca964de9 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/TextureGL.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Data; +using StgSharp.Data.Intrinsic; using StgSharp.Math; using System; @@ -58,8 +58,6 @@ namespace StgSharp.Graphics.OpenGL _textureHandle = _gl.GenTextures( count ); } - internal OpenGLFunction GL => _gl; - public GlHandle this[ int index ] { get => _textureHandle[ index ]; @@ -77,12 +75,17 @@ namespace StgSharp.Graphics.OpenGL get => currentEditingTextureIndex; } - public void ActivateAs( TextureUnit unit ) { _gl.ActiveTextureUnit( ( uint )unit ); } + internal OpenGLFunction GL => _gl; + + public void ActivateAs( TextureUnit unit ) + { + _gl.ActiveTextureUnit( ( uint )unit ); + } public void Bind2D( int index ) { currentEditingTextureIndex = index; - _gl.BindTexture( GLconst.TEXTURE_2D, _textureHandle[ index ] ); + _gl.BindTexture( GLconst.TEXTURE_2D, _textureHandle[ index ] ); } /// @@ -94,8 +97,8 @@ namespace StgSharp.Graphics.OpenGL { byte[] handle = i.PixelBuffer; _gl.TextureImage2d( - Texture2DTarget.Texture2D, 0, ( uint )i.Channel, ( uint )i.Width, ( uint )i.Height, - ( uint )i.Channel, i.PixelLayout, pixels: handle ); + Texture2DTarget.Texture2D, 0, i.Channel, ( uint )i.Width, + ( uint )i.Height, i.Channel, i.PixelLayout, pixels: handle ); _gl.GenerateMipmap( Texture2DTarget.Texture2D ); } @@ -108,14 +111,17 @@ namespace StgSharp.Graphics.OpenGL TextureFilter onMagnify ) { #if DEBUG - if( index != currentEditingTextureIndex ) - { + if( index != currentEditingTextureIndex ) { throw new InvalidOperationException( "Texture to be editted is not the one being activated." ); } #endif - _gl.TextureParameter( GLconst.TEXTURE_2D, GLconst.TEXTURE_MIN_FILTER, ( int )onMinify ); - _gl.TextureParameter( GLconst.TEXTURE_2D, GLconst.TEXTURE_MAG_FILTER, ( int )onMagnify ); + _gl.TextureParameter( + GLconst.TEXTURE_2D, GLconst.TEXTURE_MIN_FILTER, + ( int )onMinify ); + _gl.TextureParameter( + GLconst.TEXTURE_2D, GLconst.TEXTURE_MAG_FILTER, + ( int )onMagnify ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -125,21 +131,25 @@ namespace StgSharp.Graphics.OpenGL TextureWrap onVertical ) { #if DEBUG - if( index != currentEditingTextureIndex ) - { + if( index != currentEditingTextureIndex ) { throw new InvalidOperationException( "Texture to be editted is not the one being activated." ); } #endif - _gl.TextureParameter( GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_S, ( int )onHorizontial ); - _gl.TextureParameter( GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_T, ( int )onVertical ); + _gl.TextureParameter( + GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_S, + ( int )onHorizontial ); + _gl.TextureParameter( + GLconst.TEXTURE_2D, GLconst.TEXTURE_WRAP_T, ( int )onVertical ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Set2dProperty( int index, TextureProperty property ) { - Set2dFilterProperty( index, property.FilterOnMinify, property.FilterOnMagnify ); - Set2dWrapProperty( index, property.WrapOnHorizontial, property.WrapOnVertical ); + Set2dFilterProperty( + index, property.FilterOnMinify, property.FilterOnMagnify ); + Set2dWrapProperty( + index, property.WrapOnHorizontial, property.WrapOnVertical ); } #endregion texture setting @@ -192,23 +202,35 @@ namespace StgSharp.Graphics.OpenGL set => vert = value; } + public override bool Equals( [NotNullWhen( true )] object obj ) + { + return base.Equals( obj ); + } + public override int GetHashCode() { return HashCode.Combine( - FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, WrapOnVertical ); - } - - public override bool Equals([NotNullWhen(true)] object obj) - { - return base.Equals(obj); + FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, + WrapOnVertical ); } public override string ToString() { - return $"FilterOnMagnify:{FilterOnMagnify}, " + - $"FilterOnMagnify:{FilterOnMagnify}, " + - $"WrapOnHorizontial:{WrapOnHorizontial}, " + - $"WrapOnVertical:{WrapOnVertical}"; + return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; + } + + public static bool operator !=( + TextureProperty left, + TextureProperty right ) + { + return left.mask != right.mask; + } + + public static bool operator ==( + TextureProperty left, + TextureProperty right ) + { + return left.mask == right.mask; } public static implicit operator TextureProperty( @@ -219,18 +241,10 @@ namespace StgSharp.Graphics.OpenGL { return new TextureProperty( propertyValueTuple.onMagnify, propertyValueTuple.onMinify, - propertyValueTuple.onHorizontial, propertyValueTuple.onVertical ); + propertyValueTuple.onHorizontial, + propertyValueTuple.onVertical ); } - public static bool operator ==(TextureProperty left, TextureProperty right) - { - return left.mask == right.mask; - } - - public static bool operator !=(TextureProperty left, TextureProperty right) - { - return left.mask != right.mask; - } } #pragma warning disable CA1008 diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs index 587bc140..28ecd5a2 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/VAO.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Runtime.CompilerServices; @@ -40,37 +39,41 @@ namespace StgSharp.Graphics.OpenGL public sealed unsafe class VertexArray : GlBufferObjectBase { - internal VertexArray(int n, glRender binding) : base(binding) + internal VertexArray( int n, glRender binding ) + : base( binding ) { - _bufferHandle = GL.GenVertexArrays(n); + _bufferHandle = GL.GenVertexArrays( n ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override sealed void Bind(int index) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override sealed void Bind( int index ) { - GL.BindVertexArray(_bufferHandle[index]); + GL.BindVertexArray( _bufferHandle[ index ] ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public static void BindNull() { - OpenGLFunction.CurrentGL.BindVertexArray(GlHandle.Zero); + OpenGLFunction.CurrentGL.BindVertexArray( GlHandle.Zero ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetVertexAttribute(uint index, int vertexLength, TypeCode dataType, bool isNomalized, uint stride, int pointer) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetVertexAttribute( + uint index, + int vertexLength, + TypeCode dataType, + bool isNomalized, + uint stride, + int pointer ) { GL.SetVertexAttribute( - index, vertexLength, dataType, - isNomalized, - stride, pointer); + index, vertexLength, dataType, isNomalized, stride, pointer ); } - protected override sealed void Dispose(bool disposing) + protected override sealed void Dispose( bool disposing ) { - if (disposing) - { - GL.DeleteVertexArrays(_bufferHandle); + if( disposing ) { + GL.DeleteVertexArrays( _bufferHandle ); } } diff --git a/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs b/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs index 3ff9478d..d127128b 100644 --- a/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs +++ b/源代码/StgSharp/Graphics/OpenGL/Buffer/VBO.cs @@ -43,108 +43,126 @@ namespace StgSharp.Graphics.OpenGL public sealed unsafe class VertexBuffer : GlBufferObjectBase { - internal VertexBuffer(int n, glRender binding) : base(binding) + internal VertexBuffer( int n, glRender binding ) + : base( binding ) { - _bufferHandle = GL.GenBuffers(n); + _bufferHandle = GL.GenBuffers( n ); } - public override sealed void Bind(int index) + public override sealed void Bind( int index ) { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); } /// /// /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Unbind() { - GL.BindBuffer(BufferType.ArrayBuffer, GlHandle.Zero); + GL.BindBuffer( BufferType.ArrayBuffer, GlHandle.Zero ); } /// /// Set _data to current vertex buffer object /// - /// Type of bufferData - /// Index to find certain VBO in this instance - /// Data to write in - /// How OpenGL use these _data, defined by - public void WriteMatrixData(int index, T bufferData, BufferUsage usage) - where T : struct, IMat + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these _data, defined by + public void WriteMatrixData( + int index, + T bufferData, + BufferUsage usage ) + where T: struct, IMat { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ArrayBuffer, bufferData, usage); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, bufferData, usage ); } /// /// Set _data to current vertex buffer object /// - /// Type of bufferData - /// Index to find certain VBO in this instance - /// Data to write in - /// How OpenGL use these _data, defined by - public void WriteScalerData(int index, T[] bufferArray, BufferUsage usage) - where T : struct, + /// Type of bufferData + /// Index to find certain VBO in this instance + /// Data to write in + /// How OpenGL use these _data, defined by + public void WriteScalerData( + int index, + T[] bufferArray, + BufferUsage usage ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ArrayBuffer, bufferArray, usage); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, bufferArray, usage ); } /// /// Set _data to current vertex buffer object /// - /// Type of bufferData - /// Index to find certain VBO in this instance - /// A of _data to write in - /// How OpenGL use these _data, defined by - public void WriteScalerData(int index, ReadOnlySpan scalerSpan, BufferUsage usage) - where T : struct, + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of _data to write in + /// How OpenGL use these _data, defined by + public void WriteScalerData( + int index, + ReadOnlySpan scalerSpan, + BufferUsage usage ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferData(BufferType.ArrayBuffer, scalerSpan, usage); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferData( BufferType.ArrayBuffer, scalerSpan, usage ); } /// /// Set _data to current vertex buffer object /// - /// Type of bufferData - /// Index to find certain VBO in this instance - /// A of _data to write in - /// How OpenGL use these _data, defined by - public void WriteVectorData(int index, ReadOnlySpan vectorSpan, BufferUsage usage) where T : struct, IVector + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A of _data to write in + /// How OpenGL use these _data, defined by + public void WriteVectorData( + int index, + ReadOnlySpan vectorSpan, + BufferUsage usage ) + where T: struct, IVector { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorSpan, usage); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferVectorData( BufferType.ArrayBuffer, vectorSpan, usage ); } /// /// Set _data to current vertex buffer object /// - /// Type of bufferData - /// Index to find certain VBO in this instance - /// A array of _data to write in - /// How OpenGL use these _data, defined by - public void WriteVectorData(int index, T[] vectorArray, BufferUsage usage) where T : struct, IVector + /// Type of bufferData + /// Index to find certain VBO in this instance + /// A array of _data to write in + /// How OpenGL use these _data, defined by + public void WriteVectorData( + int index, + T[] vectorArray, + BufferUsage usage ) + where T: struct, IVector { - GL.BindBuffer(BufferType.ArrayBuffer, _bufferHandle[index]); - GL.SetBufferVectorData(BufferType.ArrayBuffer, vectorArray, usage); + GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); + GL.SetBufferVectorData( BufferType.ArrayBuffer, vectorArray, + usage ); } - protected override sealed void Dispose(bool disposing) + protected override sealed void Dispose( bool disposing ) { - if (disposing) - { - GL.DeleteBuffers(_bufferHandle); + if( disposing ) { + GL.DeleteBuffers( _bufferHandle ); } } diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs index b8c7f3e3..9f37e056 100644 --- a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -42,22 +42,25 @@ namespace StgSharp.Graphics.ShaderEdit { /// - /// + /// /// public void DisplayGLtypeDefinition(); /// - /// + /// /// - public void GainAllUniforms(ShaderProgram source, params string[] uniformName); + public void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ); /// - /// + /// /// /// public ShaderStruct GetConvertedGLtype(); + /// - /// + /// /// public void SetAllUniforms(); diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs index a4d71253..ae33f8d0 100644 --- a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -45,19 +45,21 @@ namespace StgSharp.Graphics.OpenGL { /// - /// Create an instance of program + /// Create an instance of program /// - /// New instance of instance. - [MethodImpl(MethodImplOptions.AggressiveInlining)] + /// New instance of instance. + [MethodImpl( MethodImplOptions.AggressiveInlining )] protected override sealed ShaderProgram CreateShaderProgram() { - return new ShaderProgram(this); + return new ShaderProgram( this ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected override sealed Shader CreateShaderSegment(ShaderType type, int count) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed Shader CreateShaderSegment( + ShaderType type, + int count ) { - return new Shader(GL.CreateShaderSet(count, type), type, this); + return new Shader( GL.CreateShaderSet( count, type ), type, this ); } } @@ -69,7 +71,10 @@ namespace StgSharp.Graphics.OpenGL internal readonly GlHandle[] handle; public readonly ShaderType type; - internal unsafe Shader(GlHandle[] handle, ShaderType usage, glRender stream) + internal unsafe Shader( + GlHandle[] handle, + ShaderType usage, + glRender stream ) { this.handle = handle; GL = stream.GL; @@ -81,60 +86,58 @@ namespace StgSharp.Graphics.OpenGL /// /// Attach one shader code to a shader program. /// - /// Shader program to attach - /// Index of shader code in current shader code set. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachTo(int index, ShaderProgram target) + /// Shader program to attach + /// Index of shader code in current shader code set. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void AttachTo( int index, ShaderProgram target ) { - GL.AttachShader(target.handle, handle[index]); + GL.AttachShader( target.handle, handle[ index ] ); } - public void CheckStatus(int index, ShaderStatus status) + public void CheckStatus( int index, ShaderStatus status ) { - string log = GL.GetShaderStatus(this, index, (int)status); - if (!string.IsNullOrEmpty(log)) - { - throw new Exception($"{$"Shader Error \t{status}\n"}{log}"); + string log = GL.GetShaderStatus( this, index, ( int )status ); + if( !string.IsNullOrEmpty( log ) ) { + throw new Exception( $"{$"Shader Error \t{status}\n"}{log}" ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile(int index, byte[] codeStream) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Compile( int index, byte[] codeStream ) { - if (codeStream == null) - { - throw new ArgumentNullException(nameof(codeStream)); + if( codeStream == null ) { + throw new ArgumentNullException( nameof( codeStream ) ); } - GL.LoadShaderSource(handle[index], codeStream); - GL.CompileShader(handle[index]); - CheckStatus(index, ShaderStatus.CompileStatus); + GL.LoadShaderSource( handle[ index ], codeStream ); + GL.CompileShader( handle[ index ] ); + CheckStatus( index, ShaderStatus.CompileStatus ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void Compile(int index, string codeStream) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void Compile( int index, string codeStream ) { - if (codeStream == null) - { - throw new ArgumentNullException(nameof(codeStream)); + if( codeStream == null ) { + throw new ArgumentNullException( nameof( codeStream ) ); } - GL.LoadShaderSource(handle[index], Encoding.ASCII.GetBytes(codeStream)); - GL.CompileShader(handle[index]); - CheckStatus(index, ShaderStatus.CompileStatus); + GL.LoadShaderSource( + handle[ index ], Encoding.ASCII.GetBytes( codeStream ) ); + GL.CompileShader( handle[ index ] ); + CheckStatus( index, ShaderStatus.CompileStatus ); } - public void FromBytes(byte[] stream) + public void FromBytes( byte[] stream ) { throw new NotImplementedException(); } - public static byte[] FromCodeFile(string fileRoute) + public static byte[] FromCodeFile( string fileRoute ) { - string str = File.ReadAllText(fileRoute); - if (string.IsNullOrEmpty(str)) - { - throw new InvalidOperationException($"Cannot load and GLSL code from {fileRoute}"); + string str = File.ReadAllText( fileRoute ); + if( string.IsNullOrEmpty( str ) ) { + throw new InvalidOperationException( + $"Cannot load and GLSL code from {fileRoute}" ); } - return Encoding.UTF8.GetBytes(str); + return Encoding.UTF8.GetBytes( str ); } public byte[] GetBytes() @@ -142,7 +145,7 @@ namespace StgSharp.Graphics.OpenGL return Array.Empty(); } - public byte[] GetBytes(out int length) + public byte[] GetBytes( out int length ) { throw new NotImplementedException(); } @@ -156,7 +159,9 @@ namespace StgSharp.Graphics.OpenGL public enum ShaderStatus : int { + CompileStatus = GLconst.COMPILE_STATUS, + } public class ShaderProgram @@ -168,64 +173,63 @@ namespace StgSharp.Graphics.OpenGL /// /// CustomizeInit a program with no shader attached. /// - internal unsafe ShaderProgram(glRender binding) + internal unsafe ShaderProgram( glRender binding ) { GL = binding.GL; handle = GL.CreateProgram(); } /// - /// Get a uniform form current shader, - /// the value type of the uniform should be provided. + /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// ContextName of the Uniform in shader code + /// ContextName of the Uniform in shader code /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe Uniform GetUniform(string name) where T : struct + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe Uniform GetUniform( string name ) where T: struct { - return new Uniform(GL.GetUniformLocation(this.handle, name)); + return new Uniform( GL.GetUniformLocation( this.handle, name ) ); } /// - /// Get a uniform form current shader, - /// the value type of the uniform should be provided. + /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// ContextName of the Uniform in shader code + /// ContextName of the Uniform in shader code /// - public unsafe Uniform GetUniform(string name) - where T : struct - where U : struct + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct { - return new Uniform(GL.GetUniformLocation(this.handle, name)); + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); } /// - /// Get a uniform form current shader, - /// the value type of the uniform should be provided. + /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// ContextName of the Uniform in shader code + /// ContextName of the Uniform in shader code /// - public unsafe Uniform GetUniform(string name) - where T : struct - where U : struct - where V : struct + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct + where V: struct { - return new Uniform(GL.GetUniformLocation(this.handle, name)); + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); } /// - /// Get a uniform form current shader, - /// the value type of the uniform should be provided. + /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// ContextName of the Uniform in shader code + /// ContextName of the Uniform in shader code /// - public unsafe Uniform GetUniform(string name) - where T : struct - where U : struct - where V : struct - where W : struct + public unsafe Uniform GetUniform( string name ) + where T: struct + where U: struct + where V: struct + where W: struct { - return new Uniform(GL.GetUniformLocation(this.handle, name)); + return new Uniform( + GL.GetUniformLocation( this.handle, name ) ); } /// @@ -233,20 +237,18 @@ namespace StgSharp.Graphics.OpenGL /// public unsafe void Link() { - if (InternalIO.InternalLinkShaderProgram((OpenglContext*)this.GL.ContextHandle, handle.Value) == 0) - { + if( InternalIO.InternalLinkShaderProgram( + ( OpenglContext* )this.GL.ContextHandle, handle.Value ) == 0 ) { IntPtr logPtr = InternalIO.InternalReadSSCLog(); - try - { + try { byte[] logByte = new byte[512]; - Marshal.Copy(logPtr, logByte, 0, 512); - string log = Encoding.UTF8.GetString(logByte); - log = log.Replace("\0", string.Empty); - InternalIO.InternalWriteLog(log, LogType.Error); + Marshal.Copy( logPtr, logByte, 0, 512 ); + string log = Encoding.UTF8.GetString( logByte ); + log = log.Replace( "\0", string.Empty ); + InternalIO.InternalWriteLog( log, LogType.Error ); } - catch (Exception ex) - { - InternalIO.InternalWriteLog(ex.Message, LogType.Error); + catch( Exception ex ) { + InternalIO.InternalWriteLog( ex.Message, LogType.Error ); } } } @@ -254,10 +256,10 @@ namespace StgSharp.Graphics.OpenGL /// /// Let the current viewPortDisplay use this shader. /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void Use() { - GL.UseProgram(handle); + GL.UseProgram( handle ); } ~ShaderProgram() diff --git a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs index f155b62e..ce684862 100644 --- a/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/源代码/StgSharp/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -52,93 +52,73 @@ namespace StgSharp.Graphics.OpenGL } - public sealed class Uniform : Uniform - where T : struct + public sealed class Uniform : Uniform where T: struct { - internal Uniform() - { + internal Uniform() { } - } - - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( GlHandle id ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( GlHandle handle ) { return new Uniform { id = handle }; } } - public sealed class Uniform : Uniform - where T : struct - where U : struct + public sealed class Uniform : Uniform where T: struct where U: struct { + internal Uniform() { } - - internal Uniform() - { - - } - - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( GlHandle id ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( GlHandle handle ) { return new Uniform { id = handle }; } } - public sealed class Uniform : Uniform - where T : struct - where U : struct - where V : struct + public sealed class Uniform : Uniform where T: struct + where U: struct + where V: struct { - internal Uniform() - { + internal Uniform() { } - } - - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( GlHandle id ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( GlHandle handle ) { return new Uniform { id = handle }; } } - public sealed class Uniform : Uniform - where T : struct - where U : struct - where V : struct - where W : struct + public sealed class Uniform : Uniform where T: struct + where U: struct + where V: struct + where W: struct { - internal Uniform() - { + internal Uniform() { } - } - - - internal unsafe Uniform(GlHandle id) + internal unsafe Uniform( GlHandle id ) { this.id = id; } - internal static Uniform FromHandle(GlHandle handle) + internal static Uniform FromHandle( GlHandle handle ) { return new Uniform { id = handle }; } @@ -148,59 +128,71 @@ namespace StgSharp.Graphics.OpenGL public unsafe partial class OpenGLFunction { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue - (Uniform uniform, Matrix44 mat) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( Uniform uniform, Matrix44 mat ) { Matrix44 temp = mat; - Context.glUniformMatrix4fv(uniform.id.SignedValue, 1, false, (float*)&temp); + Context.glUniformMatrix4fv( + uniform.id.SignedValue, 1, false, ( float* )&temp ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, vec4d vec) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + Uniform uniform, + Vec4 vec ) { - vec4d temp = vec; - Context.glUniform1fv(uniform.id.SignedValue, 4, &temp); + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp ); } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, vec4d vec) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( Uniform uniform, Vec4 vec ) { - vec4d temp = vec; - Context.glUniform1fv(uniform.id.SignedValue, 4, &temp); + Vec4 temp = vec; + Context.glUniform1fv( uniform.id.SignedValue, 4, &temp ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( Uniform uniform, float v0 ) { - Context.glUniform1f(uniform.id.SignedValue, v0); + Context.glUniform1f( uniform.id.SignedValue, v0 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, int i0) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( Uniform uniform, int i0 ) { - Context.glUniform1i(uniform.id.SignedValue, i0); + Context.glUniform1i( uniform.id.SignedValue, i0 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + Uniform uniform, + float v0, + float v1 ) { - Context.glUniform2f(uniform.id.SignedValue, v0, v1); + Context.glUniform2f( uniform.id.SignedValue, v0, v1 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1, float v2) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + Uniform uniform, + float v0, + float v1, + float v2 ) { - Context.glUniform3f(uniform.id.SignedValue, v0, v1, v2); + Context.glUniform3f( uniform.id.SignedValue, v0, v1, v2 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetUniformValue(Uniform uniform, float v0, float v1, float v2, float v3) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetUniformValue( + Uniform uniform, + float v0, + float v1, + float v2, + float v3 ) { - Context.glUniform4f(uniform.id.SignedValue, v0, v1, v2, v3); + Context.glUniform4f( uniform.id.SignedValue, v0, v1, v2, v3 ); } } - } \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/glAPICalling.cs b/源代码/StgSharp/Graphics/OpenGL/glAPICalling.cs index 9677da98..05af95e9 100644 --- a/源代码/StgSharp/Graphics/OpenGL/glAPICalling.cs +++ b/源代码/StgSharp/Graphics/OpenGL/glAPICalling.cs @@ -34,14 +34,11 @@ using System.Text; namespace StgSharp.Graphics.OpenGL { - [AttributeUsage(AttributeTargets.Method)] + [AttributeUsage( AttributeTargets.Method )] public sealed class OpenGLAPICallingAttribute : Attribute { - public OpenGLAPICallingAttribute() - { - - } + public OpenGLAPICallingAttribute() { } } } diff --git a/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs b/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs index 415275e0..d93f5922 100644 --- a/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs +++ b/源代码/StgSharp/Graphics/OpenGL/glApiManager.cs @@ -32,7 +32,6 @@ using StgSharp.Math; using StgSharp.MVVM; using StgSharp.MVVM.View; - using System; using System.Collections.Generic; using System.Linq; @@ -62,1923 +61,4440 @@ namespace StgSharp.Graphics.OpenGL /// /// Get the function pointer of given OpenGL api name /// - /// ContextName of the OpenGL api - /// The funtion pointer of the api in stream of - public static IntPtr LoadGLfunc(string name) + /// ContextName of the OpenGL api + /// The funtion pointer of the api in stream of + public static IntPtr LoadGLfunc( string name ) { - IntPtr ret = InternalIO.glfwGetProcAddress(name); - if (ret == default) - { + IntPtr ret = InternalIO.glfwGetProcAddress( name ); + if( ret == default ) { InternalIO.InternalAppendLog( - $"Cannot load OpenGL api called {name}, this api may not exist or supported."); + $"Cannot load OpenGL api called {name}, this api may not exist or supported." ); return ret; } return ret; } /// - /// Load all supported OpenGL APIs and bind them to given . + /// Load all supported OpenGL APIs and bind them to given . /// - /// The handle to current OpenGL viewPortDisplay - public static unsafe void LoadOpenGLApiTo(IntPtr contextHandle) + /// The handle to current OpenGL viewPortDisplay + public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) { - OpenglContext* context = (OpenglContext*)contextHandle; + OpenglContext* context = ( OpenglContext* )contextHandle; delegate* loader = &InternalIO.glfwGetProcAddress; - if ((IntPtr)context->glGetString != IntPtr.Zero) - { + if( ( IntPtr )context->glGetString != IntPtr.Zero ) { return; } - IntPtr proc = loader("glGetString"); - if (proc == IntPtr.Zero) - { -#if DEBUG - Console.WriteLine("Cannot load GL."); -#endif - throw new Exception("Cannot load gl"); + IntPtr proc = loader( "glGetString" ); + if( proc == IntPtr.Zero ) { + #if DEBUG + Console.WriteLine( "Cannot load GL." ); + #endif + throw new Exception( "Cannot load gl" ); } - context->glGetString = (delegate*)proc; + context->glGetString = ( delegate* )proc; string coreVersion; - if (context->glGetString(glVersion) == IntPtr.Zero) - { - InternalIO.InternalWriteLog("Failed to call glGetString", LogType.Error); + if( context->glGetString( glVersion ) == IntPtr.Zero ) { + InternalIO.InternalWriteLog( + "Failed to call glGetString", LogType.Error ); } - coreVersion = Marshal.PtrToStringAnsi(context->glGetString(glVersion)) ?? string.Empty; + coreVersion = Marshal.PtrToStringAnsi( + context->glGetString( glVersion ) ) ?? + string.Empty; - foreach (string branch in glBranch) - { - if (coreVersion.Contains(branch)) - { - coreVersion.Replace(branch, string.Empty); + foreach( string branch in glBranch ) { + if( coreVersion.Contains( branch ) ) { + coreVersion.Replace( branch, string.Empty ); } } - string[] versionSep = coreVersion!.Split('.'); - int majorVersion = int.Parse(versionSep[0]); - int minorVersion = int.Parse(versionSep[1]); - CheckCoreVersion(majorVersion, minorVersion); + string[] versionSep = coreVersion!.Split( '.' ); + int majorVersion = int.Parse( versionSep[ 0 ] ); + int minorVersion = int.Parse( versionSep[ 1 ] ); + CheckCoreVersion( majorVersion, minorVersion ); - try - { + try { #region load_core_gl - LoadGLcore10(context, loader); - LoadGLcore11(context, loader); - LoadGLcore12(context, loader); - LoadGLcore13(context, loader); - LoadGLcore14(context, loader); - LoadGLcore15(context, loader); - LoadGLcore20(context, loader); - LoadGLcore21(context, loader); - LoadGLcore30(context, loader); - LoadGLcore31(context, loader); - LoadGLcore32(context, loader); - LoadGLcore33(context, loader); - LoadGLcore40(context, loader); - LoadGLcore41(context, loader); - LoadGLcore42(context, loader); - LoadGLcore43(context, loader); - LoadGLcore44(context, loader); - LoadGLcore45(context, loader); - LoadGLcore46(context, loader); + LoadGLcore10( context, loader ); + LoadGLcore11( context, loader ); + LoadGLcore12( context, loader ); + LoadGLcore13( context, loader ); + LoadGLcore14( context, loader ); + LoadGLcore15( context, loader ); + LoadGLcore20( context, loader ); + LoadGLcore21( context, loader ); + LoadGLcore30( context, loader ); + LoadGLcore31( context, loader ); + LoadGLcore32( context, loader ); + LoadGLcore33( context, loader ); + LoadGLcore40( context, loader ); + LoadGLcore41( context, loader ); + LoadGLcore42( context, loader ); + LoadGLcore43( context, loader ); + LoadGLcore44( context, loader ); + LoadGLcore45( context, loader ); + LoadGLcore46( context, loader ); #endregion load_core_gl } - catch (Exception ex) - { - if (ex.Message != "Final Version") - { + catch( Exception ex ) { + if( ex.Message != "Final Version" ) { throw; } } uint code = context->glGetError(); - Console.WriteLine(code); - if (code != 0) - { - throw new GlExecutionException(code); + Console.WriteLine( code ); + if( code != 0 ) { + throw new GlExecutionException( code ); } int extensionCount; - context->glGetIntegerv(GLconst.NUM_EXTENSIONS, &extensionCount); - if (extensionCount == 0) - { - InternalIO.InternalWriteLog("No supported OpenGL extensions are found.", LogType.Info); + context->glGetIntegerv( GLconst.NUM_EXTENSIONS, &extensionCount ); + if( extensionCount == 0 ) { + InternalIO.InternalWriteLog( + "No supported OpenGL extensions are found.", LogType.Info ); return; } List extensions = new List(); - for (uint i = 0; i < extensionCount; i++) - { - byte* strPtr = context->glGetStringi(GLconst.EXTENSIONS, i); - extensions.Add(Marshal.PtrToStringAnsi((IntPtr)strPtr)); + for( uint i = 0; i < extensionCount; i++ ) { + byte* strPtr = context->glGetStringi( GLconst.EXTENSIONS, i ); + extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); } - InternalIO.InternalWriteLog($"{$"Find OpenGL extensions:"}{Environment.NewLine}{($"{string.Join(';', extensions)}")}", - LogType.Info); + InternalIO.InternalWriteLog( + $"{$"Find OpenGL extensions:"}{Environment.NewLine}{($"{string.Join(';', extensions)}")}", + LogType.Info ); #region checkGLextensions - if (extensions.Contains("gl_4DFX_multisample")) { _4DFX_multisample = true; extensions.Remove("gl_4DFX_multisample"); } - if (extensions.Contains("gl_3DFX_tbuffer")) { _3DFX_tbuffer = true; extensions.Remove("gl_3DFX_tbuffer"); } - if (extensions.Contains("gl_3DFX_texture_compression_FXT1")) { _3DFX_texture_compression_FXT1 = true; extensions.Remove("gl_3DFX_texture_compression_FXT1"); } - if (extensions.Contains("gl_AMD_blend_minmax_factor")) { AMD_blend_minmax_factor = true; extensions.Remove("glAMD_blend_minmax_factor"); } - if (extensions.Contains("gl_AMD_conservative_depth")) { AMD_conservative_depth = true; extensions.Remove("glAMD_conservative_depth"); } - if (extensions.Contains("gl_AMD_debug_output")) { AMD_debug_output = true; extensions.Remove("glAMD_debug_output"); } - if (extensions.Contains("gl_AMD_depth_clamp_separate")) { AMD_depth_clamp_separate = true; extensions.Remove("glAMD_depth_clamp_separate"); } - if (extensions.Contains("gl_AMD_draw_buffers_blend")) { AMD_draw_buffers_blend = true; extensions.Remove("glAMD_draw_buffers_blend"); } - if (extensions.Contains("gl_AMD_framebuffer_multisample_advanced")) { AMD_framebuffer_multisample_advanced = true; extensions.Remove("glAMD_framebuffer_multisample_advanced"); } - if (extensions.Contains("gl_AMD_framebuffer_sample_positions")) { AMD_framebuffer_sample_positions = true; extensions.Remove("glAMD_framebuffer_sample_positions"); } - if (extensions.Contains("gl_AMD_gcn_shader")) { AMD_gcn_shader = true; extensions.Remove("glAMD_gcn_shader"); } - if (extensions.Contains("gl_AMD_gpu_shader_half_float")) { AMD_gpu_shader_half_float = true; extensions.Remove("glAMD_gpu_shader_half_float"); } - if (extensions.Contains("gl_AMD_gpu_shader_int16")) { AMD_gpu_shader_int16 = true; extensions.Remove("glAMD_gpu_shader_int16"); } - if (extensions.Contains("gl_AMD_gpu_shader_int64")) { AMD_gpu_shader_int64 = true; extensions.Remove("glAMD_gpu_shader_int64"); } - if (extensions.Contains("gl_AMD_interleaved_elements")) { AMD_interleaved_elements = true; extensions.Remove("glAMD_interleaved_elements"); } - if (extensions.Contains("gl_AMD_multi_draw_indirect")) { AMD_multi_draw_indirect = true; extensions.Remove("glAMD_multi_draw_indirect"); } - if (extensions.Contains("gl_AMD_name_gen_delete")) { AMD_name_gen_delete = true; extensions.Remove("glAMD_name_gen_delete"); } - if (extensions.Contains("gl_AMD_occlusion_query_event")) { AMD_occlusion_query_event = true; extensions.Remove("glAMD_occlusion_query_event"); } - if (extensions.Contains("gl_AMD_performance_monitor")) { AMD_performance_monitor = true; extensions.Remove("glAMD_performance_monitor"); } - if (extensions.Contains("gl_AMD_pinned_memory")) { AMD_pinned_memory = true; extensions.Remove("glAMD_pinned_memory"); } - if (extensions.Contains("gl_AMD_query_buffer_object")) { AMD_query_buffer_object = true; extensions.Remove("glAMD_query_buffer_object"); } - if (extensions.Contains("gl_AMD_sample_positions")) { AMD_sample_positions = true; extensions.Remove("glAMD_sample_positions"); } - if (extensions.Contains("gl_AMD_seamless_cubemap_per_texture")) { AMD_seamless_cubemap_per_texture = true; extensions.Remove("glAMD_seamless_cubemap_per_texture"); } - if (extensions.Contains("gl_AMD_shader_atomic_counter_ops")) { AMD_shader_atomic_counter_ops = true; extensions.Remove("glAMD_shader_atomic_counter_ops"); } - if (extensions.Contains("gl_AMD_shader_ballot")) { AMD_shader_ballot = true; extensions.Remove("glAMD_shader_ballot"); } - if (extensions.Contains("gl_AMD_shader_explicit_vertex_parameter")) { AMD_shader_explicit_vertex_parameter = true; extensions.Remove("glAMD_shader_explicit_vertex_parameter"); } - if (extensions.Contains("gl_AMD_shader_gpu_shader_half_float_fetch")) { AMD_shader_gpu_shader_half_float_fetch = true; extensions.Remove("glAMD_shader_gpu_shader_half_float_fetch"); } - if (extensions.Contains("gl_AMD_shader_image_load_store_lod")) { AMD_shader_image_load_store_lod = true; extensions.Remove("glAMD_shader_image_load_store_lod"); } - if (extensions.Contains("gl_AMD_shader_stencil_export")) { AMD_shader_stencil_export = true; extensions.Remove("glAMD_shader_stencil_export"); } - if (extensions.Contains("gl_AMD_shader_trinary_minmax")) { AMD_shader_trinary_minmax = true; extensions.Remove("glAMD_shader_trinary_minmax"); } - if (extensions.Contains("gl_AMD_sparse_texture")) { AMD_sparse_texture = true; extensions.Remove("glAMD_sparse_texture"); } - if (extensions.Contains("gl_AMD_stencil_operation_extended")) { AMD_stencil_operation_extended = true; extensions.Remove("glAMD_stencil_operation_extended"); } - if (extensions.Contains("gl_AMD_texture_gather_bias_lod")) { AMD_texture_gather_bias_lod = true; extensions.Remove("glAMD_texture_gather_bias_lod"); } - if (extensions.Contains("gl_AMD_texture_texture4")) { AMD_texture_texture4 = true; extensions.Remove("glAMD_texture_texture4"); } - if (extensions.Contains("gl_AMD_transform_feedback3_lines_triangles")) { AMD_transform_feedback3_lines_triangles = true; extensions.Remove("glAMD_transform_feedback3_lines_triangles"); } - if (extensions.Contains("gl_AMD_transform_feedback4")) { AMD_transform_feedback4 = true; extensions.Remove("glAMD_transform_feedback4"); } - if (extensions.Contains("gl_AMD_vertex_shader_layer")) { AMD_vertex_shader_layer = true; extensions.Remove("glAMD_vertex_shader_layer"); } - if (extensions.Contains("gl_AMD_vertex_shader_tessellator")) { AMD_vertex_shader_tessellator = true; extensions.Remove("glAMD_vertex_shader_tessellator"); } - if (extensions.Contains("gl_AMD_vertex_shader_viewport_index")) { AMD_vertex_shader_viewport_index = true; extensions.Remove("glAMD_vertex_shader_viewport_index"); } - if (extensions.Contains("gl_APPLE_aux_depth_stencil")) { APPLE_aux_depth_stencil = true; extensions.Remove("glAPPLE_aux_depth_stencil"); } - if (extensions.Contains("gl_APPLE_client_storage")) { APPLE_client_storage = true; extensions.Remove("glAPPLE_client_storage"); } - if (extensions.Contains("gl_APPLE_element_array")) { APPLE_element_array = true; extensions.Remove("glAPPLE_element_array"); } - if (extensions.Contains("gl_APPLE_fence")) { APPLE_fence = true; extensions.Remove("glAPPLE_fence"); } - if (extensions.Contains("gl_APPLE_float_pixels")) { APPLE_float_pixels = true; extensions.Remove("glAPPLE_float_pixels"); } - if (extensions.Contains("gl_APPLE_flush_buffer_range")) { APPLE_flush_buffer_range = true; extensions.Remove("glAPPLE_flush_buffer_range"); } - if (extensions.Contains("gl_APPLE_object_purgeable")) { APPLE_object_purgeable = true; extensions.Remove("glAPPLE_object_purgeable"); } - if (extensions.Contains("gl_APPLE_rgb_422")) { APPLE_rgb_422 = true; extensions.Remove("glAPPLE_rgb_422"); } - if (extensions.Contains("gl_APPLE_row_bytes")) { APPLE_row_bytes = true; extensions.Remove("glAPPLE_row_bytes"); } - if (extensions.Contains("gl_APPLE_specular_vector")) { APPLE_specular_vector = true; extensions.Remove("glAPPLE_specular_vector"); } - if (extensions.Contains("gl_APPLE_texture_range")) { APPLE_texture_range = true; extensions.Remove("glAPPLE_texture_range"); } - if (extensions.Contains("gl_APPLE_transform_hint")) { APPLE_transform_hint = true; extensions.Remove("glAPPLE_transform_hint"); } - if (extensions.Contains("gl_APPLE_vertex_array_object")) { APPLE_vertex_array_object = true; extensions.Remove("glAPPLE_vertex_array_object"); } - if (extensions.Contains("gl_APPLE_vertex_array_range")) { APPLE_vertex_array_range = true; extensions.Remove("glAPPLE_vertex_array_range"); } - if (extensions.Contains("gl_APPLE_vertex_program_evaluators")) { APPLE_vertex_program_evaluators = true; extensions.Remove("glAPPLE_vertex_program_evaluators"); } - if (extensions.Contains("gl_APPLE_ycbcr_422")) { APPLE_ycbcr_422 = true; extensions.Remove("glAPPLE_ycbcr_422"); } - if (extensions.Contains("gl_ARB_ES2_compatibility")) { ARB_ES2_compatibility = true; extensions.Remove("glARB_ES2_compatibility"); } - if (extensions.Contains("gl_ARB_ES3_1_compatibility")) { ARB_ES3_1_compatibility = true; extensions.Remove("glARB_ES3_1_compatibility"); } - if (extensions.Contains("gl_ARB_ES3_2_compatibility")) { ARB_ES3_2_compatibility = true; extensions.Remove("glARB_ES3_2_compatibility"); } - if (extensions.Contains("gl_ARB_ES3_compatibility")) { ARB_ES3_compatibility = true; extensions.Remove("glARB_ES3_compatibility"); } - if (extensions.Contains("gl_ARB_arrays_of_arrays")) { ARB_arrays_of_arrays = true; extensions.Remove("glARB_arrays_of_arrays"); } - if (extensions.Contains("gl_ARB_base_instance")) { ARB_base_instance = true; extensions.Remove("glARB_base_instance"); } - if (extensions.Contains("gl_ARB_bindless_texture")) { ARB_bindless_texture = true; extensions.Remove("glARB_bindless_texture"); } - if (extensions.Contains("gl_ARB_blend_func_extended")) { ARB_blend_func_extended = true; extensions.Remove("glARB_blend_func_extended"); } - if (extensions.Contains("gl_ARB_buffer_storage")) { ARB_buffer_storage = true; extensions.Remove("glARB_buffer_storage"); } - if (extensions.Contains("gl_ARB_cl_event")) { ARB_cl_event = true; extensions.Remove("glARB_cl_event"); } - if (extensions.Contains("gl_ARB_clear_buffer_object")) { ARB_clear_buffer_object = true; extensions.Remove("glARB_clear_buffer_object"); } - if (extensions.Contains("gl_ARB_clear_texture")) { ARB_clear_texture = true; extensions.Remove("glARB_clear_texture"); } - if (extensions.Contains("gl_ARB_clip_control")) { ARB_clip_control = true; extensions.Remove("glARB_clip_control"); } - if (extensions.Contains("gl_ARB_color_buffer_float")) { ARB_color_buffer_float = true; extensions.Remove("glARB_color_buffer_float"); } - if (extensions.Contains("gl_ARB_compatibility")) { ARB_compatibility = true; extensions.Remove("glARB_compatibility"); } - if (extensions.Contains("gl_ARB_compressed_texture_pixel_storage")) { ARB_compressed_texture_pixel_storage = true; extensions.Remove("glARB_compressed_texture_pixel_storage"); } - if (extensions.Contains("gl_ARB_compute_shader")) { ARB_compute_shader = true; extensions.Remove("glARB_compute_shader"); } - if (extensions.Contains("gl_ARB_compute_variable_group_size")) { ARB_compute_variable_group_size = true; extensions.Remove("glARB_compute_variable_group_size"); } - if (extensions.Contains("gl_ARB_conditional_render_inverted")) { ARB_conditional_render_inverted = true; extensions.Remove("glARB_conditional_render_inverted"); } - if (extensions.Contains("gl_ARB_conservative_depth")) { ARB_conservative_depth = true; extensions.Remove("glARB_conservative_depth"); } - if (extensions.Contains("gl_ARB_copy_buffer")) { ARB_copy_buffer = true; extensions.Remove("glARB_copy_buffer"); } - if (extensions.Contains("gl_ARB_copy_image")) { ARB_copy_image = true; extensions.Remove("glARB_copy_image"); } - if (extensions.Contains("gl_ARB_cull_distance")) { ARB_cull_distance = true; extensions.Remove("glARB_cull_distance"); } - if (extensions.Contains("gl_ARB_debug_output")) { ARB_debug_output = true; extensions.Remove("glARB_debug_output"); } - if (extensions.Contains("gl_ARB_depth_buffer_float")) { ARB_depth_buffer_float = true; extensions.Remove("glARB_depth_buffer_float"); } - if (extensions.Contains("gl_ARB_depth_clamp")) { ARB_depth_clamp = true; extensions.Remove("glARB_depth_clamp"); } - if (extensions.Contains("gl_ARB_depth_texture")) { ARB_depth_texture = true; extensions.Remove("glARB_depth_texture"); } - if (extensions.Contains("gl_ARB_derivative_control")) { ARB_derivative_control = true; extensions.Remove("glARB_derivative_control"); } - if (extensions.Contains("gl_ARB_direct_state_access")) { ARB_direct_state_access = true; extensions.Remove("glARB_direct_state_access"); } - if (extensions.Contains("gl_ARB_draw_buffers")) { ARB_draw_buffers = true; extensions.Remove("glARB_draw_buffers"); } - if (extensions.Contains("gl_ARB_draw_buffers_blend")) { ARB_draw_buffers_blend = true; extensions.Remove("glARB_draw_buffers_blend"); } - if (extensions.Contains("gl_ARB_draw_elements_base_vertex")) { ARB_draw_elements_base_vertex = true; extensions.Remove("glARB_draw_elements_base_vertex"); } - if (extensions.Contains("gl_ARB_draw_indirect")) { ARB_draw_indirect = true; extensions.Remove("glARB_draw_indirect"); } - if (extensions.Contains("gl_ARB_draw_instanced")) { ARB_draw_instanced = true; extensions.Remove("glARB_draw_instanced"); } - if (extensions.Contains("gl_ARB_enhanced_layouts")) { ARB_enhanced_layouts = true; extensions.Remove("glARB_enhanced_layouts"); } - if (extensions.Contains("gl_ARB_explicit_attrib_location")) { ARB_explicit_attrib_location = true; extensions.Remove("glARB_explicit_attrib_location"); } - if (extensions.Contains("gl_ARB_explicit_uniform_location")) { ARB_explicit_uniform_location = true; extensions.Remove("glARB_explicit_uniform_location"); } - if (extensions.Contains("gl_ARB_fragment_coord_conventions")) { ARB_fragment_coord_conventions = true; extensions.Remove("glARB_fragment_coord_conventions"); } - if (extensions.Contains("gl_ARB_fragment_layer_viewport")) { ARB_fragment_layer_viewport = true; extensions.Remove("glARB_fragment_layer_viewport"); } - if (extensions.Contains("gl_ARB_fragment_program")) { ARB_fragment_program = true; extensions.Remove("glARB_fragment_program"); } - if (extensions.Contains("gl_ARB_fragment_program_shadow")) { ARB_fragment_program_shadow = true; extensions.Remove("glARB_fragment_program_shadow"); } - if (extensions.Contains("gl_ARB_fragment_shader")) { ARB_fragment_shader = true; extensions.Remove("glARB_fragment_shader"); } - if (extensions.Contains("gl_ARB_fragment_shader_interlock")) { ARB_fragment_shader_interlock = true; extensions.Remove("glARB_fragment_shader_interlock"); } - if (extensions.Contains("gl_ARB_framebuffer_no_attachments")) { ARB_framebuffer_no_attachments = true; extensions.Remove("glARB_framebuffer_no_attachments"); } - if (extensions.Contains("gl_ARB_framebuffer_object")) { ARB_framebuffer_object = true; extensions.Remove("glARB_framebuffer_object"); } - if (extensions.Contains("gl_ARB_framebuffer_sRGB")) { ARB_framebuffer_sRGB = true; extensions.Remove("glARB_framebuffer_sRGB"); } - if (extensions.Contains("gl_ARB_geometry_shader4")) { ARB_geometry_shader4 = true; extensions.Remove("glARB_geometry_shader4"); } - if (extensions.Contains("gl_ARB_get_program_binary")) { ARB_get_program_binary = true; extensions.Remove("glARB_get_program_binary"); } - if (extensions.Contains("gl_ARB_get_texture_sub_image")) { ARB_get_texture_sub_image = true; extensions.Remove("glARB_get_texture_sub_image"); } - if (extensions.Contains("gl_ARB_gl_spirv")) { ARB_gl_spirv = true; extensions.Remove("glARB_gl_spirv"); } - if (extensions.Contains("gl_ARB_gpu_shader5")) { ARB_gpu_shader5 = true; extensions.Remove("glARB_gpu_shader5"); } - if (extensions.Contains("gl_ARB_gpu_shader_fp64")) { ARB_gpu_shader_fp64 = true; extensions.Remove("glARB_gpu_shader_fp64"); } - if (extensions.Contains("gl_ARB_gpu_shader_int64")) { ARB_gpu_shader_int64 = true; extensions.Remove("glARB_gpu_shader_int64"); } - if (extensions.Contains("gl_ARB_half_float_pixel")) { ARB_half_float_pixel = true; extensions.Remove("glARB_half_float_pixel"); } - if (extensions.Contains("gl_ARB_half_float_vertex")) { ARB_half_float_vertex = true; extensions.Remove("glARB_half_float_vertex"); } - if (extensions.Contains("gl_ARB_imaging")) { ARB_imaging = true; extensions.Remove("glARB_imaging"); } - if (extensions.Contains("gl_ARB_indirect_parameters")) { ARB_indirect_parameters = true; extensions.Remove("glARB_indirect_parameters"); } - if (extensions.Contains("gl_ARB_instanced_arrays")) { ARB_instanced_arrays = true; extensions.Remove("glARB_instanced_arrays"); } - if (extensions.Contains("gl_ARB_internalformat_query")) { ARB_internalformat_query = true; extensions.Remove("glARB_internalformat_query"); } - if (extensions.Contains("gl_ARB_internalformat_query2")) { ARB_internalformat_query2 = true; extensions.Remove("glARB_internalformat_query2"); } - if (extensions.Contains("gl_ARB_invalidate_subdata")) { ARB_invalidate_subdata = true; extensions.Remove("glARB_invalidate_subdata"); } - if (extensions.Contains("gl_ARB_map_buffer_alignment")) { ARB_map_buffer_alignment = true; extensions.Remove("glARB_map_buffer_alignment"); } - if (extensions.Contains("gl_ARB_map_buffer_range")) { ARB_map_buffer_range = true; extensions.Remove("glARB_map_buffer_range"); } - if (extensions.Contains("gl_ARB_matrix_palette")) { ARB_matrix_palette = true; extensions.Remove("glARB_matrix_palette"); } - if (extensions.Contains("gl_ARB_multi_bind")) { ARB_multi_bind = true; extensions.Remove("glARB_multi_bind"); } - if (extensions.Contains("gl_ARB_multi_draw_indirect")) { ARB_multi_draw_indirect = true; extensions.Remove("glARB_multi_draw_indirect"); } - if (extensions.Contains("gl_ARB_multisample")) { ARB_multisample = true; extensions.Remove("glARB_multisample"); } - if (extensions.Contains("gl_ARB_multitexture")) { ARB_multitexture = true; extensions.Remove("glARB_multitexture"); } - if (extensions.Contains("gl_ARB_occlusion_query")) { ARB_occlusion_query = true; extensions.Remove("glARB_occlusion_query"); } - if (extensions.Contains("gl_ARB_occlusion_query2")) { ARB_occlusion_query2 = true; extensions.Remove("glARB_occlusion_query2"); } - if (extensions.Contains("gl_ARB_parallel_shader_compile")) { ARB_parallel_shader_compile = true; extensions.Remove("glARB_parallel_shader_compile"); } - if (extensions.Contains("gl_ARB_pipeline_statistics_query")) { ARB_pipeline_statistics_query = true; extensions.Remove("glARB_pipeline_statistics_query"); } - if (extensions.Contains("gl_ARB_pixel_buffer_object")) { ARB_pixel_buffer_object = true; extensions.Remove("glARB_pixel_buffer_object"); } - if (extensions.Contains("gl_ARB_point_parameters")) { ARB_point_parameters = true; extensions.Remove("glARB_point_parameters"); } - if (extensions.Contains("gl_ARB_point_sprite")) { ARB_point_sprite = true; extensions.Remove("glARB_point_sprite"); } - if (extensions.Contains("gl_ARB_polygon_offset_clamp")) { ARB_polygon_offset_clamp = true; extensions.Remove("glARB_polygon_offset_clamp"); } - if (extensions.Contains("gl_ARB_post_depth_coverage")) { ARB_post_depth_coverage = true; extensions.Remove("glARB_post_depth_coverage"); } - if (extensions.Contains("gl_ARB_program_interface_query")) { ARB_program_interface_query = true; extensions.Remove("glARB_program_interface_query"); } - if (extensions.Contains("gl_ARB_provoking_vertex")) { ARB_provoking_vertex = true; extensions.Remove("glARB_provoking_vertex"); } - if (extensions.Contains("gl_ARB_query_buffer_object")) { ARB_query_buffer_object = true; extensions.Remove("glARB_query_buffer_object"); } - if (extensions.Contains("gl_ARB_robust_buffer_access_behavior")) { ARB_robust_buffer_access_behavior = true; extensions.Remove("glARB_robust_buffer_access_behavior"); } - if (extensions.Contains("gl_ARB_robustness")) { ARB_robustness = true; extensions.Remove("glARB_robustness"); } - if (extensions.Contains("gl_ARB_robustness_isolation")) { ARB_robustness_isolation = true; extensions.Remove("glARB_robustness_isolation"); } - if (extensions.Contains("gl_ARB_sample_locations")) { ARB_sample_locations = true; extensions.Remove("glARB_sample_locations"); } - if (extensions.Contains("gl_ARB_sample_shading")) { ARB_sample_shading = true; extensions.Remove("glARB_sample_shading"); } - if (extensions.Contains("gl_ARB_sampler_objects")) { ARB_sampler_objects = true; extensions.Remove("glARB_sampler_objects"); } - if (extensions.Contains("gl_ARB_seamless_cube_map")) { ARB_seamless_cube_map = true; extensions.Remove("glARB_seamless_cube_map"); } - if (extensions.Contains("gl_ARB_seamless_cubemap_per_texture")) { ARB_seamless_cubemap_per_texture = true; extensions.Remove("glARB_seamless_cubemap_per_texture"); } - if (extensions.Contains("gl_ARB_separate_shader_objects")) { ARB_separate_shader_objects = true; extensions.Remove("glARB_separate_shader_objects"); } - if (extensions.Contains("gl_ARB_shader_atomic_counter_ops")) { ARB_shader_atomic_counter_ops = true; extensions.Remove("glARB_shader_atomic_counter_ops"); } - if (extensions.Contains("gl_ARB_shader_atomic_counters")) { ARB_shader_atomic_counters = true; extensions.Remove("glARB_shader_atomic_counters"); } - if (extensions.Contains("gl_ARB_shader_ballot")) { ARB_shader_ballot = true; extensions.Remove("glARB_shader_ballot"); } - if (extensions.Contains("gl_ARB_shader_bit_encoding")) { ARB_shader_bit_encoding = true; extensions.Remove("glARB_shader_bit_encoding"); } - if (extensions.Contains("gl_ARB_shader_clock")) { ARB_shader_clock = true; extensions.Remove("glARB_shader_clock"); } - if (extensions.Contains("gl_ARB_shader_draw_parameters")) { ARB_shader_draw_parameters = true; extensions.Remove("glARB_shader_draw_parameters"); } - if (extensions.Contains("gl_ARB_shader_group_vote")) { ARB_shader_group_vote = true; extensions.Remove("glARB_shader_group_vote"); } - if (extensions.Contains("gl_ARB_shader_image_load_store")) { ARB_shader_image_load_store = true; extensions.Remove("glARB_shader_image_load_store"); } - if (extensions.Contains("gl_ARB_shader_image_size")) { ARB_shader_image_size = true; extensions.Remove("glARB_shader_image_size"); } - if (extensions.Contains("gl_ARB_shader_objects")) { ARB_shader_objects = true; extensions.Remove("glARB_shader_objects"); } - if (extensions.Contains("gl_ARB_shader_precision")) { ARB_shader_precision = true; extensions.Remove("glARB_shader_precision"); } - if (extensions.Contains("gl_ARB_shader_stencil_export")) { ARB_shader_stencil_export = true; extensions.Remove("glARB_shader_stencil_export"); } - if (extensions.Contains("gl_ARB_shader_storage_buffer_object")) { ARB_shader_storage_buffer_object = true; extensions.Remove("glARB_shader_storage_buffer_object"); } - if (extensions.Contains("gl_ARB_shader_subroutine")) { ARB_shader_subroutine = true; extensions.Remove("glARB_shader_subroutine"); } - if (extensions.Contains("gl_ARB_shader_texture_image_samples")) { ARB_shader_texture_image_samples = true; extensions.Remove("glARB_shader_texture_image_samples"); } - if (extensions.Contains("gl_ARB_shader_texture_lod")) { ARB_shader_texture_lod = true; extensions.Remove("glARB_shader_texture_lod"); } - if (extensions.Contains("gl_ARB_shader_viewport_layer_array")) { ARB_shader_viewport_layer_array = true; extensions.Remove("glARB_shader_viewport_layer_array"); } - if (extensions.Contains("gl_ARB_shading_language_100")) { ARB_shading_language_100 = true; extensions.Remove("glARB_shading_language_100"); } - if (extensions.Contains("gl_ARB_shading_language_420pack")) { ARB_shading_language_420pack = true; extensions.Remove("glARB_shading_language_420pack"); } - if (extensions.Contains("gl_ARB_shading_language_include")) { ARB_shading_language_include = true; extensions.Remove("glARB_shading_language_include"); } - if (extensions.Contains("gl_ARB_shading_language_packing")) { ARB_shading_language_packing = true; extensions.Remove("glARB_shading_language_packing"); } - if (extensions.Contains("gl_ARB_shadow")) { ARB_shadow = true; extensions.Remove("glARB_shadow"); } - if (extensions.Contains("gl_ARB_shadow_ambient")) { ARB_shadow_ambient = true; extensions.Remove("glARB_shadow_ambient"); } - if (extensions.Contains("gl_ARB_sparse_buffer")) { ARB_sparse_buffer = true; extensions.Remove("glARB_sparse_buffer"); } - if (extensions.Contains("gl_ARB_sparse_texture")) { ARB_sparse_texture = true; extensions.Remove("glARB_sparse_texture"); } - if (extensions.Contains("gl_ARB_sparse_texture2")) { ARB_sparse_texture2 = true; extensions.Remove("glARB_sparse_texture2"); } - if (extensions.Contains("gl_ARB_sparse_texture_clamp")) { ARB_sparse_texture_clamp = true; extensions.Remove("glARB_sparse_texture_clamp"); } - if (extensions.Contains("gl_ARB_spirv_extensions")) { ARB_spirv_extensions = true; extensions.Remove("glARB_spirv_extensions"); } - if (extensions.Contains("gl_ARB_stencil_texturing")) { ARB_stencil_texturing = true; extensions.Remove("glARB_stencil_texturing"); } - if (extensions.Contains("gl_ARB_sync")) { ARB_sync = true; extensions.Remove("glARB_sync"); } - if (extensions.Contains("gl_ARB_tessellation_shader")) { ARB_tessellation_shader = true; extensions.Remove("glARB_tessellation_shader"); } - if (extensions.Contains("gl_ARB_texture_barrier")) { ARB_texture_barrier = true; extensions.Remove("glARB_texture_barrier"); } - if (extensions.Contains("gl_ARB_texture_border_clamp")) { ARB_texture_border_clamp = true; extensions.Remove("glARB_texture_border_clamp"); } - if (extensions.Contains("gl_ARB_texture_buffer_object")) { ARB_texture_buffer_object = true; extensions.Remove("glARB_texture_buffer_object"); } - if (extensions.Contains("gl_ARB_texture_buffer_object_rgb32")) { ARB_texture_buffer_object_rgb32 = true; extensions.Remove("glARB_texture_buffer_object_rgb32"); } - if (extensions.Contains("gl_ARB_texture_buffer_range")) { ARB_texture_buffer_range = true; extensions.Remove("glARB_texture_buffer_range"); } - if (extensions.Contains("gl_ARB_texture_compression")) { ARB_texture_compression = true; extensions.Remove("glARB_texture_compression"); } - if (extensions.Contains("gl_ARB_texture_compression_bptc")) { ARB_texture_compression_bptc = true; extensions.Remove("glARB_texture_compression_bptc"); } - if (extensions.Contains("gl_ARB_texture_compression_rgtc")) { ARB_texture_compression_rgtc = true; extensions.Remove("glARB_texture_compression_rgtc"); } - if (extensions.Contains("gl_ARB_texture_cube_map")) { ARB_texture_cube_map = true; extensions.Remove("glARB_texture_cube_map"); } - if (extensions.Contains("gl_ARB_texture_cube_map_array")) { ARB_texture_cube_map_array = true; extensions.Remove("glARB_texture_cube_map_array"); } - if (extensions.Contains("gl_ARB_texture_env_add")) { ARB_texture_env_add = true; extensions.Remove("glARB_texture_env_add"); } - if (extensions.Contains("gl_ARB_texture_env_combine")) { ARB_texture_env_combine = true; extensions.Remove("glARB_texture_env_combine"); } - if (extensions.Contains("gl_ARB_texture_env_crossbar")) { ARB_texture_env_crossbar = true; extensions.Remove("glARB_texture_env_crossbar"); } - if (extensions.Contains("gl_ARB_texture_env_dot3")) { ARB_texture_env_dot3 = true; extensions.Remove("glARB_texture_env_dot3"); } - if (extensions.Contains("gl_ARB_texture_filter_anisotropic")) { ARB_texture_filter_anisotropic = true; extensions.Remove("glARB_texture_filter_anisotropic"); } - if (extensions.Contains("gl_ARB_texture_filter_minmax")) { ARB_texture_filter_minmax = true; extensions.Remove("glARB_texture_filter_minmax"); } - if (extensions.Contains("gl_ARB_texture_float")) { ARB_texture_float = true; extensions.Remove("glARB_texture_float"); } - if (extensions.Contains("gl_ARB_texture_gather")) { ARB_texture_gather = true; extensions.Remove("glARB_texture_gather"); } - if (extensions.Contains("gl_ARB_texture_mirror_clamp_to_edge")) { ARB_texture_mirror_clamp_to_edge = true; extensions.Remove("glARB_texture_mirror_clamp_to_edge"); } - if (extensions.Contains("gl_ARB_texture_mirrored_repeat")) { ARB_texture_mirrored_repeat = true; extensions.Remove("glARB_texture_mirrored_repeat"); } - if (extensions.Contains("gl_ARB_texture_multisample")) { ARB_texture_multisample = true; extensions.Remove("glARB_texture_multisample"); } - if (extensions.Contains("gl_ARB_texture_non_power_of_two")) { ARB_texture_non_power_of_two = true; extensions.Remove("glARB_texture_non_power_of_two"); } - if (extensions.Contains("gl_ARB_texture_query_levels")) { ARB_texture_query_levels = true; extensions.Remove("glARB_texture_query_levels"); } - if (extensions.Contains("gl_ARB_texture_query_lod")) { ARB_texture_query_lod = true; extensions.Remove("glARB_texture_query_lod"); } - if (extensions.Contains("gl_ARB_texture_rectangle")) { ARB_texture_rectangle = true; extensions.Remove("glARB_texture_rectangle"); } - if (extensions.Contains("gl_ARB_texture_rg")) { ARB_texture_rg = true; extensions.Remove("glARB_texture_rg"); } - if (extensions.Contains("gl_ARB_texture_rgb10_a2ui")) { ARB_texture_rgb10_a2ui = true; extensions.Remove("glARB_texture_rgb10_a2ui"); } - if (extensions.Contains("gl_ARB_texture_stencil8")) { ARB_texture_stencil8 = true; extensions.Remove("glARB_texture_stencil8"); } - if (extensions.Contains("gl_ARB_texture_storage")) { ARB_texture_storage = true; extensions.Remove("glARB_texture_storage"); } - if (extensions.Contains("gl_ARB_texture_storage_multisample")) { ARB_texture_storage_multisample = true; extensions.Remove("glARB_texture_storage_multisample"); } - if (extensions.Contains("gl_ARB_texture_swizzle")) { ARB_texture_swizzle = true; extensions.Remove("glARB_texture_swizzle"); } - if (extensions.Contains("gl_ARB_texture_view")) { ARB_texture_view = true; extensions.Remove("glARB_texture_view"); } - if (extensions.Contains("gl_ARB_timer_query")) { ARB_timer_query = true; extensions.Remove("glARB_timer_query"); } - if (extensions.Contains("gl_ARB_transform_feedback2")) { ARB_transform_feedback2 = true; extensions.Remove("glARB_transform_feedback2"); } - if (extensions.Contains("gl_ARB_transform_feedback3")) { ARB_transform_feedback3 = true; extensions.Remove("glARB_transform_feedback3"); } - if (extensions.Contains("gl_ARB_transform_feedback_instanced")) { ARB_transform_feedback_instanced = true; extensions.Remove("glARB_transform_feedback_instanced"); } - if (extensions.Contains("gl_ARB_transform_feedback_overflow_query")) { ARB_transform_feedback_overflow_query = true; extensions.Remove("glARB_transform_feedback_overflow_query"); } - if (extensions.Contains("gl_ARB_transpose_matrix")) { ARB_transpose_matrix = true; extensions.Remove("glARB_transpose_matrix"); } - if (extensions.Contains("gl_ARB_uniform_buffer_object")) { ARB_uniform_buffer_object = true; extensions.Remove("glARB_uniform_buffer_object"); } - if (extensions.Contains("gl_ARB_vertex_array_bgra")) { ARB_vertex_array_bgra = true; extensions.Remove("glARB_vertex_array_bgra"); } - if (extensions.Contains("gl_ARB_vertex_array_object")) { ARB_vertex_array_object = true; extensions.Remove("glARB_vertex_array_object"); } - if (extensions.Contains("gl_ARB_vertex_attrib_64bit")) { ARB_vertex_attrib_64bit = true; extensions.Remove("glARB_vertex_attrib_64bit"); } - if (extensions.Contains("gl_ARB_vertex_attrib_binding")) { ARB_vertex_attrib_binding = true; extensions.Remove("glARB_vertex_attrib_binding"); } - if (extensions.Contains("gl_ARB_vertex_blend")) { ARB_vertex_blend = true; extensions.Remove("glARB_vertex_blend"); } - if (extensions.Contains("gl_ARB_vertex_buffer_object")) { ARB_vertex_buffer_object = true; extensions.Remove("glARB_vertex_buffer_object"); } - if (extensions.Contains("gl_ARB_vertex_program")) { ARB_vertex_program = true; extensions.Remove("glARB_vertex_program"); } - if (extensions.Contains("gl_ARB_vertex_shader")) { ARB_vertex_shader = true; extensions.Remove("glARB_vertex_shader"); } - if (extensions.Contains("gl_ARB_vertex_type_10f_11f_11f_rev")) { ARB_vertex_type_10f_11f_11f_rev = true; extensions.Remove("glARB_vertex_type_10f_11f_11f_rev"); } - if (extensions.Contains("gl_ARB_vertex_type_2_10_10_10_rev")) { ARB_vertex_type_2_10_10_10_rev = true; extensions.Remove("glARB_vertex_type_2_10_10_10_rev"); } - if (extensions.Contains("gl_ARB_viewport_array")) { ARB_viewport_array = true; extensions.Remove("glARB_viewport_array"); } - if (extensions.Contains("gl_ARB_window_pos")) { ARB_window_pos = true; extensions.Remove("glARB_window_pos"); } - if (extensions.Contains("gl_ATI_draw_buffers")) { ATI_draw_buffers = true; extensions.Remove("glATI_draw_buffers"); } - if (extensions.Contains("gl_ATI_element_array")) { ATI_element_array = true; extensions.Remove("glATI_element_array"); } - if (extensions.Contains("gl_ATI_envmap_bumpmap")) { ATI_envmap_bumpmap = true; extensions.Remove("glATI_envmap_bumpmap"); } - if (extensions.Contains("gl_ATI_fragment_shader")) { ATI_fragment_shader = true; extensions.Remove("glATI_fragment_shader"); } - if (extensions.Contains("gl_ATI_map_object_buffer")) { ATI_map_object_buffer = true; extensions.Remove("glATI_map_object_buffer"); } - if (extensions.Contains("gl_ATI_meminfo")) { ATI_meminfo = true; extensions.Remove("glATI_meminfo"); } - if (extensions.Contains("gl_ATI_pixel_format_float")) { ATI_pixel_format_float = true; extensions.Remove("glATI_pixel_format_float"); } - if (extensions.Contains("gl_ATI_pn_triangles")) { ATI_pn_triangles = true; extensions.Remove("glATI_pn_triangles"); } - if (extensions.Contains("gl_ATI_separate_stencil")) { ATI_separate_stencil = true; extensions.Remove("glATI_separate_stencil"); } - if (extensions.Contains("gl_ATI_text_fragment_shader")) { ATI_text_fragment_shader = true; extensions.Remove("glATI_text_fragment_shader"); } - if (extensions.Contains("gl_ATI_texture_env_combine3")) { ATI_texture_env_combine3 = true; extensions.Remove("glATI_texture_env_combine3"); } - if (extensions.Contains("gl_ATI_texture_float")) { ATI_texture_float = true; extensions.Remove("glATI_texture_float"); } - if (extensions.Contains("gl_ATI_texture_mirror_once")) { ATI_texture_mirror_once = true; extensions.Remove("glATI_texture_mirror_once"); } - if (extensions.Contains("gl_ATI_vertex_array_object")) { ATI_vertex_array_object = true; extensions.Remove("glATI_vertex_array_object"); } - if (extensions.Contains("gl_ATI_vertex_attrib_array_object")) { ATI_vertex_attrib_array_object = true; extensions.Remove("glATI_vertex_attrib_array_object"); } - if (extensions.Contains("gl_ATI_vertex_streams")) { ATI_vertex_streams = true; extensions.Remove("glATI_vertex_streams"); } - if (extensions.Contains("gl_EXT_422_pixels")) { EXT_422_pixels = true; extensions.Remove("glEXT_422_pixels"); } - if (extensions.Contains("gl_EXT_EGL_image_storage")) { EXT_EGL_image_storage = true; extensions.Remove("glEXT_EGL_image_storage"); } - if (extensions.Contains("gl_EXT_EGL_sync")) { EXT_EGL_sync = true; extensions.Remove("glEXT_EGL_sync"); } - if (extensions.Contains("gl_EXT_abgr")) { EXT_abgr = true; extensions.Remove("glEXT_abgr"); } - if (extensions.Contains("gl_EXT_bgra")) { EXT_bgra = true; extensions.Remove("glEXT_bgra"); } - if (extensions.Contains("gl_EXT_bindable_uniform")) { EXT_bindable_uniform = true; extensions.Remove("glEXT_bindable_uniform"); } - if (extensions.Contains("gl_EXT_blend_color")) { EXT_blend_color = true; extensions.Remove("glEXT_blend_color"); } - if (extensions.Contains("gl_EXT_blend_equation_separate")) { EXT_blend_equation_separate = true; extensions.Remove("glEXT_blend_equation_separate"); } - if (extensions.Contains("gl_EXT_blend_func_separate")) { EXT_blend_func_separate = true; extensions.Remove("glEXT_blend_func_separate"); } - if (extensions.Contains("gl_EXT_blend_logic_op")) { EXT_blend_logic_op = true; extensions.Remove("glEXT_blend_logic_op"); } - if (extensions.Contains("gl_EXT_blend_minmax")) { EXT_blend_minmax = true; extensions.Remove("glEXT_blend_minmax"); } - if (extensions.Contains("gl_EXT_blend_subtract")) { EXT_blend_subtract = true; extensions.Remove("glEXT_blend_subtract"); } - if (extensions.Contains("gl_EXT_clip_volume_hint")) { EXT_clip_volume_hint = true; extensions.Remove("glEXT_clip_volume_hint"); } - if (extensions.Contains("gl_EXT_cmyka")) { EXT_cmyka = true; extensions.Remove("glEXT_cmyka"); } - if (extensions.Contains("gl_EXT_color_subtable")) { EXT_color_subtable = true; extensions.Remove("glEXT_color_subtable"); } - if (extensions.Contains("gl_EXT_compiled_vertex_array")) { EXT_compiled_vertex_array = true; extensions.Remove("glEXT_compiled_vertex_array"); } - if (extensions.Contains("gl_EXT_convolution")) { EXT_convolution = true; extensions.Remove("glEXT_convolution"); } - if (extensions.Contains("gl_EXT_coordinate_frame")) { EXT_coordinate_frame = true; extensions.Remove("glEXT_coordinate_frame"); } - if (extensions.Contains("gl_EXT_copy_texture")) { EXT_copy_texture = true; extensions.Remove("glEXT_copy_texture"); } - if (extensions.Contains("gl_EXT_cull_vertex")) { EXT_cull_vertex = true; extensions.Remove("glEXT_cull_vertex"); } - if (extensions.Contains("gl_EXT_debug_label")) { EXT_debug_label = true; extensions.Remove("glEXT_debug_label"); } - if (extensions.Contains("gl_EXT_debug_marker")) { EXT_debug_marker = true; extensions.Remove("glEXT_debug_marker"); } - if (extensions.Contains("gl_EXT_depth_bounds_test")) { EXT_depth_bounds_test = true; extensions.Remove("glEXT_depth_bounds_test"); } - if (extensions.Contains("gl_EXT_direct_state_access")) { EXT_direct_state_access = true; extensions.Remove("glEXT_direct_state_access"); } - if (extensions.Contains("gl_EXT_draw_buffers2")) { EXT_draw_buffers2 = true; extensions.Remove("glEXT_draw_buffers2"); } - if (extensions.Contains("gl_EXT_draw_instanced")) { EXT_draw_instanced = true; extensions.Remove("glEXT_draw_instanced"); } - if (extensions.Contains("gl_EXT_draw_range_elements")) { EXT_draw_range_elements = true; extensions.Remove("glEXT_draw_range_elements"); } - if (extensions.Contains("gl_EXT_external_buffer")) { EXT_external_buffer = true; extensions.Remove("glEXT_external_buffer"); } - if (extensions.Contains("gl_EXT_fog_coord")) { EXT_fog_coord = true; extensions.Remove("glEXT_fog_coord"); } - if (extensions.Contains("gl_EXT_framebuffer_blit")) { EXT_framebuffer_blit = true; extensions.Remove("glEXT_framebuffer_blit"); } - if (extensions.Contains("gl_EXT_framebuffer_blit_layers")) { EXT_framebuffer_blit_layers = true; extensions.Remove("glEXT_framebuffer_blit_layers"); } - if (extensions.Contains("gl_EXT_framebuffer_multisample")) { EXT_framebuffer_multisample = true; extensions.Remove("glEXT_framebuffer_multisample"); } - if (extensions.Contains("gl_EXT_framebuffer_multisample_blit_scaled")) { EXT_framebuffer_multisample_blit_scaled = true; extensions.Remove("glEXT_framebuffer_multisample_blit_scaled"); } - if (extensions.Contains("gl_EXT_framebuffer_object")) { EXT_framebuffer_object = true; extensions.Remove("glEXT_framebuffer_object"); } - if (extensions.Contains("gl_EXT_framebuffer_sRGB")) { EXT_framebuffer_sRGB = true; extensions.Remove("glEXT_framebuffer_sRGB"); } - if (extensions.Contains("gl_EXT_geometry_shader4")) { EXT_geometry_shader4 = true; extensions.Remove("glEXT_geometry_shader4"); } - if (extensions.Contains("gl_EXT_gpu_program_parameters")) { EXT_gpu_program_parameters = true; extensions.Remove("glEXT_gpu_program_parameters"); } - if (extensions.Contains("gl_EXT_gpu_shader4")) { EXT_gpu_shader4 = true; extensions.Remove("glEXT_gpu_shader4"); } - if (extensions.Contains("gl_EXT_histogram")) { EXT_histogram = true; extensions.Remove("glEXT_histogram"); } - if (extensions.Contains("gl_EXT_index_array_formats")) { EXT_index_array_formats = true; extensions.Remove("glEXT_index_array_formats"); } - if (extensions.Contains("gl_EXT_index_func")) { EXT_index_func = true; extensions.Remove("glEXT_index_func"); } - if (extensions.Contains("gl_EXT_index_material")) { EXT_index_material = true; extensions.Remove("glEXT_index_material"); } - if (extensions.Contains("gl_EXT_index_texture")) { EXT_index_texture = true; extensions.Remove("glEXT_index_texture"); } - if (extensions.Contains("gl_EXT_light_texture")) { EXT_light_texture = true; extensions.Remove("glEXT_light_texture"); } - if (extensions.Contains("gl_EXT_memory_object")) { EXT_memory_object = true; extensions.Remove("glEXT_memory_object"); } - if (extensions.Contains("gl_EXT_memory_object_fd")) { EXT_memory_object_fd = true; extensions.Remove("glEXT_memory_object_fd"); } - if (extensions.Contains("gl_EXT_memory_object_win32")) { EXT_memory_object_win32 = true; extensions.Remove("glEXT_memory_object_win32"); } - if (extensions.Contains("gl_EXT_misc_attribute")) { EXT_misc_attribute = true; extensions.Remove("glEXT_misc_attribute"); } - if (extensions.Contains("gl_EXT_multi_draw_arrays")) { EXT_multi_draw_arrays = true; extensions.Remove("glEXT_multi_draw_arrays"); } - if (extensions.Contains("gl_EXT_multisample")) { EXT_multisample = true; extensions.Remove("glEXT_multisample"); } - if (extensions.Contains("gl_EXT_multiview_tessellation_geometry_shader")) { EXT_multiview_tessellation_geometry_shader = true; extensions.Remove("glEXT_multiview_tessellation_geometry_shader"); } - if (extensions.Contains("gl_EXT_multiview_texture_multisample")) { EXT_multiview_texture_multisample = true; extensions.Remove("glEXT_multiview_texture_multisample"); } - if (extensions.Contains("gl_EXT_multiview_timer_query")) { EXT_multiview_timer_query = true; extensions.Remove("glEXT_multiview_timer_query"); } - if (extensions.Contains("gl_EXT_packed_depth_stencil")) { EXT_packed_depth_stencil = true; extensions.Remove("glEXT_packed_depth_stencil"); } - if (extensions.Contains("gl_EXT_packed_float")) { EXT_packed_float = true; extensions.Remove("glEXT_packed_float"); } - if (extensions.Contains("gl_EXT_packed_pixels")) { EXT_packed_pixels = true; extensions.Remove("glEXT_packed_pixels"); } - if (extensions.Contains("gl_EXT_paletted_texture")) { EXT_paletted_texture = true; extensions.Remove("glEXT_paletted_texture"); } - if (extensions.Contains("gl_EXT_pixel_buffer_object")) { EXT_pixel_buffer_object = true; extensions.Remove("glEXT_pixel_buffer_object"); } - if (extensions.Contains("gl_EXT_pixel_transform")) { EXT_pixel_transform = true; extensions.Remove("glEXT_pixel_transform"); } - if (extensions.Contains("gl_EXT_pixel_transform_color_table")) { EXT_pixel_transform_color_table = true; extensions.Remove("glEXT_pixel_transform_color_table"); } - if (extensions.Contains("gl_EXT_point_parameters")) { EXT_point_parameters = true; extensions.Remove("glEXT_point_parameters"); } - if (extensions.Contains("gl_EXT_polygon_offset")) { EXT_polygon_offset = true; extensions.Remove("glEXT_polygon_offset"); } - if (extensions.Contains("gl_EXT_polygon_offset_clamp")) { EXT_polygon_offset_clamp = true; extensions.Remove("glEXT_polygon_offset_clamp"); } - if (extensions.Contains("gl_EXT_post_depth_coverage")) { EXT_post_depth_coverage = true; extensions.Remove("glEXT_post_depth_coverage"); } - if (extensions.Contains("gl_EXT_provoking_vertex")) { EXT_provoking_vertex = true; extensions.Remove("glEXT_provoking_vertex"); } - if (extensions.Contains("gl_EXT_raster_multisample")) { EXT_raster_multisample = true; extensions.Remove("glEXT_raster_multisample"); } - if (extensions.Contains("gl_EXT_rescale_normal")) { EXT_rescale_normal = true; extensions.Remove("glEXT_rescale_normal"); } - if (extensions.Contains("gl_EXT_secondary_color")) { EXT_secondary_color = true; extensions.Remove("glEXT_secondary_color"); } - if (extensions.Contains("gl_EXT_semaphore")) { EXT_semaphore = true; extensions.Remove("glEXT_semaphore"); } - if (extensions.Contains("gl_EXT_semaphore_fd")) { EXT_semaphore_fd = true; extensions.Remove("glEXT_semaphore_fd"); } - if (extensions.Contains("gl_EXT_semaphore_win32")) { EXT_semaphore_win32 = true; extensions.Remove("glEXT_semaphore_win32"); } - if (extensions.Contains("gl_EXT_separate_shader_objects")) { EXT_separate_shader_objects = true; extensions.Remove("glEXT_separate_shader_objects"); } - if (extensions.Contains("gl_EXT_separate_specular_color")) { EXT_separate_specular_color = true; extensions.Remove("glEXT_separate_specular_color"); } - if (extensions.Contains("gl_EXT_shader_framebuffer_fetch")) { EXT_shader_framebuffer_fetch = true; extensions.Remove("glEXT_shader_framebuffer_fetch"); } - if (extensions.Contains("gl_EXT_shader_framebuffer_fetch_non_coherent")) { EXT_shader_framebuffer_fetch_non_coherent = true; extensions.Remove("glEXT_shader_framebuffer_fetch_non_coherent"); } - if (extensions.Contains("gl_EXT_shader_image_load_formatted")) { EXT_shader_image_load_formatted = true; extensions.Remove("glEXT_shader_image_load_formatted"); } - if (extensions.Contains("gl_EXT_shader_image_load_store")) { EXT_shader_image_load_store = true; extensions.Remove("glEXT_shader_image_load_store"); } - if (extensions.Contains("gl_EXT_shader_integer_mix")) { EXT_shader_integer_mix = true; extensions.Remove("glEXT_shader_integer_mix"); } - if (extensions.Contains("gl_EXT_shader_samples_identical")) { EXT_shader_samples_identical = true; extensions.Remove("glEXT_shader_samples_identical"); } - if (extensions.Contains("gl_EXT_shadow_funcs")) { EXT_shadow_funcs = true; extensions.Remove("glEXT_shadow_funcs"); } - if (extensions.Contains("gl_EXT_shared_texture_palette")) { EXT_shared_texture_palette = true; extensions.Remove("glEXT_shared_texture_palette"); } - if (extensions.Contains("gl_EXT_sparse_texture2")) { EXT_sparse_texture2 = true; extensions.Remove("glEXT_sparse_texture2"); } - if (extensions.Contains("gl_EXT_stencil_clear_tag")) { EXT_stencil_clear_tag = true; extensions.Remove("glEXT_stencil_clear_tag"); } - if (extensions.Contains("gl_EXT_stencil_two_side")) { EXT_stencil_two_side = true; extensions.Remove("glEXT_stencil_two_side"); } - if (extensions.Contains("gl_EXT_stencil_wrap")) { EXT_stencil_wrap = true; extensions.Remove("glEXT_stencil_wrap"); } - if (extensions.Contains("gl_EXT_subtexture")) { EXT_subtexture = true; extensions.Remove("glEXT_subtexture"); } - if (extensions.Contains("gl_EXT_texture")) { EXT_texture = true; extensions.Remove("glEXT_texture"); } - if (extensions.Contains("gl_EXT_texture3D")) { EXT_texture3D = true; extensions.Remove("glEXT_texture3D"); } - if (extensions.Contains("gl_EXT_texture_array")) { EXT_texture_array = true; extensions.Remove("glEXT_texture_array"); } - if (extensions.Contains("gl_EXT_texture_buffer_object")) { EXT_texture_buffer_object = true; extensions.Remove("glEXT_texture_buffer_object"); } - if (extensions.Contains("gl_EXT_texture_compression_latc")) { EXT_texture_compression_latc = true; extensions.Remove("glEXT_texture_compression_latc"); } - if (extensions.Contains("gl_EXT_texture_compression_rgtc")) { EXT_texture_compression_rgtc = true; extensions.Remove("glEXT_texture_compression_rgtc"); } - if (extensions.Contains("gl_EXT_texture_compression_s3tc")) { EXT_texture_compression_s3tc = true; extensions.Remove("glEXT_texture_compression_s3tc"); } - if (extensions.Contains("gl_EXT_texture_cube_map")) { EXT_texture_cube_map = true; extensions.Remove("glEXT_texture_cube_map"); } - if (extensions.Contains("gl_EXT_texture_env_add")) { EXT_texture_env_add = true; extensions.Remove("glEXT_texture_env_add"); } - if (extensions.Contains("gl_EXT_texture_env_combine")) { EXT_texture_env_combine = true; extensions.Remove("glEXT_texture_env_combine"); } - if (extensions.Contains("gl_EXT_texture_env_dot3")) { EXT_texture_env_dot3 = true; extensions.Remove("glEXT_texture_env_dot3"); } - if (extensions.Contains("gl_EXT_texture_filter_anisotropic")) { EXT_texture_filter_anisotropic = true; extensions.Remove("glEXT_texture_filter_anisotropic"); } - if (extensions.Contains("gl_EXT_texture_filter_minmax")) { EXT_texture_filter_minmax = true; extensions.Remove("glEXT_texture_filter_minmax"); } - if (extensions.Contains("gl_EXT_texture_integer")) { EXT_texture_integer = true; extensions.Remove("glEXT_texture_integer"); } - if (extensions.Contains("gl_EXT_texture_lod_bias")) { EXT_texture_lod_bias = true; extensions.Remove("glEXT_texture_lod_bias"); } - if (extensions.Contains("gl_EXT_texture_mirror_clamp")) { EXT_texture_mirror_clamp = true; extensions.Remove("glEXT_texture_mirror_clamp"); } - if (extensions.Contains("gl_EXT_texture_object")) { EXT_texture_object = true; extensions.Remove("glEXT_texture_object"); } - if (extensions.Contains("gl_EXT_texture_perturb_normal")) { EXT_texture_perturb_normal = true; extensions.Remove("glEXT_texture_perturb_normal"); } - if (extensions.Contains("gl_EXT_texture_sRGB")) { EXT_texture_sRGB = true; extensions.Remove("glEXT_texture_sRGB"); } - if (extensions.Contains("gl_EXT_texture_sRGB_R8")) { EXT_texture_sRGB_R8 = true; extensions.Remove("glEXT_texture_sRGB_R8"); } - if (extensions.Contains("gl_EXT_texture_sRGB_RG8")) { EXT_texture_sRGB_RG8 = true; extensions.Remove("glEXT_texture_sRGB_RG8"); } - if (extensions.Contains("gl_EXT_texture_sRGB_decode")) { EXT_texture_sRGB_decode = true; extensions.Remove("glEXT_texture_sRGB_decode"); } - if (extensions.Contains("gl_EXT_texture_shadow_lod")) { EXT_texture_shadow_lod = true; extensions.Remove("glEXT_texture_shadow_lod"); } - if (extensions.Contains("gl_EXT_texture_shared_exponent")) { EXT_texture_shared_exponent = true; extensions.Remove("glEXT_texture_shared_exponent"); } - if (extensions.Contains("gl_EXT_texture_snorm")) { EXT_texture_snorm = true; extensions.Remove("glEXT_texture_snorm"); } - if (extensions.Contains("gl_EXT_texture_storage")) { EXT_texture_storage = true; extensions.Remove("glEXT_texture_storage"); } - if (extensions.Contains("gl_EXT_texture_swizzle")) { EXT_texture_swizzle = true; extensions.Remove("glEXT_texture_swizzle"); } - if (extensions.Contains("gl_EXT_timer_query")) { EXT_timer_query = true; extensions.Remove("glEXT_timer_query"); } - if (extensions.Contains("gl_EXT_transform_feedback")) { EXT_transform_feedback = true; extensions.Remove("glEXT_transform_feedback"); } - if (extensions.Contains("gl_EXT_vertex_array")) { EXT_vertex_array = true; extensions.Remove("glEXT_vertex_array"); } - if (extensions.Contains("gl_EXT_vertex_array_bgra")) { EXT_vertex_array_bgra = true; extensions.Remove("glEXT_vertex_array_bgra"); } - if (extensions.Contains("gl_EXT_vertex_attrib_64bit")) { EXT_vertex_attrib_64bit = true; extensions.Remove("glEXT_vertex_attrib_64bit"); } - if (extensions.Contains("gl_EXT_vertex_shader")) { EXT_vertex_shader = true; extensions.Remove("glEXT_vertex_shader"); } - if (extensions.Contains("gl_EXT_vertex_weighting")) { EXT_vertex_weighting = true; extensions.Remove("glEXT_vertex_weighting"); } - if (extensions.Contains("gl_EXT_win32_keyed_mutex")) { EXT_win32_keyed_mutex = true; extensions.Remove("glEXT_win32_keyed_mutex"); } - if (extensions.Contains("gl_EXT_window_rectangles")) { EXT_window_rectangles = true; extensions.Remove("glEXT_window_rectangles"); } - if (extensions.Contains("gl_EXT_x11_sync_object")) { EXT_x11_sync_object = true; extensions.Remove("glEXT_x11_sync_object"); } - if (extensions.Contains("gl_GREMEDY_frame_terminator")) { GREMEDY_frame_terminator = true; extensions.Remove("glGREMEDY_frame_terminator"); } - if (extensions.Contains("gl_GREMEDY_string_marker")) { GREMEDY_string_marker = true; extensions.Remove("glGREMEDY_string_marker"); } - if (extensions.Contains("gl_HP_convolution_border_modes")) { HP_convolution_border_modes = true; extensions.Remove("glHP_convolution_border_modes"); } - if (extensions.Contains("gl_HP_image_transform")) { HP_image_transform = true; extensions.Remove("glHP_image_transform"); } - if (extensions.Contains("gl_HP_occlusion_test")) { HP_occlusion_test = true; extensions.Remove("glHP_occlusion_test"); } - if (extensions.Contains("gl_HP_texture_lighting")) { HP_texture_lighting = true; extensions.Remove("glHP_texture_lighting"); } - if (extensions.Contains("gl_IBM_cull_vertex")) { IBM_cull_vertex = true; extensions.Remove("glIBM_cull_vertex"); } - if (extensions.Contains("gl_IBM_multimode_draw_arrays")) { IBM_multimode_draw_arrays = true; extensions.Remove("glIBM_multimode_draw_arrays"); } - if (extensions.Contains("gl_IBM_rasterpos_clip")) { IBM_rasterpos_clip = true; extensions.Remove("glIBM_rasterpos_clip"); } - if (extensions.Contains("gl_IBM_static_data")) { IBM_static_data = true; extensions.Remove("glIBM_static_data"); } - if (extensions.Contains("gl_IBM_texture_mirrored_repeat")) { IBM_texture_mirrored_repeat = true; extensions.Remove("glIBM_texture_mirrored_repeat"); } - if (extensions.Contains("gl_IBM_vertex_array_lists")) { IBM_vertex_array_lists = true; extensions.Remove("glIBM_vertex_array_lists"); } - if (extensions.Contains("gl_INGR_blend_func_separate")) { INGR_blend_func_separate = true; extensions.Remove("glINGR_blend_func_separate"); } - if (extensions.Contains("gl_INGR_color_clamp")) { INGR_color_clamp = true; extensions.Remove("glINGR_color_clamp"); } - if (extensions.Contains("gl_INGR_interlace_read")) { INGR_interlace_read = true; extensions.Remove("glINGR_interlace_read"); } - if (extensions.Contains("gl_INTEL_blackhole_render")) { INTEL_blackhole_render = true; extensions.Remove("glINTEL_blackhole_render"); } - if (extensions.Contains("gl_INTEL_conservative_rasterization")) { INTEL_conservative_rasterization = true; extensions.Remove("glINTEL_conservative_rasterization"); } - if (extensions.Contains("gl_INTEL_fragment_shader_ordering")) { INTEL_fragment_shader_ordering = true; extensions.Remove("glINTEL_fragment_shader_ordering"); } - if (extensions.Contains("gl_INTEL_framebuffer_CMAA")) { INTEL_framebuffer_CMAA = true; extensions.Remove("glINTEL_framebuffer_CMAA"); } - if (extensions.Contains("gl_INTEL_map_texture")) { INTEL_map_texture = true; extensions.Remove("glINTEL_map_texture"); } - if (extensions.Contains("gl_INTEL_parallel_arrays")) { INTEL_parallel_arrays = true; extensions.Remove("glINTEL_parallel_arrays"); } - if (extensions.Contains("gl_INTEL_performance_query")) { INTEL_performance_query = true; extensions.Remove("glINTEL_performance_query"); } - if (extensions.Contains("gl_KHR_blend_equation_advanced")) { KHR_blend_equation_advanced = true; extensions.Remove("glKHR_blend_equation_advanced"); } - if (extensions.Contains("gl_KHR_blend_equation_advanced_coherent")) { KHR_blend_equation_advanced_coherent = true; extensions.Remove("glKHR_blend_equation_advanced_coherent"); } - if (extensions.Contains("gl_KHR_context_flush_control")) { KHR_context_flush_control = true; extensions.Remove("glKHR_context_flush_control"); } - if (extensions.Contains("gl_KHR_debug")) { KHR_debug = true; extensions.Remove("glKHR_debug"); } - if (extensions.Contains("gl_KHR_no_error")) { KHR_no_error = true; extensions.Remove("glKHR_no_error"); } - if (extensions.Contains("gl_KHR_parallel_shader_compile")) { KHR_parallel_shader_compile = true; extensions.Remove("glKHR_parallel_shader_compile"); } - if (extensions.Contains("gl_KHR_robust_buffer_access_behavior")) { KHR_robust_buffer_access_behavior = true; extensions.Remove("glKHR_robust_buffer_access_behavior"); } - if (extensions.Contains("gl_KHR_robustness")) { KHR_robustness = true; extensions.Remove("glKHR_robustness"); } - if (extensions.Contains("gl_KHR_shader_subgroup")) { KHR_shader_subgroup = true; extensions.Remove("glKHR_shader_subgroup"); } - if (extensions.Contains("gl_KHR_texture_compression_astc_hdr")) { KHR_texture_compression_astc_hdr = true; extensions.Remove("glKHR_texture_compression_astc_hdr"); } - if (extensions.Contains("gl_KHR_texture_compression_astc_ldr")) { KHR_texture_compression_astc_ldr = true; extensions.Remove("glKHR_texture_compression_astc_ldr"); } - if (extensions.Contains("gl_KHR_texture_compression_astc_sliced_3d")) { KHR_texture_compression_astc_sliced_3d = true; extensions.Remove("glKHR_texture_compression_astc_sliced_3d"); } - if (extensions.Contains("gl_MESAX_texture_stack")) { MESAX_texture_stack = true; extensions.Remove("glMESAX_texture_stack"); } - if (extensions.Contains("gl_MESA_framebuffer_flip_x")) { MESA_framebuffer_flip_x = true; extensions.Remove("glMESA_framebuffer_flip_x"); } - if (extensions.Contains("gl_MESA_framebuffer_flip_y")) { MESA_framebuffer_flip_y = true; extensions.Remove("glMESA_framebuffer_flip_y"); } - if (extensions.Contains("gl_MESA_framebuffer_swap_xy")) { MESA_framebuffer_swap_xy = true; extensions.Remove("glMESA_framebuffer_swap_xy"); } - if (extensions.Contains("gl_MESA_pack_invert")) { MESA_pack_invert = true; extensions.Remove("glMESA_pack_invert"); } - if (extensions.Contains("gl_MESA_program_binary_formats")) { MESA_program_binary_formats = true; extensions.Remove("glMESA_program_binary_formats"); } - if (extensions.Contains("gl_MESA_resize_buffers")) { MESA_resize_buffers = true; extensions.Remove("glMESA_resize_buffers"); } - if (extensions.Contains("gl_MESA_shader_integer_functions")) { MESA_shader_integer_functions = true; extensions.Remove("glMESA_shader_integer_functions"); } - if (extensions.Contains("gl_MESA_tile_raster_order")) { MESA_tile_raster_order = true; extensions.Remove("glMESA_tile_raster_order"); } - if (extensions.Contains("gl_MESA_window_pos")) { MESA_window_pos = true; extensions.Remove("glMESA_window_pos"); } - if (extensions.Contains("gl_MESA_ycbcr_texture")) { MESA_ycbcr_texture = true; extensions.Remove("glMESA_ycbcr_texture"); } - if (extensions.Contains("gl_NVX_blend_equation_advanced_multi_draw_buffers")) { NVX_blend_equation_advanced_multi_draw_buffers = true; extensions.Remove("glNVX_blend_equation_advanced_multi_draw_buffers"); } - if (extensions.Contains("gl_NVX_conditional_render")) { NVX_conditional_render = true; extensions.Remove("glNVX_conditional_render"); } - if (extensions.Contains("gl_NVX_gpu_memory_info")) { NVX_gpu_memory_info = true; extensions.Remove("glNVX_gpu_memory_info"); } - if (extensions.Contains("gl_NVX_gpu_multicast2")) { NVX_gpu_multicast2 = true; extensions.Remove("glNVX_gpu_multicast2"); } - if (extensions.Contains("gl_NVX_linked_gpu_multicast")) { NVX_linked_gpu_multicast = true; extensions.Remove("glNVX_linked_gpu_multicast"); } - if (extensions.Contains("gl_NVX_progress_fence")) { NVX_progress_fence = true; extensions.Remove("glNVX_progress_fence"); } - if (extensions.Contains("gl_NV_alpha_to_coverage_dither_control")) { NV_alpha_to_coverage_dither_control = true; extensions.Remove("glNV_alpha_to_coverage_dither_control"); } - if (extensions.Contains("gl_NV_bindless_multi_draw_indirect")) { NV_bindless_multi_draw_indirect = true; extensions.Remove("glNV_bindless_multi_draw_indirect"); } - if (extensions.Contains("gl_NV_bindless_multi_draw_indirect_count")) { NV_bindless_multi_draw_indirect_count = true; extensions.Remove("glNV_bindless_multi_draw_indirect_count"); } - if (extensions.Contains("gl_NV_bindless_texture")) { NV_bindless_texture = true; extensions.Remove("glNV_bindless_texture"); } - if (extensions.Contains("gl_NV_blend_equation_advanced")) { NV_blend_equation_advanced = true; extensions.Remove("glNV_blend_equation_advanced"); } - if (extensions.Contains("gl_NV_blend_equation_advanced_coherent")) { NV_blend_equation_advanced_coherent = true; extensions.Remove("glNV_blend_equation_advanced_coherent"); } - if (extensions.Contains("gl_NV_blend_minmax_factor")) { NV_blend_minmax_factor = true; extensions.Remove("glNV_blend_minmax_factor"); } - if (extensions.Contains("gl_NV_blend_square")) { NV_blend_square = true; extensions.Remove("glNV_blend_square"); } - if (extensions.Contains("gl_NV_clip_space_w_scaling")) { NV_clip_space_w_scaling = true; extensions.Remove("glNV_clip_space_w_scaling"); } - if (extensions.Contains("gl_NV_command_list")) { NV_command_list = true; extensions.Remove("glNV_command_list"); } - if (extensions.Contains("gl_NV_compute_program5")) { NV_compute_program5 = true; extensions.Remove("glNV_compute_program5"); } - if (extensions.Contains("gl_NV_compute_shader_derivatives")) { NV_compute_shader_derivatives = true; extensions.Remove("glNV_compute_shader_derivatives"); } - if (extensions.Contains("gl_NV_conditional_render")) { NV_conditional_render = true; extensions.Remove("glNV_conditional_render"); } - if (extensions.Contains("gl_NV_conservative_raster")) { NV_conservative_raster = true; extensions.Remove("glNV_conservative_raster"); } - if (extensions.Contains("gl_NV_conservative_raster_dilate")) { NV_conservative_raster_dilate = true; extensions.Remove("glNV_conservative_raster_dilate"); } - if (extensions.Contains("gl_NV_conservative_raster_pre_snap")) { NV_conservative_raster_pre_snap = true; extensions.Remove("glNV_conservative_raster_pre_snap"); } - if (extensions.Contains("gl_NV_conservative_raster_pre_snap_triangles")) { NV_conservative_raster_pre_snap_triangles = true; extensions.Remove("glNV_conservative_raster_pre_snap_triangles"); } - if (extensions.Contains("gl_NV_conservative_raster_underestimation")) { NV_conservative_raster_underestimation = true; extensions.Remove("glNV_conservative_raster_underestimation"); } - if (extensions.Contains("gl_NV_copy_depth_to_color")) { NV_copy_depth_to_color = true; extensions.Remove("glNV_copy_depth_to_color"); } - if (extensions.Contains("gl_NV_copy_image")) { NV_copy_image = true; extensions.Remove("glNV_copy_image"); } - if (extensions.Contains("gl_NV_deep_texture3D")) { NV_deep_texture3D = true; extensions.Remove("glNV_deep_texture3D"); } - if (extensions.Contains("gl_NV_depth_buffer_float")) { NV_depth_buffer_float = true; extensions.Remove("glNV_depth_buffer_float"); } - if (extensions.Contains("gl_NV_depth_clamp")) { NV_depth_clamp = true; extensions.Remove("glNV_depth_clamp"); } - if (extensions.Contains("gl_NV_draw_texture")) { NV_draw_texture = true; extensions.Remove("glNV_draw_texture"); } - if (extensions.Contains("gl_NV_draw_vulkan_image")) { NV_draw_vulkan_image = true; extensions.Remove("glNV_draw_vulkan_image"); } - if (extensions.Contains("gl_NV_evaluators")) { NV_evaluators = true; extensions.Remove("glNV_evaluators"); } - if (extensions.Contains("gl_NV_explicit_multisample")) { NV_explicit_multisample = true; extensions.Remove("glNV_explicit_multisample"); } - if (extensions.Contains("gl_NV_fence")) { NV_fence = true; extensions.Remove("glNV_fence"); } - if (extensions.Contains("gl_NV_fill_rectangle")) { NV_fill_rectangle = true; extensions.Remove("glNV_fill_rectangle"); } - if (extensions.Contains("gl_NV_float_buffer")) { NV_float_buffer = true; extensions.Remove("glNV_float_buffer"); } - if (extensions.Contains("gl_NV_fog_distance")) { NV_fog_distance = true; extensions.Remove("glNV_fog_distance"); } - if (extensions.Contains("gl_NV_fragment_coverage_to_color")) { NV_fragment_coverage_to_color = true; extensions.Remove("glNV_fragment_coverage_to_color"); } - if (extensions.Contains("gl_NV_fragment_program")) { NV_fragment_program = true; extensions.Remove("glNV_fragment_program"); } - if (extensions.Contains("gl_NV_fragment_program2")) { NV_fragment_program2 = true; extensions.Remove("glNV_fragment_program2"); } - if (extensions.Contains("gl_NV_fragment_program4")) { NV_fragment_program4 = true; extensions.Remove("glNV_fragment_program4"); } - if (extensions.Contains("gl_NV_fragment_program_option")) { NV_fragment_program_option = true; extensions.Remove("glNV_fragment_program_option"); } - if (extensions.Contains("gl_NV_fragment_shader_barycentric")) { NV_fragment_shader_barycentric = true; extensions.Remove("glNV_fragment_shader_barycentric"); } - if (extensions.Contains("gl_NV_fragment_shader_interlock")) { NV_fragment_shader_interlock = true; extensions.Remove("glNV_fragment_shader_interlock"); } - if (extensions.Contains("gl_NV_framebuffer_mixed_samples")) { NV_framebuffer_mixed_samples = true; extensions.Remove("glNV_framebuffer_mixed_samples"); } - if (extensions.Contains("gl_NV_framebuffer_multisample_coverage")) { NV_framebuffer_multisample_coverage = true; extensions.Remove("glNV_framebuffer_multisample_coverage"); } - if (extensions.Contains("gl_NV_geometry_program4")) { NV_geometry_program4 = true; extensions.Remove("glNV_geometry_program4"); } - if (extensions.Contains("gl_NV_geometry_shader4")) { NV_geometry_shader4 = true; extensions.Remove("glNV_geometry_shader4"); } - if (extensions.Contains("gl_NV_geometry_shader_passthrough")) { NV_geometry_shader_passthrough = true; extensions.Remove("glNV_geometry_shader_passthrough"); } - if (extensions.Contains("gl_NV_gpu_multicast")) { NV_gpu_multicast = true; extensions.Remove("glNV_gpu_multicast"); } - if (extensions.Contains("gl_NV_gpu_program4")) { NV_gpu_program4 = true; extensions.Remove("glNV_gpu_program4"); } - if (extensions.Contains("gl_NV_gpu_program5")) { NV_gpu_program5 = true; extensions.Remove("glNV_gpu_program5"); } - if (extensions.Contains("gl_NV_gpu_program5_mem_extended")) { NV_gpu_program5_mem_extended = true; extensions.Remove("glNV_gpu_program5_mem_extended"); } - if (extensions.Contains("gl_NV_gpu_shader5")) { NV_gpu_shader5 = true; extensions.Remove("glNV_gpu_shader5"); } - if (extensions.Contains("gl_NV_half_float")) { NV_half_float = true; extensions.Remove("glNV_half_float"); } - if (extensions.Contains("gl_NV_internalformat_sample_query")) { NV_internalformat_sample_query = true; extensions.Remove("glNV_internalformat_sample_query"); } - if (extensions.Contains("gl_NV_light_max_exponent")) { NV_light_max_exponent = true; extensions.Remove("glNV_light_max_exponent"); } - if (extensions.Contains("gl_NV_memory_attachment")) { NV_memory_attachment = true; extensions.Remove("glNV_memory_attachment"); } - if (extensions.Contains("gl_NV_memory_object_sparse")) { NV_memory_object_sparse = true; extensions.Remove("glNV_memory_object_sparse"); } - if (extensions.Contains("gl_NV_mesh_shader")) { NV_mesh_shader = true; extensions.Remove("glNV_mesh_shader"); } - if (extensions.Contains("gl_NV_multisample_coverage")) { NV_multisample_coverage = true; extensions.Remove("glNV_multisample_coverage"); } - if (extensions.Contains("gl_NV_multisample_filter_hint")) { NV_multisample_filter_hint = true; extensions.Remove("glNV_multisample_filter_hint"); } - if (extensions.Contains("gl_NV_occlusion_query")) { NV_occlusion_query = true; extensions.Remove("glNV_occlusion_query"); } - if (extensions.Contains("gl_NV_packed_depth_stencil")) { NV_packed_depth_stencil = true; extensions.Remove("glNV_packed_depth_stencil"); } - if (extensions.Contains("gl_NV_parameter_buffer_object")) { NV_parameter_buffer_object = true; extensions.Remove("glNV_parameter_buffer_object"); } - if (extensions.Contains("gl_NV_parameter_buffer_object2")) { NV_parameter_buffer_object2 = true; extensions.Remove("glNV_parameter_buffer_object2"); } - if (extensions.Contains("gl_NV_path_rendering")) { NV_path_rendering = true; extensions.Remove("glNV_path_rendering"); } - if (extensions.Contains("gl_NV_path_rendering_shared_edge")) { NV_path_rendering_shared_edge = true; extensions.Remove("glNV_path_rendering_shared_edge"); } - if (extensions.Contains("gl_NV_pixel_data_range")) { NV_pixel_data_range = true; extensions.Remove("glNV_pixel_data_range"); } - if (extensions.Contains("gl_NV_point_sprite")) { NV_point_sprite = true; extensions.Remove("glNV_point_sprite"); } - if (extensions.Contains("gl_NV_present_video")) { NV_present_video = true; extensions.Remove("glNV_present_video"); } - if (extensions.Contains("gl_NV_primitive_restart")) { NV_primitive_restart = true; extensions.Remove("glNV_primitive_restart"); } - if (extensions.Contains("gl_NV_primitive_shading_rate")) { NV_primitive_shading_rate = true; extensions.Remove("glNV_primitive_shading_rate"); } - if (extensions.Contains("gl_NV_query_resource")) { NV_query_resource = true; extensions.Remove("glNV_query_resource"); } - if (extensions.Contains("gl_NV_query_resource_tag")) { NV_query_resource_tag = true; extensions.Remove("glNV_query_resource_tag"); } - if (extensions.Contains("gl_NV_register_combiners")) { NV_register_combiners = true; extensions.Remove("glNV_register_combiners"); } - if (extensions.Contains("gl_NV_register_combiners2")) { NV_register_combiners2 = true; extensions.Remove("glNV_register_combiners2"); } - if (extensions.Contains("gl_NV_representative_fragment_test")) { NV_representative_fragment_test = true; extensions.Remove("glNV_representative_fragment_test"); } - if (extensions.Contains("gl_NV_robustness_video_memory_purge")) { NV_robustness_video_memory_purge = true; extensions.Remove("glNV_robustness_video_memory_purge"); } - if (extensions.Contains("gl_NV_sample_locations")) { NV_sample_locations = true; extensions.Remove("glNV_sample_locations"); } - if (extensions.Contains("gl_NV_sample_mask_override_coverage")) { NV_sample_mask_override_coverage = true; extensions.Remove("glNV_sample_mask_override_coverage"); } - if (extensions.Contains("gl_NV_scissor_exclusive")) { NV_scissor_exclusive = true; extensions.Remove("glNV_scissor_exclusive"); } - if (extensions.Contains("gl_NV_shader_atomic_counters")) { NV_shader_atomic_counters = true; extensions.Remove("glNV_shader_atomic_counters"); } - if (extensions.Contains("gl_NV_shader_atomic_float")) { NV_shader_atomic_float = true; extensions.Remove("glNV_shader_atomic_float"); } - if (extensions.Contains("gl_NV_shader_atomic_float64")) { NV_shader_atomic_float64 = true; extensions.Remove("glNV_shader_atomic_float64"); } - if (extensions.Contains("gl_NV_shader_atomic_fp16_vector")) { NV_shader_atomic_fp16_vector = true; extensions.Remove("glNV_shader_atomic_fp16_vector"); } - if (extensions.Contains("gl_NV_shader_atomic_int64")) { NV_shader_atomic_int64 = true; extensions.Remove("glNV_shader_atomic_int64"); } - if (extensions.Contains("gl_NV_shader_buffer_load")) { NV_shader_buffer_load = true; extensions.Remove("glNV_shader_buffer_load"); } - if (extensions.Contains("gl_NV_shader_buffer_store")) { NV_shader_buffer_store = true; extensions.Remove("glNV_shader_buffer_store"); } - if (extensions.Contains("gl_NV_shader_storage_buffer_object")) { NV_shader_storage_buffer_object = true; extensions.Remove("glNV_shader_storage_buffer_object"); } - if (extensions.Contains("gl_NV_shader_subgroup_partitioned")) { NV_shader_subgroup_partitioned = true; extensions.Remove("glNV_shader_subgroup_partitioned"); } - if (extensions.Contains("gl_NV_shader_texture_footprint")) { NV_shader_texture_footprint = true; extensions.Remove("glNV_shader_texture_footprint"); } - if (extensions.Contains("gl_NV_shader_thread_group")) { NV_shader_thread_group = true; extensions.Remove("glNV_shader_thread_group"); } - if (extensions.Contains("gl_NV_shader_thread_shuffle")) { NV_shader_thread_shuffle = true; extensions.Remove("glNV_shader_thread_shuffle"); } - if (extensions.Contains("gl_NV_shading_rate_image")) { NV_shading_rate_image = true; extensions.Remove("glNV_shading_rate_image"); } - if (extensions.Contains("gl_NV_stereo_view_rendering")) { NV_stereo_view_rendering = true; extensions.Remove("glNV_stereo_view_rendering"); } - if (extensions.Contains("gl_NV_tessellation_program5")) { NV_tessellation_program5 = true; extensions.Remove("glNV_tessellation_program5"); } - if (extensions.Contains("gl_NV_texgen_emboss")) { NV_texgen_emboss = true; extensions.Remove("glNV_texgen_emboss"); } - if (extensions.Contains("gl_NV_texgen_reflection")) { NV_texgen_reflection = true; extensions.Remove("glNV_texgen_reflection"); } - if (extensions.Contains("gl_NV_texture_barrier")) { NV_texture_barrier = true; extensions.Remove("glNV_texture_barrier"); } - if (extensions.Contains("gl_NV_texture_compression_vtc")) { NV_texture_compression_vtc = true; extensions.Remove("glNV_texture_compression_vtc"); } - if (extensions.Contains("gl_NV_texture_env_combine4")) { NV_texture_env_combine4 = true; extensions.Remove("glNV_texture_env_combine4"); } - if (extensions.Contains("gl_NV_texture_expand_normal")) { NV_texture_expand_normal = true; extensions.Remove("glNV_texture_expand_normal"); } - if (extensions.Contains("gl_NV_texture_multisample")) { NV_texture_multisample = true; extensions.Remove("glNV_texture_multisample"); } - if (extensions.Contains("gl_NV_texture_rectangle")) { NV_texture_rectangle = true; extensions.Remove("glNV_texture_rectangle"); } - if (extensions.Contains("gl_NV_texture_rectangle_compressed")) { NV_texture_rectangle_compressed = true; extensions.Remove("glNV_texture_rectangle_compressed"); } - if (extensions.Contains("gl_NV_texture_shader")) { NV_texture_shader = true; extensions.Remove("glNV_texture_shader"); } - if (extensions.Contains("gl_NV_texture_shader2")) { NV_texture_shader2 = true; extensions.Remove("glNV_texture_shader2"); } - if (extensions.Contains("gl_NV_texture_shader3")) { NV_texture_shader3 = true; extensions.Remove("glNV_texture_shader3"); } - if (extensions.Contains("gl_NV_timeline_semaphore")) { NV_timeline_semaphore = true; extensions.Remove("glNV_timeline_semaphore"); } - if (extensions.Contains("gl_NV_transform_feedback")) { NV_transform_feedback = true; extensions.Remove("glNV_transform_feedback"); } - if (extensions.Contains("gl_NV_transform_feedback2")) { NV_transform_feedback2 = true; extensions.Remove("glNV_transform_feedback2"); } - if (extensions.Contains("gl_NV_uniform_buffer_std430_layout")) { NV_uniform_buffer_std430_layout = true; extensions.Remove("glNV_uniform_buffer_std430_layout"); } - if (extensions.Contains("gl_NV_uniform_buffer_unified_memory")) { NV_uniform_buffer_unified_memory = true; extensions.Remove("glNV_uniform_buffer_unified_memory"); } - if (extensions.Contains("gl_NV_vdpau_interop")) { NV_vdpau_interop = true; extensions.Remove("glNV_vdpau_interop"); } - if (extensions.Contains("gl_NV_vdpau_interop2")) { NV_vdpau_interop2 = true; extensions.Remove("glNV_vdpau_interop2"); } - if (extensions.Contains("gl_NV_vertex_array_range")) { NV_vertex_array_range = true; extensions.Remove("glNV_vertex_array_range"); } - if (extensions.Contains("gl_NV_vertex_array_range2")) { NV_vertex_array_range2 = true; extensions.Remove("glNV_vertex_array_range2"); } - if (extensions.Contains("gl_NV_vertex_attrib_integer_64bit")) { NV_vertex_attrib_integer_64bit = true; extensions.Remove("glNV_vertex_attrib_integer_64bit"); } - if (extensions.Contains("gl_NV_vertex_buffer_unified_memory")) { NV_vertex_buffer_unified_memory = true; extensions.Remove("glNV_vertex_buffer_unified_memory"); } - if (extensions.Contains("gl_NV_vertex_program")) { NV_vertex_program = true; extensions.Remove("glNV_vertex_program"); } - if (extensions.Contains("gl_NV_vertex_program1_1")) { NV_vertex_program1_1 = true; extensions.Remove("glNV_vertex_program1_1"); } - if (extensions.Contains("gl_NV_vertex_program2")) { NV_vertex_program2 = true; extensions.Remove("glNV_vertex_program2"); } - if (extensions.Contains("gl_NV_vertex_program2_option")) { NV_vertex_program2_option = true; extensions.Remove("glNV_vertex_program2_option"); } - if (extensions.Contains("gl_NV_vertex_program3")) { NV_vertex_program3 = true; extensions.Remove("glNV_vertex_program3"); } - if (extensions.Contains("gl_NV_vertex_program4")) { NV_vertex_program4 = true; extensions.Remove("glNV_vertex_program4"); } - if (extensions.Contains("gl_NV_video_capture")) { NV_video_capture = true; extensions.Remove("glNV_video_capture"); } - if (extensions.Contains("gl_NV_viewport_array2")) { NV_viewport_array2 = true; extensions.Remove("glNV_viewport_array2"); } - if (extensions.Contains("gl_NV_viewport_swizzle")) { NV_viewport_swizzle = true; extensions.Remove("glNV_viewport_swizzle"); } - if (extensions.Contains("gl_OES_byte_coordinates")) { OES_byte_coordinates = true; extensions.Remove("glOES_byte_coordinates"); } - if (extensions.Contains("gl_OES_compressed_paletted_texture")) { OES_compressed_paletted_texture = true; extensions.Remove("glOES_compressed_paletted_texture"); } - if (extensions.Contains("gl_OES_fixed_point")) { OES_fixed_point = true; extensions.Remove("glOES_fixed_point"); } - if (extensions.Contains("gl_OES_query_matrix")) { OES_query_matrix = true; extensions.Remove("glOES_query_matrix"); } - if (extensions.Contains("gl_OES_read_format")) { OES_read_format = true; extensions.Remove("glOES_read_format"); } - if (extensions.Contains("gl_OES_single_precision")) { OES_single_precision = true; extensions.Remove("glOES_single_precision"); } - if (extensions.Contains("gl_OML_interlace")) { OML_interlace = true; extensions.Remove("glOML_interlace"); } - if (extensions.Contains("gl_OML_resample")) { OML_resample = true; extensions.Remove("glOML_resample"); } - if (extensions.Contains("gl_OML_subsample")) { OML_subsample = true; extensions.Remove("glOML_subsample"); } - if (extensions.Contains("gl_OVR_multiview")) { OVR_multiview = true; extensions.Remove("glOVR_multiview"); } - if (extensions.Contains("gl_OVR_multiview2")) { OVR_multiview2 = true; extensions.Remove("glOVR_multiview2"); } - if (extensions.Contains("gl_PGI_misc_hints")) { PGI_misc_hints = true; extensions.Remove("glPGI_misc_hints"); } - if (extensions.Contains("gl_PGI_vertex_hints")) { PGI_vertex_hints = true; extensions.Remove("glPGI_vertex_hints"); } - if (extensions.Contains("gl_REND_screen_coordinates")) { REND_screen_coordinates = true; extensions.Remove("glREND_screen_coordinates"); } - if (extensions.Contains("gl_S3_s3tc")) { S3_s3tc = true; extensions.Remove("glS3_s3tc"); } - if (extensions.Contains("gl_SGIS_detail_texture")) { SGIS_detail_texture = true; extensions.Remove("glSGIS_detail_texture"); } - if (extensions.Contains("gl_SGIS_fog_function")) { SGIS_fog_function = true; extensions.Remove("glSGIS_fog_function"); } - if (extensions.Contains("gl_SGIS_generate_mipmap")) { SGIS_generate_mipmap = true; extensions.Remove("glSGIS_generate_mipmap"); } - if (extensions.Contains("gl_SGIS_multisample")) { SGIS_multisample = true; extensions.Remove("glSGIS_multisample"); } - if (extensions.Contains("gl_SGIS_pixel_texture")) { SGIS_pixel_texture = true; extensions.Remove("glSGIS_pixel_texture"); } - if (extensions.Contains("gl_SGIS_point_line_texgen")) { SGIS_point_line_texgen = true; extensions.Remove("glSGIS_point_line_texgen"); } - if (extensions.Contains("gl_SGIS_point_parameters")) { SGIS_point_parameters = true; extensions.Remove("glSGIS_point_parameters"); } - if (extensions.Contains("gl_SGIS_sharpen_texture")) { SGIS_sharpen_texture = true; extensions.Remove("glSGIS_sharpen_texture"); } - if (extensions.Contains("gl_SGIS_texture4D")) { SGIS_texture4D = true; extensions.Remove("glSGIS_texture4D"); } - if (extensions.Contains("gl_SGIS_texture_border_clamp")) { SGIS_texture_border_clamp = true; extensions.Remove("glSGIS_texture_border_clamp"); } - if (extensions.Contains("gl_SGIS_texture_color_mask")) { SGIS_texture_color_mask = true; extensions.Remove("glSGIS_texture_color_mask"); } - if (extensions.Contains("gl_SGIS_texture_edge_clamp")) { SGIS_texture_edge_clamp = true; extensions.Remove("glSGIS_texture_edge_clamp"); } - if (extensions.Contains("gl_SGIS_texture_filter4")) { SGIS_texture_filter4 = true; extensions.Remove("glSGIS_texture_filter4"); } - if (extensions.Contains("gl_SGIS_texture_lod")) { SGIS_texture_lod = true; extensions.Remove("glSGIS_texture_lod"); } - if (extensions.Contains("gl_SGIS_texture_select")) { SGIS_texture_select = true; extensions.Remove("glSGIS_texture_select"); } - if (extensions.Contains("gl_SGIX_async")) { SGIX_async = true; extensions.Remove("glSGIX_async"); } - if (extensions.Contains("gl_SGIX_async_histogram")) { SGIX_async_histogram = true; extensions.Remove("glSGIX_async_histogram"); } - if (extensions.Contains("gl_SGIX_async_pixel")) { SGIX_async_pixel = true; extensions.Remove("glSGIX_async_pixel"); } - if (extensions.Contains("gl_SGIX_blend_alpha_minmax")) { SGIX_blend_alpha_minmax = true; extensions.Remove("glSGIX_blend_alpha_minmax"); } - if (extensions.Contains("gl_SGIX_calligraphic_fragment")) { SGIX_calligraphic_fragment = true; extensions.Remove("glSGIX_calligraphic_fragment"); } - if (extensions.Contains("gl_SGIX_clipmap")) { SGIX_clipmap = true; extensions.Remove("glSGIX_clipmap"); } - if (extensions.Contains("gl_SGIX_convolution_accuracy")) { SGIX_convolution_accuracy = true; extensions.Remove("glSGIX_convolution_accuracy"); } - if (extensions.Contains("gl_SGIX_depth_pass_instrument")) { SGIX_depth_pass_instrument = true; extensions.Remove("glSGIX_depth_pass_instrument"); } - if (extensions.Contains("gl_SGIX_depth_texture")) { SGIX_depth_texture = true; extensions.Remove("glSGIX_depth_texture"); } - if (extensions.Contains("gl_SGIX_flush_raster")) { SGIX_flush_raster = true; extensions.Remove("glSGIX_flush_raster"); } - if (extensions.Contains("gl_SGIX_fog_offset")) { SGIX_fog_offset = true; extensions.Remove("glSGIX_fog_offset"); } - if (extensions.Contains("gl_SGIX_fragment_lighting")) { SGIX_fragment_lighting = true; extensions.Remove("glSGIX_fragment_lighting"); } - if (extensions.Contains("gl_SGIX_framezoom")) { SGIX_framezoom = true; extensions.Remove("glSGIX_framezoom"); } - if (extensions.Contains("gl_SGIX_igloo_interface")) { SGIX_igloo_interface = true; extensions.Remove("glSGIX_igloo_interface"); } - if (extensions.Contains("gl_SGIX_instruments")) { SGIX_instruments = true; extensions.Remove("glSGIX_instruments"); } - if (extensions.Contains("gl_SGIX_interlace")) { SGIX_interlace = true; extensions.Remove("glSGIX_interlace"); } - if (extensions.Contains("gl_SGIX_ir_instrument1")) { SGIX_ir_instrument1 = true; extensions.Remove("glSGIX_ir_instrument1"); } - if (extensions.Contains("gl_SGIX_list_priority")) { SGIX_list_priority = true; extensions.Remove("glSGIX_list_priority"); } - if (extensions.Contains("gl_SGIX_pixel_texture")) { SGIX_pixel_texture = true; extensions.Remove("glSGIX_pixel_texture"); } - if (extensions.Contains("gl_SGIX_pixel_tiles")) { SGIX_pixel_tiles = true; extensions.Remove("glSGIX_pixel_tiles"); } - if (extensions.Contains("gl_SGIX_polynomial_ffd")) { SGIX_polynomial_ffd = true; extensions.Remove("glSGIX_polynomial_ffd"); } - if (extensions.Contains("gl_SGIX_reference_plane")) { SGIX_reference_plane = true; extensions.Remove("glSGIX_reference_plane"); } - if (extensions.Contains("gl_SGIX_resample")) { SGIX_resample = true; extensions.Remove("glSGIX_resample"); } - if (extensions.Contains("gl_SGIX_scalebias_hint")) { SGIX_scalebias_hint = true; extensions.Remove("glSGIX_scalebias_hint"); } - if (extensions.Contains("gl_SGIX_shadow")) { SGIX_shadow = true; extensions.Remove("glSGIX_shadow"); } - if (extensions.Contains("gl_SGIX_shadow_ambient")) { SGIX_shadow_ambient = true; extensions.Remove("glSGIX_shadow_ambient"); } - if (extensions.Contains("gl_SGIX_sprite")) { SGIX_sprite = true; extensions.Remove("glSGIX_sprite"); } - if (extensions.Contains("gl_SGIX_subsample")) { SGIX_subsample = true; extensions.Remove("glSGIX_subsample"); } - if (extensions.Contains("gl_SGIX_tag_sample_buffer")) { SGIX_tag_sample_buffer = true; extensions.Remove("glSGIX_tag_sample_buffer"); } - if (extensions.Contains("gl_SGIX_texture_add_env")) { SGIX_texture_add_env = true; extensions.Remove("glSGIX_texture_add_env"); } - if (extensions.Contains("gl_SGIX_texture_coordinate_clamp")) { SGIX_texture_coordinate_clamp = true; extensions.Remove("glSGIX_texture_coordinate_clamp"); } - if (extensions.Contains("gl_SGIX_texture_lod_bias")) { SGIX_texture_lod_bias = true; extensions.Remove("glSGIX_texture_lod_bias"); } - if (extensions.Contains("gl_SGIX_texture_multi_buffer")) { SGIX_texture_multi_buffer = true; extensions.Remove("glSGIX_texture_multi_buffer"); } - if (extensions.Contains("gl_SGIX_texture_scale_bias")) { SGIX_texture_scale_bias = true; extensions.Remove("glSGIX_texture_scale_bias"); } - if (extensions.Contains("gl_SGIX_vertex_preclip")) { SGIX_vertex_preclip = true; extensions.Remove("glSGIX_vertex_preclip"); } - if (extensions.Contains("gl_SGIX_ycrcb")) { SGIX_ycrcb = true; extensions.Remove("glSGIX_ycrcb"); } - if (extensions.Contains("gl_SGIX_ycrcb_subsample")) { SGIX_ycrcb_subsample = true; extensions.Remove("glSGIX_ycrcb_subsample"); } - if (extensions.Contains("gl_SGIX_ycrcba")) { SGIX_ycrcba = true; extensions.Remove("glSGIX_ycrcba"); } - if (extensions.Contains("gl_SGI_color_matrix")) { SGI_color_matrix = true; extensions.Remove("glSGI_color_matrix"); } - if (extensions.Contains("gl_SGI_color_table")) { SGI_color_table = true; extensions.Remove("glSGI_color_table"); } - if (extensions.Contains("gl_SGI_texture_color_table")) { SGI_texture_color_table = true; extensions.Remove("glSGI_texture_color_table"); } - if (extensions.Contains("gl_SUNX_constant_data")) { SUNX_constant_data = true; extensions.Remove("glSUNX_constant_data"); } - if (extensions.Contains("gl_SUN_convolution_border_modes")) { SUN_convolution_border_modes = true; extensions.Remove("glSUN_convolution_border_modes"); } - if (extensions.Contains("gl_SUN_global_alpha")) { SUN_global_alpha = true; extensions.Remove("glSUN_global_alpha"); } - if (extensions.Contains("gl_SUN_mesh_array")) { SUN_mesh_array = true; extensions.Remove("glSUN_mesh_array"); } - if (extensions.Contains("gl_SUN_slice_accum")) { SUN_slice_accum = true; extensions.Remove("glSUN_slice_accum"); } - if (extensions.Contains("gl_SUN_triangle_list")) { SUN_triangle_list = true; extensions.Remove("glSUN_triangle_list"); } - if (extensions.Contains("gl_SUN_vertex")) { SUN_vertex = true; extensions.Remove("glSUN_vertex"); } - if (extensions.Contains("gl_WIN_phong_shading")) { WIN_phong_shading = true; extensions.Remove("glWIN_phong_shading"); } - if (extensions.Contains("gl_WIN_specular_fog")) { WIN_specular_fog = true; extensions.Remove("glWIN_specular_fog"); } + if( extensions.Contains( "gl_4DFX_multisample" ) ) { + _4DFX_multisample = true; + extensions.Remove( "gl_4DFX_multisample" ); + } + if( extensions.Contains( "gl_3DFX_tbuffer" ) ) { + _3DFX_tbuffer = true; + extensions.Remove( "gl_3DFX_tbuffer" ); + } + if( extensions.Contains( "gl_3DFX_texture_compression_FXT1" ) ) { + _3DFX_texture_compression_FXT1 = true; + extensions.Remove( "gl_3DFX_texture_compression_FXT1" ); + } + if( extensions.Contains( "gl_AMD_blend_minmax_factor" ) ) { + AMD_blend_minmax_factor = true; + extensions.Remove( "glAMD_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_AMD_conservative_depth" ) ) { + AMD_conservative_depth = true; + extensions.Remove( "glAMD_conservative_depth" ); + } + if( extensions.Contains( "gl_AMD_debug_output" ) ) { + AMD_debug_output = true; + extensions.Remove( "glAMD_debug_output" ); + } + if( extensions.Contains( "gl_AMD_depth_clamp_separate" ) ) { + AMD_depth_clamp_separate = true; + extensions.Remove( "glAMD_depth_clamp_separate" ); + } + if( extensions.Contains( "gl_AMD_draw_buffers_blend" ) ) { + AMD_draw_buffers_blend = true; + extensions.Remove( "glAMD_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_multisample_advanced" ) ) { + AMD_framebuffer_multisample_advanced = true; + extensions.Remove( "glAMD_framebuffer_multisample_advanced" ); + } + if( extensions.Contains( "gl_AMD_framebuffer_sample_positions" ) ) { + AMD_framebuffer_sample_positions = true; + extensions.Remove( "glAMD_framebuffer_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_gcn_shader" ) ) { + AMD_gcn_shader = true; + extensions.Remove( "glAMD_gcn_shader" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_half_float" ) ) { + AMD_gpu_shader_half_float = true; + extensions.Remove( "glAMD_gpu_shader_half_float" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int16" ) ) { + AMD_gpu_shader_int16 = true; + extensions.Remove( "glAMD_gpu_shader_int16" ); + } + if( extensions.Contains( "gl_AMD_gpu_shader_int64" ) ) { + AMD_gpu_shader_int64 = true; + extensions.Remove( "glAMD_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_AMD_interleaved_elements" ) ) { + AMD_interleaved_elements = true; + extensions.Remove( "glAMD_interleaved_elements" ); + } + if( extensions.Contains( "gl_AMD_multi_draw_indirect" ) ) { + AMD_multi_draw_indirect = true; + extensions.Remove( "glAMD_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_AMD_name_gen_delete" ) ) { + AMD_name_gen_delete = true; + extensions.Remove( "glAMD_name_gen_delete" ); + } + if( extensions.Contains( "gl_AMD_occlusion_query_event" ) ) { + AMD_occlusion_query_event = true; + extensions.Remove( "glAMD_occlusion_query_event" ); + } + if( extensions.Contains( "gl_AMD_performance_monitor" ) ) { + AMD_performance_monitor = true; + extensions.Remove( "glAMD_performance_monitor" ); + } + if( extensions.Contains( "gl_AMD_pinned_memory" ) ) { + AMD_pinned_memory = true; + extensions.Remove( "glAMD_pinned_memory" ); + } + if( extensions.Contains( "gl_AMD_query_buffer_object" ) ) { + AMD_query_buffer_object = true; + extensions.Remove( "glAMD_query_buffer_object" ); + } + if( extensions.Contains( "gl_AMD_sample_positions" ) ) { + AMD_sample_positions = true; + extensions.Remove( "glAMD_sample_positions" ); + } + if( extensions.Contains( "gl_AMD_seamless_cubemap_per_texture" ) ) { + AMD_seamless_cubemap_per_texture = true; + extensions.Remove( "glAMD_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_AMD_shader_atomic_counter_ops" ) ) { + AMD_shader_atomic_counter_ops = true; + extensions.Remove( "glAMD_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_AMD_shader_ballot" ) ) { + AMD_shader_ballot = true; + extensions.Remove( "glAMD_shader_ballot" ); + } + if( extensions.Contains( "gl_AMD_shader_explicit_vertex_parameter" ) ) { + AMD_shader_explicit_vertex_parameter = true; + extensions.Remove( "glAMD_shader_explicit_vertex_parameter" ); + } + if( extensions.Contains( + "gl_AMD_shader_gpu_shader_half_float_fetch" ) ) { + AMD_shader_gpu_shader_half_float_fetch = true; + extensions.Remove( "glAMD_shader_gpu_shader_half_float_fetch" ); + } + if( extensions.Contains( "gl_AMD_shader_image_load_store_lod" ) ) { + AMD_shader_image_load_store_lod = true; + extensions.Remove( "glAMD_shader_image_load_store_lod" ); + } + if( extensions.Contains( "gl_AMD_shader_stencil_export" ) ) { + AMD_shader_stencil_export = true; + extensions.Remove( "glAMD_shader_stencil_export" ); + } + if( extensions.Contains( "gl_AMD_shader_trinary_minmax" ) ) { + AMD_shader_trinary_minmax = true; + extensions.Remove( "glAMD_shader_trinary_minmax" ); + } + if( extensions.Contains( "gl_AMD_sparse_texture" ) ) { + AMD_sparse_texture = true; + extensions.Remove( "glAMD_sparse_texture" ); + } + if( extensions.Contains( "gl_AMD_stencil_operation_extended" ) ) { + AMD_stencil_operation_extended = true; + extensions.Remove( "glAMD_stencil_operation_extended" ); + } + if( extensions.Contains( "gl_AMD_texture_gather_bias_lod" ) ) { + AMD_texture_gather_bias_lod = true; + extensions.Remove( "glAMD_texture_gather_bias_lod" ); + } + if( extensions.Contains( "gl_AMD_texture_texture4" ) ) { + AMD_texture_texture4 = true; + extensions.Remove( "glAMD_texture_texture4" ); + } + if( extensions.Contains( + "gl_AMD_transform_feedback3_lines_triangles" ) ) { + AMD_transform_feedback3_lines_triangles = true; + extensions.Remove( "glAMD_transform_feedback3_lines_triangles" ); + } + if( extensions.Contains( "gl_AMD_transform_feedback4" ) ) { + AMD_transform_feedback4 = true; + extensions.Remove( "glAMD_transform_feedback4" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_layer" ) ) { + AMD_vertex_shader_layer = true; + extensions.Remove( "glAMD_vertex_shader_layer" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_tessellator" ) ) { + AMD_vertex_shader_tessellator = true; + extensions.Remove( "glAMD_vertex_shader_tessellator" ); + } + if( extensions.Contains( "gl_AMD_vertex_shader_viewport_index" ) ) { + AMD_vertex_shader_viewport_index = true; + extensions.Remove( "glAMD_vertex_shader_viewport_index" ); + } + if( extensions.Contains( "gl_APPLE_aux_depth_stencil" ) ) { + APPLE_aux_depth_stencil = true; + extensions.Remove( "glAPPLE_aux_depth_stencil" ); + } + if( extensions.Contains( "gl_APPLE_client_storage" ) ) { + APPLE_client_storage = true; + extensions.Remove( "glAPPLE_client_storage" ); + } + if( extensions.Contains( "gl_APPLE_element_array" ) ) { + APPLE_element_array = true; + extensions.Remove( "glAPPLE_element_array" ); + } + if( extensions.Contains( "gl_APPLE_fence" ) ) { + APPLE_fence = true; + extensions.Remove( "glAPPLE_fence" ); + } + if( extensions.Contains( "gl_APPLE_float_pixels" ) ) { + APPLE_float_pixels = true; + extensions.Remove( "glAPPLE_float_pixels" ); + } + if( extensions.Contains( "gl_APPLE_flush_buffer_range" ) ) { + APPLE_flush_buffer_range = true; + extensions.Remove( "glAPPLE_flush_buffer_range" ); + } + if( extensions.Contains( "gl_APPLE_object_purgeable" ) ) { + APPLE_object_purgeable = true; + extensions.Remove( "glAPPLE_object_purgeable" ); + } + if( extensions.Contains( "gl_APPLE_rgb_422" ) ) { + APPLE_rgb_422 = true; + extensions.Remove( "glAPPLE_rgb_422" ); + } + if( extensions.Contains( "gl_APPLE_row_bytes" ) ) { + APPLE_row_bytes = true; + extensions.Remove( "glAPPLE_row_bytes" ); + } + if( extensions.Contains( "gl_APPLE_specular_vector" ) ) { + APPLE_specular_vector = true; + extensions.Remove( "glAPPLE_specular_vector" ); + } + if( extensions.Contains( "gl_APPLE_texture_range" ) ) { + APPLE_texture_range = true; + extensions.Remove( "glAPPLE_texture_range" ); + } + if( extensions.Contains( "gl_APPLE_transform_hint" ) ) { + APPLE_transform_hint = true; + extensions.Remove( "glAPPLE_transform_hint" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_object" ) ) { + APPLE_vertex_array_object = true; + extensions.Remove( "glAPPLE_vertex_array_object" ); + } + if( extensions.Contains( "gl_APPLE_vertex_array_range" ) ) { + APPLE_vertex_array_range = true; + extensions.Remove( "glAPPLE_vertex_array_range" ); + } + if( extensions.Contains( "gl_APPLE_vertex_program_evaluators" ) ) { + APPLE_vertex_program_evaluators = true; + extensions.Remove( "glAPPLE_vertex_program_evaluators" ); + } + if( extensions.Contains( "gl_APPLE_ycbcr_422" ) ) { + APPLE_ycbcr_422 = true; + extensions.Remove( "glAPPLE_ycbcr_422" ); + } + if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) { + ARB_ES2_compatibility = true; + extensions.Remove( "glARB_ES2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_1_compatibility" ) ) { + ARB_ES3_1_compatibility = true; + extensions.Remove( "glARB_ES3_1_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_2_compatibility" ) ) { + ARB_ES3_2_compatibility = true; + extensions.Remove( "glARB_ES3_2_compatibility" ); + } + if( extensions.Contains( "gl_ARB_ES3_compatibility" ) ) { + ARB_ES3_compatibility = true; + extensions.Remove( "glARB_ES3_compatibility" ); + } + if( extensions.Contains( "gl_ARB_arrays_of_arrays" ) ) { + ARB_arrays_of_arrays = true; + extensions.Remove( "glARB_arrays_of_arrays" ); + } + if( extensions.Contains( "gl_ARB_base_instance" ) ) { + ARB_base_instance = true; + extensions.Remove( "glARB_base_instance" ); + } + if( extensions.Contains( "gl_ARB_bindless_texture" ) ) { + ARB_bindless_texture = true; + extensions.Remove( "glARB_bindless_texture" ); + } + if( extensions.Contains( "gl_ARB_blend_func_extended" ) ) { + ARB_blend_func_extended = true; + extensions.Remove( "glARB_blend_func_extended" ); + } + if( extensions.Contains( "gl_ARB_buffer_storage" ) ) { + ARB_buffer_storage = true; + extensions.Remove( "glARB_buffer_storage" ); + } + if( extensions.Contains( "gl_ARB_cl_event" ) ) { + ARB_cl_event = true; + extensions.Remove( "glARB_cl_event" ); + } + if( extensions.Contains( "gl_ARB_clear_buffer_object" ) ) { + ARB_clear_buffer_object = true; + extensions.Remove( "glARB_clear_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_clear_texture" ) ) { + ARB_clear_texture = true; + extensions.Remove( "glARB_clear_texture" ); + } + if( extensions.Contains( "gl_ARB_clip_control" ) ) { + ARB_clip_control = true; + extensions.Remove( "glARB_clip_control" ); + } + if( extensions.Contains( "gl_ARB_color_buffer_float" ) ) { + ARB_color_buffer_float = true; + extensions.Remove( "glARB_color_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_compatibility" ) ) { + ARB_compatibility = true; + extensions.Remove( "glARB_compatibility" ); + } + if( extensions.Contains( "gl_ARB_compressed_texture_pixel_storage" ) ) { + ARB_compressed_texture_pixel_storage = true; + extensions.Remove( "glARB_compressed_texture_pixel_storage" ); + } + if( extensions.Contains( "gl_ARB_compute_shader" ) ) { + ARB_compute_shader = true; + extensions.Remove( "glARB_compute_shader" ); + } + if( extensions.Contains( "gl_ARB_compute_variable_group_size" ) ) { + ARB_compute_variable_group_size = true; + extensions.Remove( "glARB_compute_variable_group_size" ); + } + if( extensions.Contains( "gl_ARB_conditional_render_inverted" ) ) { + ARB_conditional_render_inverted = true; + extensions.Remove( "glARB_conditional_render_inverted" ); + } + if( extensions.Contains( "gl_ARB_conservative_depth" ) ) { + ARB_conservative_depth = true; + extensions.Remove( "glARB_conservative_depth" ); + } + if( extensions.Contains( "gl_ARB_copy_buffer" ) ) { + ARB_copy_buffer = true; + extensions.Remove( "glARB_copy_buffer" ); + } + if( extensions.Contains( "gl_ARB_copy_image" ) ) { + ARB_copy_image = true; + extensions.Remove( "glARB_copy_image" ); + } + if( extensions.Contains( "gl_ARB_cull_distance" ) ) { + ARB_cull_distance = true; + extensions.Remove( "glARB_cull_distance" ); + } + if( extensions.Contains( "gl_ARB_debug_output" ) ) { + ARB_debug_output = true; + extensions.Remove( "glARB_debug_output" ); + } + if( extensions.Contains( "gl_ARB_depth_buffer_float" ) ) { + ARB_depth_buffer_float = true; + extensions.Remove( "glARB_depth_buffer_float" ); + } + if( extensions.Contains( "gl_ARB_depth_clamp" ) ) { + ARB_depth_clamp = true; + extensions.Remove( "glARB_depth_clamp" ); + } + if( extensions.Contains( "gl_ARB_depth_texture" ) ) { + ARB_depth_texture = true; + extensions.Remove( "glARB_depth_texture" ); + } + if( extensions.Contains( "gl_ARB_derivative_control" ) ) { + ARB_derivative_control = true; + extensions.Remove( "glARB_derivative_control" ); + } + if( extensions.Contains( "gl_ARB_direct_state_access" ) ) { + ARB_direct_state_access = true; + extensions.Remove( "glARB_direct_state_access" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers" ) ) { + ARB_draw_buffers = true; + extensions.Remove( "glARB_draw_buffers" ); + } + if( extensions.Contains( "gl_ARB_draw_buffers_blend" ) ) { + ARB_draw_buffers_blend = true; + extensions.Remove( "glARB_draw_buffers_blend" ); + } + if( extensions.Contains( "gl_ARB_draw_elements_base_vertex" ) ) { + ARB_draw_elements_base_vertex = true; + extensions.Remove( "glARB_draw_elements_base_vertex" ); + } + if( extensions.Contains( "gl_ARB_draw_indirect" ) ) { + ARB_draw_indirect = true; + extensions.Remove( "glARB_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_draw_instanced" ) ) { + ARB_draw_instanced = true; + extensions.Remove( "glARB_draw_instanced" ); + } + if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) { + ARB_enhanced_layouts = true; + extensions.Remove( "glARB_enhanced_layouts" ); + } + if( extensions.Contains( "gl_ARB_explicit_attrib_location" ) ) { + ARB_explicit_attrib_location = true; + extensions.Remove( "glARB_explicit_attrib_location" ); + } + if( extensions.Contains( "gl_ARB_explicit_uniform_location" ) ) { + ARB_explicit_uniform_location = true; + extensions.Remove( "glARB_explicit_uniform_location" ); + } + if( extensions.Contains( "gl_ARB_fragment_coord_conventions" ) ) { + ARB_fragment_coord_conventions = true; + extensions.Remove( "glARB_fragment_coord_conventions" ); + } + if( extensions.Contains( "gl_ARB_fragment_layer_viewport" ) ) { + ARB_fragment_layer_viewport = true; + extensions.Remove( "glARB_fragment_layer_viewport" ); + } + if( extensions.Contains( "gl_ARB_fragment_program" ) ) { + ARB_fragment_program = true; + extensions.Remove( "glARB_fragment_program" ); + } + if( extensions.Contains( "gl_ARB_fragment_program_shadow" ) ) { + ARB_fragment_program_shadow = true; + extensions.Remove( "glARB_fragment_program_shadow" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader" ) ) { + ARB_fragment_shader = true; + extensions.Remove( "glARB_fragment_shader" ); + } + if( extensions.Contains( "gl_ARB_fragment_shader_interlock" ) ) { + ARB_fragment_shader_interlock = true; + extensions.Remove( "glARB_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_no_attachments" ) ) { + ARB_framebuffer_no_attachments = true; + extensions.Remove( "glARB_framebuffer_no_attachments" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_object" ) ) { + ARB_framebuffer_object = true; + extensions.Remove( "glARB_framebuffer_object" ); + } + if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) { + ARB_framebuffer_sRGB = true; + extensions.Remove( "glARB_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) { + ARB_geometry_shader4 = true; + extensions.Remove( "glARB_geometry_shader4" ); + } + if( extensions.Contains( "gl_ARB_get_program_binary" ) ) { + ARB_get_program_binary = true; + extensions.Remove( "glARB_get_program_binary" ); + } + if( extensions.Contains( "gl_ARB_get_texture_sub_image" ) ) { + ARB_get_texture_sub_image = true; + extensions.Remove( "glARB_get_texture_sub_image" ); + } + if( extensions.Contains( "gl_ARB_gl_spirv" ) ) { + ARB_gl_spirv = true; + extensions.Remove( "glARB_gl_spirv" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) { + ARB_gpu_shader5 = true; + extensions.Remove( "glARB_gpu_shader5" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_fp64" ) ) { + ARB_gpu_shader_fp64 = true; + extensions.Remove( "glARB_gpu_shader_fp64" ); + } + if( extensions.Contains( "gl_ARB_gpu_shader_int64" ) ) { + ARB_gpu_shader_int64 = true; + extensions.Remove( "glARB_gpu_shader_int64" ); + } + if( extensions.Contains( "gl_ARB_half_float_pixel" ) ) { + ARB_half_float_pixel = true; + extensions.Remove( "glARB_half_float_pixel" ); + } + if( extensions.Contains( "gl_ARB_half_float_vertex" ) ) { + ARB_half_float_vertex = true; + extensions.Remove( "glARB_half_float_vertex" ); + } + if( extensions.Contains( "gl_ARB_imaging" ) ) { + ARB_imaging = true; + extensions.Remove( "glARB_imaging" ); + } + if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) { + ARB_indirect_parameters = true; + extensions.Remove( "glARB_indirect_parameters" ); + } + if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) { + ARB_instanced_arrays = true; + extensions.Remove( "glARB_instanced_arrays" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query" ) ) { + ARB_internalformat_query = true; + extensions.Remove( "glARB_internalformat_query" ); + } + if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) { + ARB_internalformat_query2 = true; + extensions.Remove( "glARB_internalformat_query2" ); + } + if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) { + ARB_invalidate_subdata = true; + extensions.Remove( "glARB_invalidate_subdata" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_alignment" ) ) { + ARB_map_buffer_alignment = true; + extensions.Remove( "glARB_map_buffer_alignment" ); + } + if( extensions.Contains( "gl_ARB_map_buffer_range" ) ) { + ARB_map_buffer_range = true; + extensions.Remove( "glARB_map_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_matrix_palette" ) ) { + ARB_matrix_palette = true; + extensions.Remove( "glARB_matrix_palette" ); + } + if( extensions.Contains( "gl_ARB_multi_bind" ) ) { + ARB_multi_bind = true; + extensions.Remove( "glARB_multi_bind" ); + } + if( extensions.Contains( "gl_ARB_multi_draw_indirect" ) ) { + ARB_multi_draw_indirect = true; + extensions.Remove( "glARB_multi_draw_indirect" ); + } + if( extensions.Contains( "gl_ARB_multisample" ) ) { + ARB_multisample = true; + extensions.Remove( "glARB_multisample" ); + } + if( extensions.Contains( "gl_ARB_multitexture" ) ) { + ARB_multitexture = true; + extensions.Remove( "glARB_multitexture" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query" ) ) { + ARB_occlusion_query = true; + extensions.Remove( "glARB_occlusion_query" ); + } + if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) { + ARB_occlusion_query2 = true; + extensions.Remove( "glARB_occlusion_query2" ); + } + if( extensions.Contains( "gl_ARB_parallel_shader_compile" ) ) { + ARB_parallel_shader_compile = true; + extensions.Remove( "glARB_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_ARB_pipeline_statistics_query" ) ) { + ARB_pipeline_statistics_query = true; + extensions.Remove( "glARB_pipeline_statistics_query" ); + } + if( extensions.Contains( "gl_ARB_pixel_buffer_object" ) ) { + ARB_pixel_buffer_object = true; + extensions.Remove( "glARB_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_point_parameters" ) ) { + ARB_point_parameters = true; + extensions.Remove( "glARB_point_parameters" ); + } + if( extensions.Contains( "gl_ARB_point_sprite" ) ) { + ARB_point_sprite = true; + extensions.Remove( "glARB_point_sprite" ); + } + if( extensions.Contains( "gl_ARB_polygon_offset_clamp" ) ) { + ARB_polygon_offset_clamp = true; + extensions.Remove( "glARB_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_ARB_post_depth_coverage" ) ) { + ARB_post_depth_coverage = true; + extensions.Remove( "glARB_post_depth_coverage" ); + } + if( extensions.Contains( "gl_ARB_program_interface_query" ) ) { + ARB_program_interface_query = true; + extensions.Remove( "glARB_program_interface_query" ); + } + if( extensions.Contains( "gl_ARB_provoking_vertex" ) ) { + ARB_provoking_vertex = true; + extensions.Remove( "glARB_provoking_vertex" ); + } + if( extensions.Contains( "gl_ARB_query_buffer_object" ) ) { + ARB_query_buffer_object = true; + extensions.Remove( "glARB_query_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_robust_buffer_access_behavior" ) ) { + ARB_robust_buffer_access_behavior = true; + extensions.Remove( "glARB_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_ARB_robustness" ) ) { + ARB_robustness = true; + extensions.Remove( "glARB_robustness" ); + } + if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) { + ARB_robustness_isolation = true; + extensions.Remove( "glARB_robustness_isolation" ); + } + if( extensions.Contains( "gl_ARB_sample_locations" ) ) { + ARB_sample_locations = true; + extensions.Remove( "glARB_sample_locations" ); + } + if( extensions.Contains( "gl_ARB_sample_shading" ) ) { + ARB_sample_shading = true; + extensions.Remove( "glARB_sample_shading" ); + } + if( extensions.Contains( "gl_ARB_sampler_objects" ) ) { + ARB_sampler_objects = true; + extensions.Remove( "glARB_sampler_objects" ); + } + if( extensions.Contains( "gl_ARB_seamless_cube_map" ) ) { + ARB_seamless_cube_map = true; + extensions.Remove( "glARB_seamless_cube_map" ); + } + if( extensions.Contains( "gl_ARB_seamless_cubemap_per_texture" ) ) { + ARB_seamless_cubemap_per_texture = true; + extensions.Remove( "glARB_seamless_cubemap_per_texture" ); + } + if( extensions.Contains( "gl_ARB_separate_shader_objects" ) ) { + ARB_separate_shader_objects = true; + extensions.Remove( "glARB_separate_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counter_ops" ) ) { + ARB_shader_atomic_counter_ops = true; + extensions.Remove( "glARB_shader_atomic_counter_ops" ); + } + if( extensions.Contains( "gl_ARB_shader_atomic_counters" ) ) { + ARB_shader_atomic_counters = true; + extensions.Remove( "glARB_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_ARB_shader_ballot" ) ) { + ARB_shader_ballot = true; + extensions.Remove( "glARB_shader_ballot" ); + } + if( extensions.Contains( "gl_ARB_shader_bit_encoding" ) ) { + ARB_shader_bit_encoding = true; + extensions.Remove( "glARB_shader_bit_encoding" ); + } + if( extensions.Contains( "gl_ARB_shader_clock" ) ) { + ARB_shader_clock = true; + extensions.Remove( "glARB_shader_clock" ); + } + if( extensions.Contains( "gl_ARB_shader_draw_parameters" ) ) { + ARB_shader_draw_parameters = true; + extensions.Remove( "glARB_shader_draw_parameters" ); + } + if( extensions.Contains( "gl_ARB_shader_group_vote" ) ) { + ARB_shader_group_vote = true; + extensions.Remove( "glARB_shader_group_vote" ); + } + if( extensions.Contains( "gl_ARB_shader_image_load_store" ) ) { + ARB_shader_image_load_store = true; + extensions.Remove( "glARB_shader_image_load_store" ); + } + if( extensions.Contains( "gl_ARB_shader_image_size" ) ) { + ARB_shader_image_size = true; + extensions.Remove( "glARB_shader_image_size" ); + } + if( extensions.Contains( "gl_ARB_shader_objects" ) ) { + ARB_shader_objects = true; + extensions.Remove( "glARB_shader_objects" ); + } + if( extensions.Contains( "gl_ARB_shader_precision" ) ) { + ARB_shader_precision = true; + extensions.Remove( "glARB_shader_precision" ); + } + if( extensions.Contains( "gl_ARB_shader_stencil_export" ) ) { + ARB_shader_stencil_export = true; + extensions.Remove( "glARB_shader_stencil_export" ); + } + if( extensions.Contains( "gl_ARB_shader_storage_buffer_object" ) ) { + ARB_shader_storage_buffer_object = true; + extensions.Remove( "glARB_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_shader_subroutine" ) ) { + ARB_shader_subroutine = true; + extensions.Remove( "glARB_shader_subroutine" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_image_samples" ) ) { + ARB_shader_texture_image_samples = true; + extensions.Remove( "glARB_shader_texture_image_samples" ); + } + if( extensions.Contains( "gl_ARB_shader_texture_lod" ) ) { + ARB_shader_texture_lod = true; + extensions.Remove( "glARB_shader_texture_lod" ); + } + if( extensions.Contains( "gl_ARB_shader_viewport_layer_array" ) ) { + ARB_shader_viewport_layer_array = true; + extensions.Remove( "glARB_shader_viewport_layer_array" ); + } + if( extensions.Contains( "gl_ARB_shading_language_100" ) ) { + ARB_shading_language_100 = true; + extensions.Remove( "glARB_shading_language_100" ); + } + if( extensions.Contains( "gl_ARB_shading_language_420pack" ) ) { + ARB_shading_language_420pack = true; + extensions.Remove( "glARB_shading_language_420pack" ); + } + if( extensions.Contains( "gl_ARB_shading_language_include" ) ) { + ARB_shading_language_include = true; + extensions.Remove( "glARB_shading_language_include" ); + } + if( extensions.Contains( "gl_ARB_shading_language_packing" ) ) { + ARB_shading_language_packing = true; + extensions.Remove( "glARB_shading_language_packing" ); + } + if( extensions.Contains( "gl_ARB_shadow" ) ) { + ARB_shadow = true; + extensions.Remove( "glARB_shadow" ); + } + if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) { + ARB_shadow_ambient = true; + extensions.Remove( "glARB_shadow_ambient" ); + } + if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) { + ARB_sparse_buffer = true; + extensions.Remove( "glARB_sparse_buffer" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture" ) ) { + ARB_sparse_texture = true; + extensions.Remove( "glARB_sparse_texture" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) { + ARB_sparse_texture2 = true; + extensions.Remove( "glARB_sparse_texture2" ); + } + if( extensions.Contains( "gl_ARB_sparse_texture_clamp" ) ) { + ARB_sparse_texture_clamp = true; + extensions.Remove( "glARB_sparse_texture_clamp" ); + } + if( extensions.Contains( "gl_ARB_spirv_extensions" ) ) { + ARB_spirv_extensions = true; + extensions.Remove( "glARB_spirv_extensions" ); + } + if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) { + ARB_stencil_texturing = true; + extensions.Remove( "glARB_stencil_texturing" ); + } + if( extensions.Contains( "gl_ARB_sync" ) ) { + ARB_sync = true; + extensions.Remove( "glARB_sync" ); + } + if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) { + ARB_tessellation_shader = true; + extensions.Remove( "glARB_tessellation_shader" ); + } + if( extensions.Contains( "gl_ARB_texture_barrier" ) ) { + ARB_texture_barrier = true; + extensions.Remove( "glARB_texture_barrier" ); + } + if( extensions.Contains( "gl_ARB_texture_border_clamp" ) ) { + ARB_texture_border_clamp = true; + extensions.Remove( "glARB_texture_border_clamp" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object" ) ) { + ARB_texture_buffer_object = true; + extensions.Remove( "glARB_texture_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_object_rgb32" ) ) { + ARB_texture_buffer_object_rgb32 = true; + extensions.Remove( "glARB_texture_buffer_object_rgb32" ); + } + if( extensions.Contains( "gl_ARB_texture_buffer_range" ) ) { + ARB_texture_buffer_range = true; + extensions.Remove( "glARB_texture_buffer_range" ); + } + if( extensions.Contains( "gl_ARB_texture_compression" ) ) { + ARB_texture_compression = true; + extensions.Remove( "glARB_texture_compression" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_bptc" ) ) { + ARB_texture_compression_bptc = true; + extensions.Remove( "glARB_texture_compression_bptc" ); + } + if( extensions.Contains( "gl_ARB_texture_compression_rgtc" ) ) { + ARB_texture_compression_rgtc = true; + extensions.Remove( "glARB_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map" ) ) { + ARB_texture_cube_map = true; + extensions.Remove( "glARB_texture_cube_map" ); + } + if( extensions.Contains( "gl_ARB_texture_cube_map_array" ) ) { + ARB_texture_cube_map_array = true; + extensions.Remove( "glARB_texture_cube_map_array" ); + } + if( extensions.Contains( "gl_ARB_texture_env_add" ) ) { + ARB_texture_env_add = true; + extensions.Remove( "glARB_texture_env_add" ); + } + if( extensions.Contains( "gl_ARB_texture_env_combine" ) ) { + ARB_texture_env_combine = true; + extensions.Remove( "glARB_texture_env_combine" ); + } + if( extensions.Contains( "gl_ARB_texture_env_crossbar" ) ) { + ARB_texture_env_crossbar = true; + extensions.Remove( "glARB_texture_env_crossbar" ); + } + if( extensions.Contains( "gl_ARB_texture_env_dot3" ) ) { + ARB_texture_env_dot3 = true; + extensions.Remove( "glARB_texture_env_dot3" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_anisotropic" ) ) { + ARB_texture_filter_anisotropic = true; + extensions.Remove( "glARB_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_ARB_texture_filter_minmax" ) ) { + ARB_texture_filter_minmax = true; + extensions.Remove( "glARB_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_ARB_texture_float" ) ) { + ARB_texture_float = true; + extensions.Remove( "glARB_texture_float" ); + } + if( extensions.Contains( "gl_ARB_texture_gather" ) ) { + ARB_texture_gather = true; + extensions.Remove( "glARB_texture_gather" ); + } + if( extensions.Contains( "gl_ARB_texture_mirror_clamp_to_edge" ) ) { + ARB_texture_mirror_clamp_to_edge = true; + extensions.Remove( "glARB_texture_mirror_clamp_to_edge" ); + } + if( extensions.Contains( "gl_ARB_texture_mirrored_repeat" ) ) { + ARB_texture_mirrored_repeat = true; + extensions.Remove( "glARB_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_ARB_texture_multisample" ) ) { + ARB_texture_multisample = true; + extensions.Remove( "glARB_texture_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_non_power_of_two" ) ) { + ARB_texture_non_power_of_two = true; + extensions.Remove( "glARB_texture_non_power_of_two" ); + } + if( extensions.Contains( "gl_ARB_texture_query_levels" ) ) { + ARB_texture_query_levels = true; + extensions.Remove( "glARB_texture_query_levels" ); + } + if( extensions.Contains( "gl_ARB_texture_query_lod" ) ) { + ARB_texture_query_lod = true; + extensions.Remove( "glARB_texture_query_lod" ); + } + if( extensions.Contains( "gl_ARB_texture_rectangle" ) ) { + ARB_texture_rectangle = true; + extensions.Remove( "glARB_texture_rectangle" ); + } + if( extensions.Contains( "gl_ARB_texture_rg" ) ) { + ARB_texture_rg = true; + extensions.Remove( "glARB_texture_rg" ); + } + if( extensions.Contains( "gl_ARB_texture_rgb10_a2ui" ) ) { + ARB_texture_rgb10_a2ui = true; + extensions.Remove( "glARB_texture_rgb10_a2ui" ); + } + if( extensions.Contains( "gl_ARB_texture_stencil8" ) ) { + ARB_texture_stencil8 = true; + extensions.Remove( "glARB_texture_stencil8" ); + } + if( extensions.Contains( "gl_ARB_texture_storage" ) ) { + ARB_texture_storage = true; + extensions.Remove( "glARB_texture_storage" ); + } + if( extensions.Contains( "gl_ARB_texture_storage_multisample" ) ) { + ARB_texture_storage_multisample = true; + extensions.Remove( "glARB_texture_storage_multisample" ); + } + if( extensions.Contains( "gl_ARB_texture_swizzle" ) ) { + ARB_texture_swizzle = true; + extensions.Remove( "glARB_texture_swizzle" ); + } + if( extensions.Contains( "gl_ARB_texture_view" ) ) { + ARB_texture_view = true; + extensions.Remove( "glARB_texture_view" ); + } + if( extensions.Contains( "gl_ARB_timer_query" ) ) { + ARB_timer_query = true; + extensions.Remove( "glARB_timer_query" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) { + ARB_transform_feedback2 = true; + extensions.Remove( "glARB_transform_feedback2" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) { + ARB_transform_feedback3 = true; + extensions.Remove( "glARB_transform_feedback3" ); + } + if( extensions.Contains( "gl_ARB_transform_feedback_instanced" ) ) { + ARB_transform_feedback_instanced = true; + extensions.Remove( "glARB_transform_feedback_instanced" ); + } + if( extensions.Contains( + "gl_ARB_transform_feedback_overflow_query" ) ) { + ARB_transform_feedback_overflow_query = true; + extensions.Remove( "glARB_transform_feedback_overflow_query" ); + } + if( extensions.Contains( "gl_ARB_transpose_matrix" ) ) { + ARB_transpose_matrix = true; + extensions.Remove( "glARB_transpose_matrix" ); + } + if( extensions.Contains( "gl_ARB_uniform_buffer_object" ) ) { + ARB_uniform_buffer_object = true; + extensions.Remove( "glARB_uniform_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_bgra" ) ) { + ARB_vertex_array_bgra = true; + extensions.Remove( "glARB_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_ARB_vertex_array_object" ) ) { + ARB_vertex_array_object = true; + extensions.Remove( "glARB_vertex_array_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_64bit" ) ) { + ARB_vertex_attrib_64bit = true; + extensions.Remove( "glARB_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_ARB_vertex_attrib_binding" ) ) { + ARB_vertex_attrib_binding = true; + extensions.Remove( "glARB_vertex_attrib_binding" ); + } + if( extensions.Contains( "gl_ARB_vertex_blend" ) ) { + ARB_vertex_blend = true; + extensions.Remove( "glARB_vertex_blend" ); + } + if( extensions.Contains( "gl_ARB_vertex_buffer_object" ) ) { + ARB_vertex_buffer_object = true; + extensions.Remove( "glARB_vertex_buffer_object" ); + } + if( extensions.Contains( "gl_ARB_vertex_program" ) ) { + ARB_vertex_program = true; + extensions.Remove( "glARB_vertex_program" ); + } + if( extensions.Contains( "gl_ARB_vertex_shader" ) ) { + ARB_vertex_shader = true; + extensions.Remove( "glARB_vertex_shader" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_10f_11f_11f_rev" ) ) { + ARB_vertex_type_10f_11f_11f_rev = true; + extensions.Remove( "glARB_vertex_type_10f_11f_11f_rev" ); + } + if( extensions.Contains( "gl_ARB_vertex_type_2_10_10_10_rev" ) ) { + ARB_vertex_type_2_10_10_10_rev = true; + extensions.Remove( "glARB_vertex_type_2_10_10_10_rev" ); + } + if( extensions.Contains( "gl_ARB_viewport_array" ) ) { + ARB_viewport_array = true; + extensions.Remove( "glARB_viewport_array" ); + } + if( extensions.Contains( "gl_ARB_window_pos" ) ) { + ARB_window_pos = true; + extensions.Remove( "glARB_window_pos" ); + } + if( extensions.Contains( "gl_ATI_draw_buffers" ) ) { + ATI_draw_buffers = true; + extensions.Remove( "glATI_draw_buffers" ); + } + if( extensions.Contains( "gl_ATI_element_array" ) ) { + ATI_element_array = true; + extensions.Remove( "glATI_element_array" ); + } + if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) { + ATI_envmap_bumpmap = true; + extensions.Remove( "glATI_envmap_bumpmap" ); + } + if( extensions.Contains( "gl_ATI_fragment_shader" ) ) { + ATI_fragment_shader = true; + extensions.Remove( "glATI_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_map_object_buffer" ) ) { + ATI_map_object_buffer = true; + extensions.Remove( "glATI_map_object_buffer" ); + } + if( extensions.Contains( "gl_ATI_meminfo" ) ) { + ATI_meminfo = true; + extensions.Remove( "glATI_meminfo" ); + } + if( extensions.Contains( "gl_ATI_pixel_format_float" ) ) { + ATI_pixel_format_float = true; + extensions.Remove( "glATI_pixel_format_float" ); + } + if( extensions.Contains( "gl_ATI_pn_triangles" ) ) { + ATI_pn_triangles = true; + extensions.Remove( "glATI_pn_triangles" ); + } + if( extensions.Contains( "gl_ATI_separate_stencil" ) ) { + ATI_separate_stencil = true; + extensions.Remove( "glATI_separate_stencil" ); + } + if( extensions.Contains( "gl_ATI_text_fragment_shader" ) ) { + ATI_text_fragment_shader = true; + extensions.Remove( "glATI_text_fragment_shader" ); + } + if( extensions.Contains( "gl_ATI_texture_env_combine3" ) ) { + ATI_texture_env_combine3 = true; + extensions.Remove( "glATI_texture_env_combine3" ); + } + if( extensions.Contains( "gl_ATI_texture_float" ) ) { + ATI_texture_float = true; + extensions.Remove( "glATI_texture_float" ); + } + if( extensions.Contains( "gl_ATI_texture_mirror_once" ) ) { + ATI_texture_mirror_once = true; + extensions.Remove( "glATI_texture_mirror_once" ); + } + if( extensions.Contains( "gl_ATI_vertex_array_object" ) ) { + ATI_vertex_array_object = true; + extensions.Remove( "glATI_vertex_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_attrib_array_object" ) ) { + ATI_vertex_attrib_array_object = true; + extensions.Remove( "glATI_vertex_attrib_array_object" ); + } + if( extensions.Contains( "gl_ATI_vertex_streams" ) ) { + ATI_vertex_streams = true; + extensions.Remove( "glATI_vertex_streams" ); + } + if( extensions.Contains( "gl_EXT_422_pixels" ) ) { + EXT_422_pixels = true; + extensions.Remove( "glEXT_422_pixels" ); + } + if( extensions.Contains( "gl_EXT_EGL_image_storage" ) ) { + EXT_EGL_image_storage = true; + extensions.Remove( "glEXT_EGL_image_storage" ); + } + if( extensions.Contains( "gl_EXT_EGL_sync" ) ) { + EXT_EGL_sync = true; + extensions.Remove( "glEXT_EGL_sync" ); + } + if( extensions.Contains( "gl_EXT_abgr" ) ) { + EXT_abgr = true; + extensions.Remove( "glEXT_abgr" ); + } + if( extensions.Contains( "gl_EXT_bgra" ) ) { + EXT_bgra = true; + extensions.Remove( "glEXT_bgra" ); + } + if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) { + EXT_bindable_uniform = true; + extensions.Remove( "glEXT_bindable_uniform" ); + } + if( extensions.Contains( "gl_EXT_blend_color" ) ) { + EXT_blend_color = true; + extensions.Remove( "glEXT_blend_color" ); + } + if( extensions.Contains( "gl_EXT_blend_equation_separate" ) ) { + EXT_blend_equation_separate = true; + extensions.Remove( "glEXT_blend_equation_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_func_separate" ) ) { + EXT_blend_func_separate = true; + extensions.Remove( "glEXT_blend_func_separate" ); + } + if( extensions.Contains( "gl_EXT_blend_logic_op" ) ) { + EXT_blend_logic_op = true; + extensions.Remove( "glEXT_blend_logic_op" ); + } + if( extensions.Contains( "gl_EXT_blend_minmax" ) ) { + EXT_blend_minmax = true; + extensions.Remove( "glEXT_blend_minmax" ); + } + if( extensions.Contains( "gl_EXT_blend_subtract" ) ) { + EXT_blend_subtract = true; + extensions.Remove( "glEXT_blend_subtract" ); + } + if( extensions.Contains( "gl_EXT_clip_volume_hint" ) ) { + EXT_clip_volume_hint = true; + extensions.Remove( "glEXT_clip_volume_hint" ); + } + if( extensions.Contains( "gl_EXT_cmyka" ) ) { + EXT_cmyka = true; + extensions.Remove( "glEXT_cmyka" ); + } + if( extensions.Contains( "gl_EXT_color_subtable" ) ) { + EXT_color_subtable = true; + extensions.Remove( "glEXT_color_subtable" ); + } + if( extensions.Contains( "gl_EXT_compiled_vertex_array" ) ) { + EXT_compiled_vertex_array = true; + extensions.Remove( "glEXT_compiled_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_convolution" ) ) { + EXT_convolution = true; + extensions.Remove( "glEXT_convolution" ); + } + if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) { + EXT_coordinate_frame = true; + extensions.Remove( "glEXT_coordinate_frame" ); + } + if( extensions.Contains( "gl_EXT_copy_texture" ) ) { + EXT_copy_texture = true; + extensions.Remove( "glEXT_copy_texture" ); + } + if( extensions.Contains( "gl_EXT_cull_vertex" ) ) { + EXT_cull_vertex = true; + extensions.Remove( "glEXT_cull_vertex" ); + } + if( extensions.Contains( "gl_EXT_debug_label" ) ) { + EXT_debug_label = true; + extensions.Remove( "glEXT_debug_label" ); + } + if( extensions.Contains( "gl_EXT_debug_marker" ) ) { + EXT_debug_marker = true; + extensions.Remove( "glEXT_debug_marker" ); + } + if( extensions.Contains( "gl_EXT_depth_bounds_test" ) ) { + EXT_depth_bounds_test = true; + extensions.Remove( "glEXT_depth_bounds_test" ); + } + if( extensions.Contains( "gl_EXT_direct_state_access" ) ) { + EXT_direct_state_access = true; + extensions.Remove( "glEXT_direct_state_access" ); + } + if( extensions.Contains( "gl_EXT_draw_buffers2" ) ) { + EXT_draw_buffers2 = true; + extensions.Remove( "glEXT_draw_buffers2" ); + } + if( extensions.Contains( "gl_EXT_draw_instanced" ) ) { + EXT_draw_instanced = true; + extensions.Remove( "glEXT_draw_instanced" ); + } + if( extensions.Contains( "gl_EXT_draw_range_elements" ) ) { + EXT_draw_range_elements = true; + extensions.Remove( "glEXT_draw_range_elements" ); + } + if( extensions.Contains( "gl_EXT_external_buffer" ) ) { + EXT_external_buffer = true; + extensions.Remove( "glEXT_external_buffer" ); + } + if( extensions.Contains( "gl_EXT_fog_coord" ) ) { + EXT_fog_coord = true; + extensions.Remove( "glEXT_fog_coord" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) { + EXT_framebuffer_blit = true; + extensions.Remove( "glEXT_framebuffer_blit" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_blit_layers" ) ) { + EXT_framebuffer_blit_layers = true; + extensions.Remove( "glEXT_framebuffer_blit_layers" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_multisample" ) ) { + EXT_framebuffer_multisample = true; + extensions.Remove( "glEXT_framebuffer_multisample" ); + } + if( extensions.Contains( + "gl_EXT_framebuffer_multisample_blit_scaled" ) ) { + EXT_framebuffer_multisample_blit_scaled = true; + extensions.Remove( "glEXT_framebuffer_multisample_blit_scaled" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_object" ) ) { + EXT_framebuffer_object = true; + extensions.Remove( "glEXT_framebuffer_object" ); + } + if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) { + EXT_framebuffer_sRGB = true; + extensions.Remove( "glEXT_framebuffer_sRGB" ); + } + if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) { + EXT_geometry_shader4 = true; + extensions.Remove( "glEXT_geometry_shader4" ); + } + if( extensions.Contains( "gl_EXT_gpu_program_parameters" ) ) { + EXT_gpu_program_parameters = true; + extensions.Remove( "glEXT_gpu_program_parameters" ); + } + if( extensions.Contains( "gl_EXT_gpu_shader4" ) ) { + EXT_gpu_shader4 = true; + extensions.Remove( "glEXT_gpu_shader4" ); + } + if( extensions.Contains( "gl_EXT_histogram" ) ) { + EXT_histogram = true; + extensions.Remove( "glEXT_histogram" ); + } + if( extensions.Contains( "gl_EXT_index_array_formats" ) ) { + EXT_index_array_formats = true; + extensions.Remove( "glEXT_index_array_formats" ); + } + if( extensions.Contains( "gl_EXT_index_func" ) ) { + EXT_index_func = true; + extensions.Remove( "glEXT_index_func" ); + } + if( extensions.Contains( "gl_EXT_index_material" ) ) { + EXT_index_material = true; + extensions.Remove( "glEXT_index_material" ); + } + if( extensions.Contains( "gl_EXT_index_texture" ) ) { + EXT_index_texture = true; + extensions.Remove( "glEXT_index_texture" ); + } + if( extensions.Contains( "gl_EXT_light_texture" ) ) { + EXT_light_texture = true; + extensions.Remove( "glEXT_light_texture" ); + } + if( extensions.Contains( "gl_EXT_memory_object" ) ) { + EXT_memory_object = true; + extensions.Remove( "glEXT_memory_object" ); + } + if( extensions.Contains( "gl_EXT_memory_object_fd" ) ) { + EXT_memory_object_fd = true; + extensions.Remove( "glEXT_memory_object_fd" ); + } + if( extensions.Contains( "gl_EXT_memory_object_win32" ) ) { + EXT_memory_object_win32 = true; + extensions.Remove( "glEXT_memory_object_win32" ); + } + if( extensions.Contains( "gl_EXT_misc_attribute" ) ) { + EXT_misc_attribute = true; + extensions.Remove( "glEXT_misc_attribute" ); + } + if( extensions.Contains( "gl_EXT_multi_draw_arrays" ) ) { + EXT_multi_draw_arrays = true; + extensions.Remove( "glEXT_multi_draw_arrays" ); + } + if( extensions.Contains( "gl_EXT_multisample" ) ) { + EXT_multisample = true; + extensions.Remove( "glEXT_multisample" ); + } + if( extensions.Contains( + "gl_EXT_multiview_tessellation_geometry_shader" ) ) { + EXT_multiview_tessellation_geometry_shader = true; + extensions.Remove( + "glEXT_multiview_tessellation_geometry_shader" ); + } + if( extensions.Contains( "gl_EXT_multiview_texture_multisample" ) ) { + EXT_multiview_texture_multisample = true; + extensions.Remove( "glEXT_multiview_texture_multisample" ); + } + if( extensions.Contains( "gl_EXT_multiview_timer_query" ) ) { + EXT_multiview_timer_query = true; + extensions.Remove( "glEXT_multiview_timer_query" ); + } + if( extensions.Contains( "gl_EXT_packed_depth_stencil" ) ) { + EXT_packed_depth_stencil = true; + extensions.Remove( "glEXT_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_EXT_packed_float" ) ) { + EXT_packed_float = true; + extensions.Remove( "glEXT_packed_float" ); + } + if( extensions.Contains( "gl_EXT_packed_pixels" ) ) { + EXT_packed_pixels = true; + extensions.Remove( "glEXT_packed_pixels" ); + } + if( extensions.Contains( "gl_EXT_paletted_texture" ) ) { + EXT_paletted_texture = true; + extensions.Remove( "glEXT_paletted_texture" ); + } + if( extensions.Contains( "gl_EXT_pixel_buffer_object" ) ) { + EXT_pixel_buffer_object = true; + extensions.Remove( "glEXT_pixel_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform" ) ) { + EXT_pixel_transform = true; + extensions.Remove( "glEXT_pixel_transform" ); + } + if( extensions.Contains( "gl_EXT_pixel_transform_color_table" ) ) { + EXT_pixel_transform_color_table = true; + extensions.Remove( "glEXT_pixel_transform_color_table" ); + } + if( extensions.Contains( "gl_EXT_point_parameters" ) ) { + EXT_point_parameters = true; + extensions.Remove( "glEXT_point_parameters" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset" ) ) { + EXT_polygon_offset = true; + extensions.Remove( "glEXT_polygon_offset" ); + } + if( extensions.Contains( "gl_EXT_polygon_offset_clamp" ) ) { + EXT_polygon_offset_clamp = true; + extensions.Remove( "glEXT_polygon_offset_clamp" ); + } + if( extensions.Contains( "gl_EXT_post_depth_coverage" ) ) { + EXT_post_depth_coverage = true; + extensions.Remove( "glEXT_post_depth_coverage" ); + } + if( extensions.Contains( "gl_EXT_provoking_vertex" ) ) { + EXT_provoking_vertex = true; + extensions.Remove( "glEXT_provoking_vertex" ); + } + if( extensions.Contains( "gl_EXT_raster_multisample" ) ) { + EXT_raster_multisample = true; + extensions.Remove( "glEXT_raster_multisample" ); + } + if( extensions.Contains( "gl_EXT_rescale_normal" ) ) { + EXT_rescale_normal = true; + extensions.Remove( "glEXT_rescale_normal" ); + } + if( extensions.Contains( "gl_EXT_secondary_color" ) ) { + EXT_secondary_color = true; + extensions.Remove( "glEXT_secondary_color" ); + } + if( extensions.Contains( "gl_EXT_semaphore" ) ) { + EXT_semaphore = true; + extensions.Remove( "glEXT_semaphore" ); + } + if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) { + EXT_semaphore_fd = true; + extensions.Remove( "glEXT_semaphore_fd" ); + } + if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) { + EXT_semaphore_win32 = true; + extensions.Remove( "glEXT_semaphore_win32" ); + } + if( extensions.Contains( "gl_EXT_separate_shader_objects" ) ) { + EXT_separate_shader_objects = true; + extensions.Remove( "glEXT_separate_shader_objects" ); + } + if( extensions.Contains( "gl_EXT_separate_specular_color" ) ) { + EXT_separate_specular_color = true; + extensions.Remove( "glEXT_separate_specular_color" ); + } + if( extensions.Contains( "gl_EXT_shader_framebuffer_fetch" ) ) { + EXT_shader_framebuffer_fetch = true; + extensions.Remove( "glEXT_shader_framebuffer_fetch" ); + } + if( extensions.Contains( + "gl_EXT_shader_framebuffer_fetch_non_coherent" ) ) { + EXT_shader_framebuffer_fetch_non_coherent = true; + extensions.Remove( + "glEXT_shader_framebuffer_fetch_non_coherent" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_formatted" ) ) { + EXT_shader_image_load_formatted = true; + extensions.Remove( "glEXT_shader_image_load_formatted" ); + } + if( extensions.Contains( "gl_EXT_shader_image_load_store" ) ) { + EXT_shader_image_load_store = true; + extensions.Remove( "glEXT_shader_image_load_store" ); + } + if( extensions.Contains( "gl_EXT_shader_integer_mix" ) ) { + EXT_shader_integer_mix = true; + extensions.Remove( "glEXT_shader_integer_mix" ); + } + if( extensions.Contains( "gl_EXT_shader_samples_identical" ) ) { + EXT_shader_samples_identical = true; + extensions.Remove( "glEXT_shader_samples_identical" ); + } + if( extensions.Contains( "gl_EXT_shadow_funcs" ) ) { + EXT_shadow_funcs = true; + extensions.Remove( "glEXT_shadow_funcs" ); + } + if( extensions.Contains( "gl_EXT_shared_texture_palette" ) ) { + EXT_shared_texture_palette = true; + extensions.Remove( "glEXT_shared_texture_palette" ); + } + if( extensions.Contains( "gl_EXT_sparse_texture2" ) ) { + EXT_sparse_texture2 = true; + extensions.Remove( "glEXT_sparse_texture2" ); + } + if( extensions.Contains( "gl_EXT_stencil_clear_tag" ) ) { + EXT_stencil_clear_tag = true; + extensions.Remove( "glEXT_stencil_clear_tag" ); + } + if( extensions.Contains( "gl_EXT_stencil_two_side" ) ) { + EXT_stencil_two_side = true; + extensions.Remove( "glEXT_stencil_two_side" ); + } + if( extensions.Contains( "gl_EXT_stencil_wrap" ) ) { + EXT_stencil_wrap = true; + extensions.Remove( "glEXT_stencil_wrap" ); + } + if( extensions.Contains( "gl_EXT_subtexture" ) ) { + EXT_subtexture = true; + extensions.Remove( "glEXT_subtexture" ); + } + if( extensions.Contains( "gl_EXT_texture" ) ) { + EXT_texture = true; + extensions.Remove( "glEXT_texture" ); + } + if( extensions.Contains( "gl_EXT_texture3D" ) ) { + EXT_texture3D = true; + extensions.Remove( "glEXT_texture3D" ); + } + if( extensions.Contains( "gl_EXT_texture_array" ) ) { + EXT_texture_array = true; + extensions.Remove( "glEXT_texture_array" ); + } + if( extensions.Contains( "gl_EXT_texture_buffer_object" ) ) { + EXT_texture_buffer_object = true; + extensions.Remove( "glEXT_texture_buffer_object" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_latc" ) ) { + EXT_texture_compression_latc = true; + extensions.Remove( "glEXT_texture_compression_latc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_rgtc" ) ) { + EXT_texture_compression_rgtc = true; + extensions.Remove( "glEXT_texture_compression_rgtc" ); + } + if( extensions.Contains( "gl_EXT_texture_compression_s3tc" ) ) { + EXT_texture_compression_s3tc = true; + extensions.Remove( "glEXT_texture_compression_s3tc" ); + } + if( extensions.Contains( "gl_EXT_texture_cube_map" ) ) { + EXT_texture_cube_map = true; + extensions.Remove( "glEXT_texture_cube_map" ); + } + if( extensions.Contains( "gl_EXT_texture_env_add" ) ) { + EXT_texture_env_add = true; + extensions.Remove( "glEXT_texture_env_add" ); + } + if( extensions.Contains( "gl_EXT_texture_env_combine" ) ) { + EXT_texture_env_combine = true; + extensions.Remove( "glEXT_texture_env_combine" ); + } + if( extensions.Contains( "gl_EXT_texture_env_dot3" ) ) { + EXT_texture_env_dot3 = true; + extensions.Remove( "glEXT_texture_env_dot3" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_anisotropic" ) ) { + EXT_texture_filter_anisotropic = true; + extensions.Remove( "glEXT_texture_filter_anisotropic" ); + } + if( extensions.Contains( "gl_EXT_texture_filter_minmax" ) ) { + EXT_texture_filter_minmax = true; + extensions.Remove( "glEXT_texture_filter_minmax" ); + } + if( extensions.Contains( "gl_EXT_texture_integer" ) ) { + EXT_texture_integer = true; + extensions.Remove( "glEXT_texture_integer" ); + } + if( extensions.Contains( "gl_EXT_texture_lod_bias" ) ) { + EXT_texture_lod_bias = true; + extensions.Remove( "glEXT_texture_lod_bias" ); + } + if( extensions.Contains( "gl_EXT_texture_mirror_clamp" ) ) { + EXT_texture_mirror_clamp = true; + extensions.Remove( "glEXT_texture_mirror_clamp" ); + } + if( extensions.Contains( "gl_EXT_texture_object" ) ) { + EXT_texture_object = true; + extensions.Remove( "glEXT_texture_object" ); + } + if( extensions.Contains( "gl_EXT_texture_perturb_normal" ) ) { + EXT_texture_perturb_normal = true; + extensions.Remove( "glEXT_texture_perturb_normal" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB" ) ) { + EXT_texture_sRGB = true; + extensions.Remove( "glEXT_texture_sRGB" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_R8" ) ) { + EXT_texture_sRGB_R8 = true; + extensions.Remove( "glEXT_texture_sRGB_R8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_RG8" ) ) { + EXT_texture_sRGB_RG8 = true; + extensions.Remove( "glEXT_texture_sRGB_RG8" ); + } + if( extensions.Contains( "gl_EXT_texture_sRGB_decode" ) ) { + EXT_texture_sRGB_decode = true; + extensions.Remove( "glEXT_texture_sRGB_decode" ); + } + if( extensions.Contains( "gl_EXT_texture_shadow_lod" ) ) { + EXT_texture_shadow_lod = true; + extensions.Remove( "glEXT_texture_shadow_lod" ); + } + if( extensions.Contains( "gl_EXT_texture_shared_exponent" ) ) { + EXT_texture_shared_exponent = true; + extensions.Remove( "glEXT_texture_shared_exponent" ); + } + if( extensions.Contains( "gl_EXT_texture_snorm" ) ) { + EXT_texture_snorm = true; + extensions.Remove( "glEXT_texture_snorm" ); + } + if( extensions.Contains( "gl_EXT_texture_storage" ) ) { + EXT_texture_storage = true; + extensions.Remove( "glEXT_texture_storage" ); + } + if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) { + EXT_texture_swizzle = true; + extensions.Remove( "glEXT_texture_swizzle" ); + } + if( extensions.Contains( "gl_EXT_timer_query" ) ) { + EXT_timer_query = true; + extensions.Remove( "glEXT_timer_query" ); + } + if( extensions.Contains( "gl_EXT_transform_feedback" ) ) { + EXT_transform_feedback = true; + extensions.Remove( "glEXT_transform_feedback" ); + } + if( extensions.Contains( "gl_EXT_vertex_array" ) ) { + EXT_vertex_array = true; + extensions.Remove( "glEXT_vertex_array" ); + } + if( extensions.Contains( "gl_EXT_vertex_array_bgra" ) ) { + EXT_vertex_array_bgra = true; + extensions.Remove( "glEXT_vertex_array_bgra" ); + } + if( extensions.Contains( "gl_EXT_vertex_attrib_64bit" ) ) { + EXT_vertex_attrib_64bit = true; + extensions.Remove( "glEXT_vertex_attrib_64bit" ); + } + if( extensions.Contains( "gl_EXT_vertex_shader" ) ) { + EXT_vertex_shader = true; + extensions.Remove( "glEXT_vertex_shader" ); + } + if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) { + EXT_vertex_weighting = true; + extensions.Remove( "glEXT_vertex_weighting" ); + } + if( extensions.Contains( "gl_EXT_win32_keyed_mutex" ) ) { + EXT_win32_keyed_mutex = true; + extensions.Remove( "glEXT_win32_keyed_mutex" ); + } + if( extensions.Contains( "gl_EXT_window_rectangles" ) ) { + EXT_window_rectangles = true; + extensions.Remove( "glEXT_window_rectangles" ); + } + if( extensions.Contains( "gl_EXT_x11_sync_object" ) ) { + EXT_x11_sync_object = true; + extensions.Remove( "glEXT_x11_sync_object" ); + } + if( extensions.Contains( "gl_GREMEDY_frame_terminator" ) ) { + GREMEDY_frame_terminator = true; + extensions.Remove( "glGREMEDY_frame_terminator" ); + } + if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) { + GREMEDY_string_marker = true; + extensions.Remove( "glGREMEDY_string_marker" ); + } + if( extensions.Contains( "gl_HP_convolution_border_modes" ) ) { + HP_convolution_border_modes = true; + extensions.Remove( "glHP_convolution_border_modes" ); + } + if( extensions.Contains( "gl_HP_image_transform" ) ) { + HP_image_transform = true; + extensions.Remove( "glHP_image_transform" ); + } + if( extensions.Contains( "gl_HP_occlusion_test" ) ) { + HP_occlusion_test = true; + extensions.Remove( "glHP_occlusion_test" ); + } + if( extensions.Contains( "gl_HP_texture_lighting" ) ) { + HP_texture_lighting = true; + extensions.Remove( "glHP_texture_lighting" ); + } + if( extensions.Contains( "gl_IBM_cull_vertex" ) ) { + IBM_cull_vertex = true; + extensions.Remove( "glIBM_cull_vertex" ); + } + if( extensions.Contains( "gl_IBM_multimode_draw_arrays" ) ) { + IBM_multimode_draw_arrays = true; + extensions.Remove( "glIBM_multimode_draw_arrays" ); + } + if( extensions.Contains( "gl_IBM_rasterpos_clip" ) ) { + IBM_rasterpos_clip = true; + extensions.Remove( "glIBM_rasterpos_clip" ); + } + if( extensions.Contains( "gl_IBM_static_data" ) ) { + IBM_static_data = true; + extensions.Remove( "glIBM_static_data" ); + } + if( extensions.Contains( "gl_IBM_texture_mirrored_repeat" ) ) { + IBM_texture_mirrored_repeat = true; + extensions.Remove( "glIBM_texture_mirrored_repeat" ); + } + if( extensions.Contains( "gl_IBM_vertex_array_lists" ) ) { + IBM_vertex_array_lists = true; + extensions.Remove( "glIBM_vertex_array_lists" ); + } + if( extensions.Contains( "gl_INGR_blend_func_separate" ) ) { + INGR_blend_func_separate = true; + extensions.Remove( "glINGR_blend_func_separate" ); + } + if( extensions.Contains( "gl_INGR_color_clamp" ) ) { + INGR_color_clamp = true; + extensions.Remove( "glINGR_color_clamp" ); + } + if( extensions.Contains( "gl_INGR_interlace_read" ) ) { + INGR_interlace_read = true; + extensions.Remove( "glINGR_interlace_read" ); + } + if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) { + INTEL_blackhole_render = true; + extensions.Remove( "glINTEL_blackhole_render" ); + } + if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) { + INTEL_conservative_rasterization = true; + extensions.Remove( "glINTEL_conservative_rasterization" ); + } + if( extensions.Contains( "gl_INTEL_fragment_shader_ordering" ) ) { + INTEL_fragment_shader_ordering = true; + extensions.Remove( "glINTEL_fragment_shader_ordering" ); + } + if( extensions.Contains( "gl_INTEL_framebuffer_CMAA" ) ) { + INTEL_framebuffer_CMAA = true; + extensions.Remove( "glINTEL_framebuffer_CMAA" ); + } + if( extensions.Contains( "gl_INTEL_map_texture" ) ) { + INTEL_map_texture = true; + extensions.Remove( "glINTEL_map_texture" ); + } + if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) { + INTEL_parallel_arrays = true; + extensions.Remove( "glINTEL_parallel_arrays" ); + } + if( extensions.Contains( "gl_INTEL_performance_query" ) ) { + INTEL_performance_query = true; + extensions.Remove( "glINTEL_performance_query" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced" ) ) { + KHR_blend_equation_advanced = true; + extensions.Remove( "glKHR_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_KHR_blend_equation_advanced_coherent" ) ) { + KHR_blend_equation_advanced_coherent = true; + extensions.Remove( "glKHR_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_KHR_context_flush_control" ) ) { + KHR_context_flush_control = true; + extensions.Remove( "glKHR_context_flush_control" ); + } + if( extensions.Contains( "gl_KHR_debug" ) ) { + KHR_debug = true; + extensions.Remove( "glKHR_debug" ); + } + if( extensions.Contains( "gl_KHR_no_error" ) ) { + KHR_no_error = true; + extensions.Remove( "glKHR_no_error" ); + } + if( extensions.Contains( "gl_KHR_parallel_shader_compile" ) ) { + KHR_parallel_shader_compile = true; + extensions.Remove( "glKHR_parallel_shader_compile" ); + } + if( extensions.Contains( "gl_KHR_robust_buffer_access_behavior" ) ) { + KHR_robust_buffer_access_behavior = true; + extensions.Remove( "glKHR_robust_buffer_access_behavior" ); + } + if( extensions.Contains( "gl_KHR_robustness" ) ) { + KHR_robustness = true; + extensions.Remove( "glKHR_robustness" ); + } + if( extensions.Contains( "gl_KHR_shader_subgroup" ) ) { + KHR_shader_subgroup = true; + extensions.Remove( "glKHR_shader_subgroup" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_hdr" ) ) { + KHR_texture_compression_astc_hdr = true; + extensions.Remove( "glKHR_texture_compression_astc_hdr" ); + } + if( extensions.Contains( "gl_KHR_texture_compression_astc_ldr" ) ) { + KHR_texture_compression_astc_ldr = true; + extensions.Remove( "glKHR_texture_compression_astc_ldr" ); + } + if( extensions.Contains( + "gl_KHR_texture_compression_astc_sliced_3d" ) ) { + KHR_texture_compression_astc_sliced_3d = true; + extensions.Remove( "glKHR_texture_compression_astc_sliced_3d" ); + } + if( extensions.Contains( "gl_MESAX_texture_stack" ) ) { + MESAX_texture_stack = true; + extensions.Remove( "glMESAX_texture_stack" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_x" ) ) { + MESA_framebuffer_flip_x = true; + extensions.Remove( "glMESA_framebuffer_flip_x" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_flip_y" ) ) { + MESA_framebuffer_flip_y = true; + extensions.Remove( "glMESA_framebuffer_flip_y" ); + } + if( extensions.Contains( "gl_MESA_framebuffer_swap_xy" ) ) { + MESA_framebuffer_swap_xy = true; + extensions.Remove( "glMESA_framebuffer_swap_xy" ); + } + if( extensions.Contains( "gl_MESA_pack_invert" ) ) { + MESA_pack_invert = true; + extensions.Remove( "glMESA_pack_invert" ); + } + if( extensions.Contains( "gl_MESA_program_binary_formats" ) ) { + MESA_program_binary_formats = true; + extensions.Remove( "glMESA_program_binary_formats" ); + } + if( extensions.Contains( "gl_MESA_resize_buffers" ) ) { + MESA_resize_buffers = true; + extensions.Remove( "glMESA_resize_buffers" ); + } + if( extensions.Contains( "gl_MESA_shader_integer_functions" ) ) { + MESA_shader_integer_functions = true; + extensions.Remove( "glMESA_shader_integer_functions" ); + } + if( extensions.Contains( "gl_MESA_tile_raster_order" ) ) { + MESA_tile_raster_order = true; + extensions.Remove( "glMESA_tile_raster_order" ); + } + if( extensions.Contains( "gl_MESA_window_pos" ) ) { + MESA_window_pos = true; + extensions.Remove( "glMESA_window_pos" ); + } + if( extensions.Contains( "gl_MESA_ycbcr_texture" ) ) { + MESA_ycbcr_texture = true; + extensions.Remove( "glMESA_ycbcr_texture" ); + } + if( extensions.Contains( + "gl_NVX_blend_equation_advanced_multi_draw_buffers" ) ) { + NVX_blend_equation_advanced_multi_draw_buffers = true; + extensions.Remove( + "glNVX_blend_equation_advanced_multi_draw_buffers" ); + } + if( extensions.Contains( "gl_NVX_conditional_render" ) ) { + NVX_conditional_render = true; + extensions.Remove( "glNVX_conditional_render" ); + } + if( extensions.Contains( "gl_NVX_gpu_memory_info" ) ) { + NVX_gpu_memory_info = true; + extensions.Remove( "glNVX_gpu_memory_info" ); + } + if( extensions.Contains( "gl_NVX_gpu_multicast2" ) ) { + NVX_gpu_multicast2 = true; + extensions.Remove( "glNVX_gpu_multicast2" ); + } + if( extensions.Contains( "gl_NVX_linked_gpu_multicast" ) ) { + NVX_linked_gpu_multicast = true; + extensions.Remove( "glNVX_linked_gpu_multicast" ); + } + if( extensions.Contains( "gl_NVX_progress_fence" ) ) { + NVX_progress_fence = true; + extensions.Remove( "glNVX_progress_fence" ); + } + if( extensions.Contains( "gl_NV_alpha_to_coverage_dither_control" ) ) { + NV_alpha_to_coverage_dither_control = true; + extensions.Remove( "glNV_alpha_to_coverage_dither_control" ); + } + if( extensions.Contains( "gl_NV_bindless_multi_draw_indirect" ) ) { + NV_bindless_multi_draw_indirect = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect" ); + } + if( extensions.Contains( + "gl_NV_bindless_multi_draw_indirect_count" ) ) { + NV_bindless_multi_draw_indirect_count = true; + extensions.Remove( "glNV_bindless_multi_draw_indirect_count" ); + } + if( extensions.Contains( "gl_NV_bindless_texture" ) ) { + NV_bindless_texture = true; + extensions.Remove( "glNV_bindless_texture" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced" ) ) { + NV_blend_equation_advanced = true; + extensions.Remove( "glNV_blend_equation_advanced" ); + } + if( extensions.Contains( "gl_NV_blend_equation_advanced_coherent" ) ) { + NV_blend_equation_advanced_coherent = true; + extensions.Remove( "glNV_blend_equation_advanced_coherent" ); + } + if( extensions.Contains( "gl_NV_blend_minmax_factor" ) ) { + NV_blend_minmax_factor = true; + extensions.Remove( "glNV_blend_minmax_factor" ); + } + if( extensions.Contains( "gl_NV_blend_square" ) ) { + NV_blend_square = true; + extensions.Remove( "glNV_blend_square" ); + } + if( extensions.Contains( "gl_NV_clip_space_w_scaling" ) ) { + NV_clip_space_w_scaling = true; + extensions.Remove( "glNV_clip_space_w_scaling" ); + } + if( extensions.Contains( "gl_NV_command_list" ) ) { + NV_command_list = true; + extensions.Remove( "glNV_command_list" ); + } + if( extensions.Contains( "gl_NV_compute_program5" ) ) { + NV_compute_program5 = true; + extensions.Remove( "glNV_compute_program5" ); + } + if( extensions.Contains( "gl_NV_compute_shader_derivatives" ) ) { + NV_compute_shader_derivatives = true; + extensions.Remove( "glNV_compute_shader_derivatives" ); + } + if( extensions.Contains( "gl_NV_conditional_render" ) ) { + NV_conditional_render = true; + extensions.Remove( "glNV_conditional_render" ); + } + if( extensions.Contains( "gl_NV_conservative_raster" ) ) { + NV_conservative_raster = true; + extensions.Remove( "glNV_conservative_raster" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_dilate" ) ) { + NV_conservative_raster_dilate = true; + extensions.Remove( "glNV_conservative_raster_dilate" ); + } + if( extensions.Contains( "gl_NV_conservative_raster_pre_snap" ) ) { + NV_conservative_raster_pre_snap = true; + extensions.Remove( "glNV_conservative_raster_pre_snap" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_pre_snap_triangles" ) ) { + NV_conservative_raster_pre_snap_triangles = true; + extensions.Remove( + "glNV_conservative_raster_pre_snap_triangles" ); + } + if( extensions.Contains( + "gl_NV_conservative_raster_underestimation" ) ) { + NV_conservative_raster_underestimation = true; + extensions.Remove( "glNV_conservative_raster_underestimation" ); + } + if( extensions.Contains( "gl_NV_copy_depth_to_color" ) ) { + NV_copy_depth_to_color = true; + extensions.Remove( "glNV_copy_depth_to_color" ); + } + if( extensions.Contains( "gl_NV_copy_image" ) ) { + NV_copy_image = true; + extensions.Remove( "glNV_copy_image" ); + } + if( extensions.Contains( "gl_NV_deep_texture3D" ) ) { + NV_deep_texture3D = true; + extensions.Remove( "glNV_deep_texture3D" ); + } + if( extensions.Contains( "gl_NV_depth_buffer_float" ) ) { + NV_depth_buffer_float = true; + extensions.Remove( "glNV_depth_buffer_float" ); + } + if( extensions.Contains( "gl_NV_depth_clamp" ) ) { + NV_depth_clamp = true; + extensions.Remove( "glNV_depth_clamp" ); + } + if( extensions.Contains( "gl_NV_draw_texture" ) ) { + NV_draw_texture = true; + extensions.Remove( "glNV_draw_texture" ); + } + if( extensions.Contains( "gl_NV_draw_vulkan_image" ) ) { + NV_draw_vulkan_image = true; + extensions.Remove( "glNV_draw_vulkan_image" ); + } + if( extensions.Contains( "gl_NV_evaluators" ) ) { + NV_evaluators = true; + extensions.Remove( "glNV_evaluators" ); + } + if( extensions.Contains( "gl_NV_explicit_multisample" ) ) { + NV_explicit_multisample = true; + extensions.Remove( "glNV_explicit_multisample" ); + } + if( extensions.Contains( "gl_NV_fence" ) ) { + NV_fence = true; + extensions.Remove( "glNV_fence" ); + } + if( extensions.Contains( "gl_NV_fill_rectangle" ) ) { + NV_fill_rectangle = true; + extensions.Remove( "glNV_fill_rectangle" ); + } + if( extensions.Contains( "gl_NV_float_buffer" ) ) { + NV_float_buffer = true; + extensions.Remove( "glNV_float_buffer" ); + } + if( extensions.Contains( "gl_NV_fog_distance" ) ) { + NV_fog_distance = true; + extensions.Remove( "glNV_fog_distance" ); + } + if( extensions.Contains( "gl_NV_fragment_coverage_to_color" ) ) { + NV_fragment_coverage_to_color = true; + extensions.Remove( "glNV_fragment_coverage_to_color" ); + } + if( extensions.Contains( "gl_NV_fragment_program" ) ) { + NV_fragment_program = true; + extensions.Remove( "glNV_fragment_program" ); + } + if( extensions.Contains( "gl_NV_fragment_program2" ) ) { + NV_fragment_program2 = true; + extensions.Remove( "glNV_fragment_program2" ); + } + if( extensions.Contains( "gl_NV_fragment_program4" ) ) { + NV_fragment_program4 = true; + extensions.Remove( "glNV_fragment_program4" ); + } + if( extensions.Contains( "gl_NV_fragment_program_option" ) ) { + NV_fragment_program_option = true; + extensions.Remove( "glNV_fragment_program_option" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_barycentric" ) ) { + NV_fragment_shader_barycentric = true; + extensions.Remove( "glNV_fragment_shader_barycentric" ); + } + if( extensions.Contains( "gl_NV_fragment_shader_interlock" ) ) { + NV_fragment_shader_interlock = true; + extensions.Remove( "glNV_fragment_shader_interlock" ); + } + if( extensions.Contains( "gl_NV_framebuffer_mixed_samples" ) ) { + NV_framebuffer_mixed_samples = true; + extensions.Remove( "glNV_framebuffer_mixed_samples" ); + } + if( extensions.Contains( "gl_NV_framebuffer_multisample_coverage" ) ) { + NV_framebuffer_multisample_coverage = true; + extensions.Remove( "glNV_framebuffer_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_geometry_program4" ) ) { + NV_geometry_program4 = true; + extensions.Remove( "glNV_geometry_program4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader4" ) ) { + NV_geometry_shader4 = true; + extensions.Remove( "glNV_geometry_shader4" ); + } + if( extensions.Contains( "gl_NV_geometry_shader_passthrough" ) ) { + NV_geometry_shader_passthrough = true; + extensions.Remove( "glNV_geometry_shader_passthrough" ); + } + if( extensions.Contains( "gl_NV_gpu_multicast" ) ) { + NV_gpu_multicast = true; + extensions.Remove( "glNV_gpu_multicast" ); + } + if( extensions.Contains( "gl_NV_gpu_program4" ) ) { + NV_gpu_program4 = true; + extensions.Remove( "glNV_gpu_program4" ); + } + if( extensions.Contains( "gl_NV_gpu_program5" ) ) { + NV_gpu_program5 = true; + extensions.Remove( "glNV_gpu_program5" ); + } + if( extensions.Contains( "gl_NV_gpu_program5_mem_extended" ) ) { + NV_gpu_program5_mem_extended = true; + extensions.Remove( "glNV_gpu_program5_mem_extended" ); + } + if( extensions.Contains( "gl_NV_gpu_shader5" ) ) { + NV_gpu_shader5 = true; + extensions.Remove( "glNV_gpu_shader5" ); + } + if( extensions.Contains( "gl_NV_half_float" ) ) { + NV_half_float = true; + extensions.Remove( "glNV_half_float" ); + } + if( extensions.Contains( "gl_NV_internalformat_sample_query" ) ) { + NV_internalformat_sample_query = true; + extensions.Remove( "glNV_internalformat_sample_query" ); + } + if( extensions.Contains( "gl_NV_light_max_exponent" ) ) { + NV_light_max_exponent = true; + extensions.Remove( "glNV_light_max_exponent" ); + } + if( extensions.Contains( "gl_NV_memory_attachment" ) ) { + NV_memory_attachment = true; + extensions.Remove( "glNV_memory_attachment" ); + } + if( extensions.Contains( "gl_NV_memory_object_sparse" ) ) { + NV_memory_object_sparse = true; + extensions.Remove( "glNV_memory_object_sparse" ); + } + if( extensions.Contains( "gl_NV_mesh_shader" ) ) { + NV_mesh_shader = true; + extensions.Remove( "glNV_mesh_shader" ); + } + if( extensions.Contains( "gl_NV_multisample_coverage" ) ) { + NV_multisample_coverage = true; + extensions.Remove( "glNV_multisample_coverage" ); + } + if( extensions.Contains( "gl_NV_multisample_filter_hint" ) ) { + NV_multisample_filter_hint = true; + extensions.Remove( "glNV_multisample_filter_hint" ); + } + if( extensions.Contains( "gl_NV_occlusion_query" ) ) { + NV_occlusion_query = true; + extensions.Remove( "glNV_occlusion_query" ); + } + if( extensions.Contains( "gl_NV_packed_depth_stencil" ) ) { + NV_packed_depth_stencil = true; + extensions.Remove( "glNV_packed_depth_stencil" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object" ) ) { + NV_parameter_buffer_object = true; + extensions.Remove( "glNV_parameter_buffer_object" ); + } + if( extensions.Contains( "gl_NV_parameter_buffer_object2" ) ) { + NV_parameter_buffer_object2 = true; + extensions.Remove( "glNV_parameter_buffer_object2" ); + } + if( extensions.Contains( "gl_NV_path_rendering" ) ) { + NV_path_rendering = true; + extensions.Remove( "glNV_path_rendering" ); + } + if( extensions.Contains( "gl_NV_path_rendering_shared_edge" ) ) { + NV_path_rendering_shared_edge = true; + extensions.Remove( "glNV_path_rendering_shared_edge" ); + } + if( extensions.Contains( "gl_NV_pixel_data_range" ) ) { + NV_pixel_data_range = true; + extensions.Remove( "glNV_pixel_data_range" ); + } + if( extensions.Contains( "gl_NV_point_sprite" ) ) { + NV_point_sprite = true; + extensions.Remove( "glNV_point_sprite" ); + } + if( extensions.Contains( "gl_NV_present_video" ) ) { + NV_present_video = true; + extensions.Remove( "glNV_present_video" ); + } + if( extensions.Contains( "gl_NV_primitive_restart" ) ) { + NV_primitive_restart = true; + extensions.Remove( "glNV_primitive_restart" ); + } + if( extensions.Contains( "gl_NV_primitive_shading_rate" ) ) { + NV_primitive_shading_rate = true; + extensions.Remove( "glNV_primitive_shading_rate" ); + } + if( extensions.Contains( "gl_NV_query_resource" ) ) { + NV_query_resource = true; + extensions.Remove( "glNV_query_resource" ); + } + if( extensions.Contains( "gl_NV_query_resource_tag" ) ) { + NV_query_resource_tag = true; + extensions.Remove( "glNV_query_resource_tag" ); + } + if( extensions.Contains( "gl_NV_register_combiners" ) ) { + NV_register_combiners = true; + extensions.Remove( "glNV_register_combiners" ); + } + if( extensions.Contains( "gl_NV_register_combiners2" ) ) { + NV_register_combiners2 = true; + extensions.Remove( "glNV_register_combiners2" ); + } + if( extensions.Contains( "gl_NV_representative_fragment_test" ) ) { + NV_representative_fragment_test = true; + extensions.Remove( "glNV_representative_fragment_test" ); + } + if( extensions.Contains( "gl_NV_robustness_video_memory_purge" ) ) { + NV_robustness_video_memory_purge = true; + extensions.Remove( "glNV_robustness_video_memory_purge" ); + } + if( extensions.Contains( "gl_NV_sample_locations" ) ) { + NV_sample_locations = true; + extensions.Remove( "glNV_sample_locations" ); + } + if( extensions.Contains( "gl_NV_sample_mask_override_coverage" ) ) { + NV_sample_mask_override_coverage = true; + extensions.Remove( "glNV_sample_mask_override_coverage" ); + } + if( extensions.Contains( "gl_NV_scissor_exclusive" ) ) { + NV_scissor_exclusive = true; + extensions.Remove( "glNV_scissor_exclusive" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_counters" ) ) { + NV_shader_atomic_counters = true; + extensions.Remove( "glNV_shader_atomic_counters" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float" ) ) { + NV_shader_atomic_float = true; + extensions.Remove( "glNV_shader_atomic_float" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_float64" ) ) { + NV_shader_atomic_float64 = true; + extensions.Remove( "glNV_shader_atomic_float64" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_fp16_vector" ) ) { + NV_shader_atomic_fp16_vector = true; + extensions.Remove( "glNV_shader_atomic_fp16_vector" ); + } + if( extensions.Contains( "gl_NV_shader_atomic_int64" ) ) { + NV_shader_atomic_int64 = true; + extensions.Remove( "glNV_shader_atomic_int64" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_load" ) ) { + NV_shader_buffer_load = true; + extensions.Remove( "glNV_shader_buffer_load" ); + } + if( extensions.Contains( "gl_NV_shader_buffer_store" ) ) { + NV_shader_buffer_store = true; + extensions.Remove( "glNV_shader_buffer_store" ); + } + if( extensions.Contains( "gl_NV_shader_storage_buffer_object" ) ) { + NV_shader_storage_buffer_object = true; + extensions.Remove( "glNV_shader_storage_buffer_object" ); + } + if( extensions.Contains( "gl_NV_shader_subgroup_partitioned" ) ) { + NV_shader_subgroup_partitioned = true; + extensions.Remove( "glNV_shader_subgroup_partitioned" ); + } + if( extensions.Contains( "gl_NV_shader_texture_footprint" ) ) { + NV_shader_texture_footprint = true; + extensions.Remove( "glNV_shader_texture_footprint" ); + } + if( extensions.Contains( "gl_NV_shader_thread_group" ) ) { + NV_shader_thread_group = true; + extensions.Remove( "glNV_shader_thread_group" ); + } + if( extensions.Contains( "gl_NV_shader_thread_shuffle" ) ) { + NV_shader_thread_shuffle = true; + extensions.Remove( "glNV_shader_thread_shuffle" ); + } + if( extensions.Contains( "gl_NV_shading_rate_image" ) ) { + NV_shading_rate_image = true; + extensions.Remove( "glNV_shading_rate_image" ); + } + if( extensions.Contains( "gl_NV_stereo_view_rendering" ) ) { + NV_stereo_view_rendering = true; + extensions.Remove( "glNV_stereo_view_rendering" ); + } + if( extensions.Contains( "gl_NV_tessellation_program5" ) ) { + NV_tessellation_program5 = true; + extensions.Remove( "glNV_tessellation_program5" ); + } + if( extensions.Contains( "gl_NV_texgen_emboss" ) ) { + NV_texgen_emboss = true; + extensions.Remove( "glNV_texgen_emboss" ); + } + if( extensions.Contains( "gl_NV_texgen_reflection" ) ) { + NV_texgen_reflection = true; + extensions.Remove( "glNV_texgen_reflection" ); + } + if( extensions.Contains( "gl_NV_texture_barrier" ) ) { + NV_texture_barrier = true; + extensions.Remove( "glNV_texture_barrier" ); + } + if( extensions.Contains( "gl_NV_texture_compression_vtc" ) ) { + NV_texture_compression_vtc = true; + extensions.Remove( "glNV_texture_compression_vtc" ); + } + if( extensions.Contains( "gl_NV_texture_env_combine4" ) ) { + NV_texture_env_combine4 = true; + extensions.Remove( "glNV_texture_env_combine4" ); + } + if( extensions.Contains( "gl_NV_texture_expand_normal" ) ) { + NV_texture_expand_normal = true; + extensions.Remove( "glNV_texture_expand_normal" ); + } + if( extensions.Contains( "gl_NV_texture_multisample" ) ) { + NV_texture_multisample = true; + extensions.Remove( "glNV_texture_multisample" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle" ) ) { + NV_texture_rectangle = true; + extensions.Remove( "glNV_texture_rectangle" ); + } + if( extensions.Contains( "gl_NV_texture_rectangle_compressed" ) ) { + NV_texture_rectangle_compressed = true; + extensions.Remove( "glNV_texture_rectangle_compressed" ); + } + if( extensions.Contains( "gl_NV_texture_shader" ) ) { + NV_texture_shader = true; + extensions.Remove( "glNV_texture_shader" ); + } + if( extensions.Contains( "gl_NV_texture_shader2" ) ) { + NV_texture_shader2 = true; + extensions.Remove( "glNV_texture_shader2" ); + } + if( extensions.Contains( "gl_NV_texture_shader3" ) ) { + NV_texture_shader3 = true; + extensions.Remove( "glNV_texture_shader3" ); + } + if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) { + NV_timeline_semaphore = true; + extensions.Remove( "glNV_timeline_semaphore" ); + } + if( extensions.Contains( "gl_NV_transform_feedback" ) ) { + NV_transform_feedback = true; + extensions.Remove( "glNV_transform_feedback" ); + } + if( extensions.Contains( "gl_NV_transform_feedback2" ) ) { + NV_transform_feedback2 = true; + extensions.Remove( "glNV_transform_feedback2" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_std430_layout" ) ) { + NV_uniform_buffer_std430_layout = true; + extensions.Remove( "glNV_uniform_buffer_std430_layout" ); + } + if( extensions.Contains( "gl_NV_uniform_buffer_unified_memory" ) ) { + NV_uniform_buffer_unified_memory = true; + extensions.Remove( "glNV_uniform_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop" ) ) { + NV_vdpau_interop = true; + extensions.Remove( "glNV_vdpau_interop" ); + } + if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) { + NV_vdpau_interop2 = true; + extensions.Remove( "glNV_vdpau_interop2" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range" ) ) { + NV_vertex_array_range = true; + extensions.Remove( "glNV_vertex_array_range" ); + } + if( extensions.Contains( "gl_NV_vertex_array_range2" ) ) { + NV_vertex_array_range2 = true; + extensions.Remove( "glNV_vertex_array_range2" ); + } + if( extensions.Contains( "gl_NV_vertex_attrib_integer_64bit" ) ) { + NV_vertex_attrib_integer_64bit = true; + extensions.Remove( "glNV_vertex_attrib_integer_64bit" ); + } + if( extensions.Contains( "gl_NV_vertex_buffer_unified_memory" ) ) { + NV_vertex_buffer_unified_memory = true; + extensions.Remove( "glNV_vertex_buffer_unified_memory" ); + } + if( extensions.Contains( "gl_NV_vertex_program" ) ) { + NV_vertex_program = true; + extensions.Remove( "glNV_vertex_program" ); + } + if( extensions.Contains( "gl_NV_vertex_program1_1" ) ) { + NV_vertex_program1_1 = true; + extensions.Remove( "glNV_vertex_program1_1" ); + } + if( extensions.Contains( "gl_NV_vertex_program2" ) ) { + NV_vertex_program2 = true; + extensions.Remove( "glNV_vertex_program2" ); + } + if( extensions.Contains( "gl_NV_vertex_program2_option" ) ) { + NV_vertex_program2_option = true; + extensions.Remove( "glNV_vertex_program2_option" ); + } + if( extensions.Contains( "gl_NV_vertex_program3" ) ) { + NV_vertex_program3 = true; + extensions.Remove( "glNV_vertex_program3" ); + } + if( extensions.Contains( "gl_NV_vertex_program4" ) ) { + NV_vertex_program4 = true; + extensions.Remove( "glNV_vertex_program4" ); + } + if( extensions.Contains( "gl_NV_video_capture" ) ) { + NV_video_capture = true; + extensions.Remove( "glNV_video_capture" ); + } + if( extensions.Contains( "gl_NV_viewport_array2" ) ) { + NV_viewport_array2 = true; + extensions.Remove( "glNV_viewport_array2" ); + } + if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) { + NV_viewport_swizzle = true; + extensions.Remove( "glNV_viewport_swizzle" ); + } + if( extensions.Contains( "gl_OES_byte_coordinates" ) ) { + OES_byte_coordinates = true; + extensions.Remove( "glOES_byte_coordinates" ); + } + if( extensions.Contains( "gl_OES_compressed_paletted_texture" ) ) { + OES_compressed_paletted_texture = true; + extensions.Remove( "glOES_compressed_paletted_texture" ); + } + if( extensions.Contains( "gl_OES_fixed_point" ) ) { + OES_fixed_point = true; + extensions.Remove( "glOES_fixed_point" ); + } + if( extensions.Contains( "gl_OES_query_matrix" ) ) { + OES_query_matrix = true; + extensions.Remove( "glOES_query_matrix" ); + } + if( extensions.Contains( "gl_OES_read_format" ) ) { + OES_read_format = true; + extensions.Remove( "glOES_read_format" ); + } + if( extensions.Contains( "gl_OES_single_precision" ) ) { + OES_single_precision = true; + extensions.Remove( "glOES_single_precision" ); + } + if( extensions.Contains( "gl_OML_interlace" ) ) { + OML_interlace = true; + extensions.Remove( "glOML_interlace" ); + } + if( extensions.Contains( "gl_OML_resample" ) ) { + OML_resample = true; + extensions.Remove( "glOML_resample" ); + } + if( extensions.Contains( "gl_OML_subsample" ) ) { + OML_subsample = true; + extensions.Remove( "glOML_subsample" ); + } + if( extensions.Contains( "gl_OVR_multiview" ) ) { + OVR_multiview = true; + extensions.Remove( "glOVR_multiview" ); + } + if( extensions.Contains( "gl_OVR_multiview2" ) ) { + OVR_multiview2 = true; + extensions.Remove( "glOVR_multiview2" ); + } + if( extensions.Contains( "gl_PGI_misc_hints" ) ) { + PGI_misc_hints = true; + extensions.Remove( "glPGI_misc_hints" ); + } + if( extensions.Contains( "gl_PGI_vertex_hints" ) ) { + PGI_vertex_hints = true; + extensions.Remove( "glPGI_vertex_hints" ); + } + if( extensions.Contains( "gl_REND_screen_coordinates" ) ) { + REND_screen_coordinates = true; + extensions.Remove( "glREND_screen_coordinates" ); + } + if( extensions.Contains( "gl_S3_s3tc" ) ) { + S3_s3tc = true; + extensions.Remove( "glS3_s3tc" ); + } + if( extensions.Contains( "gl_SGIS_detail_texture" ) ) { + SGIS_detail_texture = true; + extensions.Remove( "glSGIS_detail_texture" ); + } + if( extensions.Contains( "gl_SGIS_fog_function" ) ) { + SGIS_fog_function = true; + extensions.Remove( "glSGIS_fog_function" ); + } + if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) { + SGIS_generate_mipmap = true; + extensions.Remove( "glSGIS_generate_mipmap" ); + } + if( extensions.Contains( "gl_SGIS_multisample" ) ) { + SGIS_multisample = true; + extensions.Remove( "glSGIS_multisample" ); + } + if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) { + SGIS_pixel_texture = true; + extensions.Remove( "glSGIS_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIS_point_line_texgen" ) ) { + SGIS_point_line_texgen = true; + extensions.Remove( "glSGIS_point_line_texgen" ); + } + if( extensions.Contains( "gl_SGIS_point_parameters" ) ) { + SGIS_point_parameters = true; + extensions.Remove( "glSGIS_point_parameters" ); + } + if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) { + SGIS_sharpen_texture = true; + extensions.Remove( "glSGIS_sharpen_texture" ); + } + if( extensions.Contains( "gl_SGIS_texture4D" ) ) { + SGIS_texture4D = true; + extensions.Remove( "glSGIS_texture4D" ); + } + if( extensions.Contains( "gl_SGIS_texture_border_clamp" ) ) { + SGIS_texture_border_clamp = true; + extensions.Remove( "glSGIS_texture_border_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_color_mask" ) ) { + SGIS_texture_color_mask = true; + extensions.Remove( "glSGIS_texture_color_mask" ); + } + if( extensions.Contains( "gl_SGIS_texture_edge_clamp" ) ) { + SGIS_texture_edge_clamp = true; + extensions.Remove( "glSGIS_texture_edge_clamp" ); + } + if( extensions.Contains( "gl_SGIS_texture_filter4" ) ) { + SGIS_texture_filter4 = true; + extensions.Remove( "glSGIS_texture_filter4" ); + } + if( extensions.Contains( "gl_SGIS_texture_lod" ) ) { + SGIS_texture_lod = true; + extensions.Remove( "glSGIS_texture_lod" ); + } + if( extensions.Contains( "gl_SGIS_texture_select" ) ) { + SGIS_texture_select = true; + extensions.Remove( "glSGIS_texture_select" ); + } + if( extensions.Contains( "gl_SGIX_async" ) ) { + SGIX_async = true; + extensions.Remove( "glSGIX_async" ); + } + if( extensions.Contains( "gl_SGIX_async_histogram" ) ) { + SGIX_async_histogram = true; + extensions.Remove( "glSGIX_async_histogram" ); + } + if( extensions.Contains( "gl_SGIX_async_pixel" ) ) { + SGIX_async_pixel = true; + extensions.Remove( "glSGIX_async_pixel" ); + } + if( extensions.Contains( "gl_SGIX_blend_alpha_minmax" ) ) { + SGIX_blend_alpha_minmax = true; + extensions.Remove( "glSGIX_blend_alpha_minmax" ); + } + if( extensions.Contains( "gl_SGIX_calligraphic_fragment" ) ) { + SGIX_calligraphic_fragment = true; + extensions.Remove( "glSGIX_calligraphic_fragment" ); + } + if( extensions.Contains( "gl_SGIX_clipmap" ) ) { + SGIX_clipmap = true; + extensions.Remove( "glSGIX_clipmap" ); + } + if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) { + SGIX_convolution_accuracy = true; + extensions.Remove( "glSGIX_convolution_accuracy" ); + } + if( extensions.Contains( "gl_SGIX_depth_pass_instrument" ) ) { + SGIX_depth_pass_instrument = true; + extensions.Remove( "glSGIX_depth_pass_instrument" ); + } + if( extensions.Contains( "gl_SGIX_depth_texture" ) ) { + SGIX_depth_texture = true; + extensions.Remove( "glSGIX_depth_texture" ); + } + if( extensions.Contains( "gl_SGIX_flush_raster" ) ) { + SGIX_flush_raster = true; + extensions.Remove( "glSGIX_flush_raster" ); + } + if( extensions.Contains( "gl_SGIX_fog_offset" ) ) { + SGIX_fog_offset = true; + extensions.Remove( "glSGIX_fog_offset" ); + } + if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) { + SGIX_fragment_lighting = true; + extensions.Remove( "glSGIX_fragment_lighting" ); + } + if( extensions.Contains( "gl_SGIX_framezoom" ) ) { + SGIX_framezoom = true; + extensions.Remove( "glSGIX_framezoom" ); + } + if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) { + SGIX_igloo_interface = true; + extensions.Remove( "glSGIX_igloo_interface" ); + } + if( extensions.Contains( "gl_SGIX_instruments" ) ) { + SGIX_instruments = true; + extensions.Remove( "glSGIX_instruments" ); + } + if( extensions.Contains( "gl_SGIX_interlace" ) ) { + SGIX_interlace = true; + extensions.Remove( "glSGIX_interlace" ); + } + if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) { + SGIX_ir_instrument1 = true; + extensions.Remove( "glSGIX_ir_instrument1" ); + } + if( extensions.Contains( "gl_SGIX_list_priority" ) ) { + SGIX_list_priority = true; + extensions.Remove( "glSGIX_list_priority" ); + } + if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) { + SGIX_pixel_texture = true; + extensions.Remove( "glSGIX_pixel_texture" ); + } + if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) { + SGIX_pixel_tiles = true; + extensions.Remove( "glSGIX_pixel_tiles" ); + } + if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) { + SGIX_polynomial_ffd = true; + extensions.Remove( "glSGIX_polynomial_ffd" ); + } + if( extensions.Contains( "gl_SGIX_reference_plane" ) ) { + SGIX_reference_plane = true; + extensions.Remove( "glSGIX_reference_plane" ); + } + if( extensions.Contains( "gl_SGIX_resample" ) ) { + SGIX_resample = true; + extensions.Remove( "glSGIX_resample" ); + } + if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) { + SGIX_scalebias_hint = true; + extensions.Remove( "glSGIX_scalebias_hint" ); + } + if( extensions.Contains( "gl_SGIX_shadow" ) ) { + SGIX_shadow = true; + extensions.Remove( "glSGIX_shadow" ); + } + if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) { + SGIX_shadow_ambient = true; + extensions.Remove( "glSGIX_shadow_ambient" ); + } + if( extensions.Contains( "gl_SGIX_sprite" ) ) { + SGIX_sprite = true; + extensions.Remove( "glSGIX_sprite" ); + } + if( extensions.Contains( "gl_SGIX_subsample" ) ) { + SGIX_subsample = true; + extensions.Remove( "glSGIX_subsample" ); + } + if( extensions.Contains( "gl_SGIX_tag_sample_buffer" ) ) { + SGIX_tag_sample_buffer = true; + extensions.Remove( "glSGIX_tag_sample_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_add_env" ) ) { + SGIX_texture_add_env = true; + extensions.Remove( "glSGIX_texture_add_env" ); + } + if( extensions.Contains( "gl_SGIX_texture_coordinate_clamp" ) ) { + SGIX_texture_coordinate_clamp = true; + extensions.Remove( "glSGIX_texture_coordinate_clamp" ); + } + if( extensions.Contains( "gl_SGIX_texture_lod_bias" ) ) { + SGIX_texture_lod_bias = true; + extensions.Remove( "glSGIX_texture_lod_bias" ); + } + if( extensions.Contains( "gl_SGIX_texture_multi_buffer" ) ) { + SGIX_texture_multi_buffer = true; + extensions.Remove( "glSGIX_texture_multi_buffer" ); + } + if( extensions.Contains( "gl_SGIX_texture_scale_bias" ) ) { + SGIX_texture_scale_bias = true; + extensions.Remove( "glSGIX_texture_scale_bias" ); + } + if( extensions.Contains( "gl_SGIX_vertex_preclip" ) ) { + SGIX_vertex_preclip = true; + extensions.Remove( "glSGIX_vertex_preclip" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb" ) ) { + SGIX_ycrcb = true; + extensions.Remove( "glSGIX_ycrcb" ); + } + if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) { + SGIX_ycrcb_subsample = true; + extensions.Remove( "glSGIX_ycrcb_subsample" ); + } + if( extensions.Contains( "gl_SGIX_ycrcba" ) ) { + SGIX_ycrcba = true; + extensions.Remove( "glSGIX_ycrcba" ); + } + if( extensions.Contains( "gl_SGI_color_matrix" ) ) { + SGI_color_matrix = true; + extensions.Remove( "glSGI_color_matrix" ); + } + if( extensions.Contains( "gl_SGI_color_table" ) ) { + SGI_color_table = true; + extensions.Remove( "glSGI_color_table" ); + } + if( extensions.Contains( "gl_SGI_texture_color_table" ) ) { + SGI_texture_color_table = true; + extensions.Remove( "glSGI_texture_color_table" ); + } + if( extensions.Contains( "gl_SUNX_constant_data" ) ) { + SUNX_constant_data = true; + extensions.Remove( "glSUNX_constant_data" ); + } + if( extensions.Contains( "gl_SUN_convolution_border_modes" ) ) { + SUN_convolution_border_modes = true; + extensions.Remove( "glSUN_convolution_border_modes" ); + } + if( extensions.Contains( "gl_SUN_global_alpha" ) ) { + SUN_global_alpha = true; + extensions.Remove( "glSUN_global_alpha" ); + } + if( extensions.Contains( "gl_SUN_mesh_array" ) ) { + SUN_mesh_array = true; + extensions.Remove( "glSUN_mesh_array" ); + } + if( extensions.Contains( "gl_SUN_slice_accum" ) ) { + SUN_slice_accum = true; + extensions.Remove( "glSUN_slice_accum" ); + } + if( extensions.Contains( "gl_SUN_triangle_list" ) ) { + SUN_triangle_list = true; + extensions.Remove( "glSUN_triangle_list" ); + } + if( extensions.Contains( "gl_SUN_vertex" ) ) { + SUN_vertex = true; + extensions.Remove( "glSUN_vertex" ); + } + if( extensions.Contains( "gl_WIN_phong_shading" ) ) { + WIN_phong_shading = true; + extensions.Remove( "glWIN_phong_shading" ); + } + if( extensions.Contains( "gl_WIN_specular_fog" ) ) { + WIN_specular_fog = true; + extensions.Remove( "glWIN_specular_fog" ); + } #endregion checkGLextensions - - } - internal static void CheckCoreVersion(int majorVersion, int minorVersion) + internal static void CheckCoreVersion( + int majorVersion, + int minorVersion ) { - if (majorVersion < 3) - { - throw new InvalidOperationException("StgSharp does not support OpenGL immediate mode."); + if( majorVersion < 3 ) { + throw new InvalidOperationException( + "StgSharp does not support OpenGL immediate mode." ); } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 0))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 0 ) ) ) { core10 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 1))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 1 ) ) ) { core11 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 2))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 2 ) ) ) { core12 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 3))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 3 ) ) ) { core13 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 4))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 4 ) ) ) { core14 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 1) || ((majorVersion == 1) && (minorVersion == 5))) - { + if( ( majorVersion >= 1 ) || ( ( majorVersion == 1 ) && ( minorVersion == 5 ) ) ) { core15 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 0))) - { + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 0 ) ) ) { core20 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 2) || ((majorVersion == 2) && (minorVersion == 1))) - { + if( ( majorVersion >= 2 ) || ( ( majorVersion == 2 ) && ( minorVersion == 1 ) ) ) { core21 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 0))) - { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 0 ) ) ) { core30 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 1))) - { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 1 ) ) ) { core31 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 2))) - { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 2 ) ) ) { core32 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 3) || ((majorVersion == 3) && (minorVersion == 3))) - { + if( ( majorVersion >= 3 ) || ( ( majorVersion == 3 ) && ( minorVersion == 3 ) ) ) { core33 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 0))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 0 ) ) ) { core40 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 1))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 1 ) ) ) { core41 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 2))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 2 ) ) ) { core42 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 3))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 3 ) ) ) { core43 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 4))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 4 ) ) ) { core44 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 5))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 5 ) ) ) { core45 = true; - } - else - { + } else { goto log; } - if ((majorVersion >= 4) || ((majorVersion == 4) && (minorVersion == 6))) - { + if( ( majorVersion >= 4 ) || ( ( majorVersion == 4 ) && ( minorVersion == 6 ) ) ) { core46 = true; - } - else - { + } else { goto log; } - log: + log: { - InternalIO.InternalWriteLog("Find core OpenGL version.", LogType.Info); + InternalIO.InternalWriteLog( + "Find core OpenGL version.", LogType.Info ); return; } } - internal static unsafe string GetExtensions(this OpenglContext context) + internal static unsafe string GetExtensions( + this OpenglContext context ) { - if (context.glGetString == null) - { + if( context.glGetString == null ) { return string.Empty; } - return Marshal.PtrToStringAnsi( - context.glGetString(glExtension)); + return Marshal.PtrToStringAnsi( context.glGetString( glExtension ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static T internalLoadAPI(IntPtr ptr) where T : Delegate + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal static T internalLoadAPI( IntPtr ptr ) where T: Delegate { - try - { - if (ptr == IntPtr.Zero) { return null; } - T func = Marshal.GetDelegateForFunctionPointer(ptr); + try { + if( ptr == IntPtr.Zero ) { + return null; + } + T func = Marshal.GetDelegateForFunctionPointer( ptr ); return func; } - catch (Exception ex) - { + catch( Exception ex ) { InternalIO.InternalWriteLog( - $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", LogType.Warning); + $"{$"Failed to convert the api {typeof(T).Name}.\n"}{ex.Message}", + LogType.Warning ); return default; } } - internal static unsafe void LoadGLcore10(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore10( + OpenglContext* contextPtr, + delegate* load ) { - if (!core10) - { - InternalIO.InternalAppendLog("The core version 1.0 is not supported."); - throw new Exception("Final Version"); + if( !core10 ) { + InternalIO.InternalAppendLog( + "The core version 1.0 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBlendFunc = (delegate*)load("glBlendFunc"); - contextPtr->glClear = (delegate*)load("glClear"); - contextPtr->glClearColor = (delegate*)load("glClearColor"); - contextPtr->glClearDepth = (delegate*)load("glClearDepth"); - contextPtr->glClearStencil = (delegate*)load("glClearStencil"); - contextPtr->glColorMask = (delegate*)load("glColorMask"); - contextPtr->glCullFace = (delegate*)load("glCullFace"); - contextPtr->glDepthFunc = (delegate*)load("glDepthFunc"); - contextPtr->glDepthMask = (delegate*)load("glDepthMask"); - contextPtr->glDepthRange = (delegate*)load("glDepthRange"); - contextPtr->glDisable = (delegate*)load("glDisable"); - contextPtr->glDrawBuffer = (delegate*)load("glDrawBuffer"); - contextPtr->glEnable = (delegate*)load("glEnable"); - contextPtr->glFinish = (delegate*)load("glFinish"); - contextPtr->glFlush = (delegate*)load("glFlush"); - contextPtr->glFrontFace = (delegate*)load("glFrontFace"); - contextPtr->glGetBooleanv = (delegate*)load("glGetBooleanv"); - contextPtr->glGetDoublev = (delegate*)load("glGetDoublev"); - contextPtr->glGetError = (delegate*)load("glGetError"); - contextPtr->glGetFloatv = (delegate*)load("glGetFloatv"); - contextPtr->glGetIntegerv = (delegate*)load("glGetIntegerv"); - contextPtr->glGetString = (delegate*)load("glGetString"); - contextPtr->glGetTexImage = (delegate*)load("glGetTexImage"); - contextPtr->glGetTexLevelParameterfv = (delegate*)load("glGetTexLevelParameterfv"); - contextPtr->glGetTexLevelParameteriv = (delegate*)load("glGetTexLevelParameteriv"); - contextPtr->glGetTexParameterfv = (delegate*)load("glGetTexParameterfv"); - contextPtr->glGetTexParameteriv = (delegate*)load("glGetTexParameteriv"); - contextPtr->glHint = (delegate*)load("glHint"); - contextPtr->glIsEnabled = (delegate*)load("glIsEnabled"); - contextPtr->glLineWidth = (delegate*)load("glLineWidth"); - contextPtr->glLogicOp = (delegate*)load("glLogicOp"); - contextPtr->glPixelStoref = (delegate*)load("glPixelStoref"); - contextPtr->glPixelStorei = (delegate*)load("glPixelStorei"); - contextPtr->glPointSize = (delegate*)load("glPointSize"); - contextPtr->glPolygonMode = (delegate*)load("glPolygonMode"); - contextPtr->glReadBuffer = (delegate*)load("glReadBuffer"); - contextPtr->glReadPixels = (delegate*)load("glReadPixels"); - contextPtr->glScissor = (delegate*)load("glScissor"); - contextPtr->glStencilFunc = (delegate*)load("glStencilFunc"); - contextPtr->glStencilMask = (delegate*)load("glStencilMask"); - contextPtr->glStencilOp = (delegate*)load("glStencilOp"); - contextPtr->glTexImage1D = (delegate*)load("glTexImage1D"); - contextPtr->glTexImage2D = (delegate*)load("glTexImage2D"); - contextPtr->glTexParameterf = (delegate*)load("glTexParameterf"); - contextPtr->glTexParameterfv = (delegate*)load("glTexParameterfv"); - contextPtr->glTexParameteri = (delegate*)load("glTexParameteri"); - contextPtr->glTexParameteriv = (delegate*)load("glTexParameteriv"); - contextPtr->glViewport = (delegate*)load("glViewport"); + contextPtr->glBlendFunc = ( delegate* )load( + "glBlendFunc" ); + contextPtr->glClear = ( delegate* )load( "glClear" ); + contextPtr->glClearColor = ( delegate* )load( + "glClearColor" ); + contextPtr->glClearDepth = ( delegate* )load( + "glClearDepth" ); + contextPtr->glClearStencil = ( delegate* )load( + "glClearStencil" ); + contextPtr->glColorMask = ( delegate* )load( + "glColorMask" ); + contextPtr->glCullFace = ( delegate* )load( + "glCullFace" ); + contextPtr->glDepthFunc = ( delegate* )load( + "glDepthFunc" ); + contextPtr->glDepthMask = ( delegate* )load( + "glDepthMask" ); + contextPtr->glDepthRange = ( delegate* )load( + "glDepthRange" ); + contextPtr->glDisable = ( delegate* )load( "glDisable" ); + contextPtr->glDrawBuffer = ( delegate* )load( + "glDrawBuffer" ); + contextPtr->glEnable = ( delegate* )load( "glEnable" ); + contextPtr->glFinish = ( delegate* )load( "glFinish" ); + contextPtr->glFlush = ( delegate* )load( "glFlush" ); + contextPtr->glFrontFace = ( delegate* )load( + "glFrontFace" ); + contextPtr->glGetBooleanv = ( delegate* )load( + "glGetBooleanv" ); + contextPtr->glGetDoublev = ( delegate* )load( + "glGetDoublev" ); + contextPtr->glGetError = ( delegate* )load( "glGetError" ); + contextPtr->glGetFloatv = ( delegate* )load( + "glGetFloatv" ); + contextPtr->glGetIntegerv = ( delegate* )load( + "glGetIntegerv" ); + contextPtr->glGetString = ( delegate* )load( + "glGetString" ); + contextPtr->glGetTexImage = ( delegate* )load( + "glGetTexImage" ); + contextPtr->glGetTexLevelParameterfv = ( delegate* )load( + "glGetTexLevelParameterfv" ); + contextPtr->glGetTexLevelParameteriv = ( delegate* )load( + "glGetTexLevelParameteriv" ); + contextPtr->glGetTexParameterfv = ( delegate* )load( + "glGetTexParameterfv" ); + contextPtr->glGetTexParameteriv = ( delegate* )load( + "glGetTexParameteriv" ); + contextPtr->glHint = ( delegate* )load( "glHint" ); + contextPtr->glIsEnabled = ( delegate* )load( + "glIsEnabled" ); + contextPtr->glLineWidth = ( delegate* )load( + "glLineWidth" ); + contextPtr->glLogicOp = ( delegate* )load( "glLogicOp" ); + contextPtr->glPixelStoref = ( delegate* )load( + "glPixelStoref" ); + contextPtr->glPixelStorei = ( delegate* )load( + "glPixelStorei" ); + contextPtr->glPointSize = ( delegate* )load( + "glPointSize" ); + contextPtr->glPolygonMode = ( delegate* )load( + "glPolygonMode" ); + contextPtr->glReadBuffer = ( delegate* )load( + "glReadBuffer" ); + contextPtr->glReadPixels = ( delegate* )load( + "glReadPixels" ); + contextPtr->glScissor = ( delegate* )load( + "glScissor" ); + contextPtr->glStencilFunc = ( delegate* )load( + "glStencilFunc" ); + contextPtr->glStencilMask = ( delegate* )load( + "glStencilMask" ); + contextPtr->glStencilOp = ( delegate* )load( + "glStencilOp" ); + contextPtr->glTexImage1D = ( delegate* )load( + "glTexImage1D" ); + contextPtr->glTexImage2D = ( delegate* )load( + "glTexImage2D" ); + contextPtr->glTexParameterf = ( delegate* )load( + "glTexParameterf" ); + contextPtr->glTexParameterfv = ( delegate* )load( + "glTexParameterfv" ); + contextPtr->glTexParameteri = ( delegate* )load( + "glTexParameteri" ); + contextPtr->glTexParameteriv = ( delegate* )load( + "glTexParameteriv" ); + contextPtr->glViewport = ( delegate* )load( + "glViewport" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.0 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.0 APIs" ); } - internal static unsafe void LoadGLcore11(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore11( + OpenglContext* contextPtr, + delegate* load ) { - if (!core11) - { - InternalIO.InternalAppendLog("The core version 1.1 is not supported."); - throw new Exception("Final Version"); + if( !core11 ) { + InternalIO.InternalAppendLog( + "The core version 1.1 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindTexture = (delegate*)load("glBindTexture"); - contextPtr->glCopyTexImage1D = (delegate*)load("glCopyTexImage1D"); - contextPtr->glCopyTexImage2D = (delegate*)load("glCopyTexImage2D"); - contextPtr->glCopyTexSubImage1D = (delegate*)load("glCopyTexSubImage1D"); - contextPtr->glCopyTexSubImage2D = (delegate*)load("glCopyTexSubImage2D"); - contextPtr->glDeleteTextures = (delegate*)load("glDeleteTextures"); - contextPtr->glDrawArrays = (delegate*)load("glDrawArrays"); - contextPtr->glDrawElements = (delegate*)load("glDrawElements"); - contextPtr->glGenTextures = (delegate*)load("glGenTextures"); - contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"); - contextPtr->glIsTexture = (delegate*)load("glIsTexture"); - contextPtr->glPolygonOffset = (delegate*)load("glPolygonOffset"); - contextPtr->glTexSubImage1D = (delegate*)load("glTexSubImage1D"); - contextPtr->glTexSubImage2D = (delegate*)load("glTexSubImage2D"); + contextPtr->glBindTexture = ( delegate* )load( + "glBindTexture" ); + contextPtr->glCopyTexImage1D = ( delegate* )load( + "glCopyTexImage1D" ); + contextPtr->glCopyTexImage2D = ( delegate* )load( + "glCopyTexImage2D" ); + contextPtr->glCopyTexSubImage1D = ( delegate* )load( + "glCopyTexSubImage1D" ); + contextPtr->glCopyTexSubImage2D = ( delegate* )load( + "glCopyTexSubImage2D" ); + contextPtr->glDeleteTextures = ( delegate* )load( + "glDeleteTextures" ); + contextPtr->glDrawArrays = ( delegate* )load( + "glDrawArrays" ); + contextPtr->glDrawElements = ( delegate* )load( + "glDrawElements" ); + contextPtr->glGenTextures = ( delegate* )load( + "glGenTextures" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glIsTexture = ( delegate* )load( + "glIsTexture" ); + contextPtr->glPolygonOffset = ( delegate* )load( + "glPolygonOffset" ); + contextPtr->glTexSubImage1D = ( delegate* )load( + "glTexSubImage1D" ); + contextPtr->glTexSubImage2D = ( delegate* )load( + "glTexSubImage2D" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.1 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.1 APIs" ); } - internal static unsafe void LoadGLcore12(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore12( + OpenglContext* contextPtr, + delegate* load ) { - if (!core12) - { - InternalIO.InternalAppendLog("The core version 1.2 is not supported."); - throw new Exception("Final Version"); + if( !core12 ) { + InternalIO.InternalAppendLog( + "The core version 1.2 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glCopyTexSubImage3D = (delegate*)load("glCopyTexSubImage3D"); - contextPtr->glDrawRangeElements = (delegate*)load("glDrawRangeElements"); - contextPtr->glTexImage3D = (delegate*)load("glTexImage3D"); - contextPtr->glTexSubImage3D = (delegate*)load("glTexSubImage3D"); + contextPtr->glCopyTexSubImage3D = ( delegate* )load( + "glCopyTexSubImage3D" ); + contextPtr->glDrawRangeElements = ( delegate* )load( + "glDrawRangeElements" ); + contextPtr->glTexImage3D = ( delegate* )load( + "glTexImage3D" ); + contextPtr->glTexSubImage3D = ( delegate* )load( + "glTexSubImage3D" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.2 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.2 APIs" ); } - internal static unsafe void LoadGLcore13(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore13( + OpenglContext* contextPtr, + delegate* load ) { - if (!core13) - { - InternalIO.InternalAppendLog("The core version 1.3 is not supported."); - throw new Exception("Final Version"); + if( !core13 ) { + InternalIO.InternalAppendLog( + "The core version 1.3 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glActiveTexture = (delegate*)load("glActiveTexture"); - contextPtr->glCompressedTexImage1D = (delegate*)load("glCompressedTexImage1D"); - contextPtr->glCompressedTexImage2D = (delegate*)load("glCompressedTexImage2D"); - contextPtr->glCompressedTexImage3D = (delegate*)load("glCompressedTexImage3D"); - contextPtr->glCompressedTexSubImage1D = (delegate*)load("glCompressedTexSubImage1D"); - contextPtr->glCompressedTexSubImage2D = (delegate*)load("glCompressedTexSubImage2D"); - contextPtr->glCompressedTexSubImage3D = (delegate*)load("glCompressedTexSubImage3D"); - contextPtr->glGetCompressedTexImage = (delegate*)load("glGetCompressedTexImage"); - contextPtr->glSampleCoverage = (delegate*)load("glSampleCoverage"); + contextPtr->glActiveTexture = ( delegate* )load( + "glActiveTexture" ); + contextPtr->glCompressedTexImage1D = ( delegate* )load( + "glCompressedTexImage1D" ); + contextPtr->glCompressedTexImage2D = ( delegate* )load( + "glCompressedTexImage2D" ); + contextPtr->glCompressedTexImage3D = ( delegate* )load( + "glCompressedTexImage3D" ); + contextPtr->glCompressedTexSubImage1D = ( delegate* )load( + "glCompressedTexSubImage1D" ); + contextPtr->glCompressedTexSubImage2D = ( delegate* )load( + "glCompressedTexSubImage2D" ); + contextPtr->glCompressedTexSubImage3D = ( delegate* )load( + "glCompressedTexSubImage3D" ); + contextPtr->glGetCompressedTexImage = ( delegate* )load( + "glGetCompressedTexImage" ); + contextPtr->glSampleCoverage = ( delegate* )load( + "glSampleCoverage" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.3 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.3 APIs" ); } - internal static unsafe void LoadGLcore14(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore14( + OpenglContext* contextPtr, + delegate* load ) { - if (!core14) - { - InternalIO.InternalAppendLog("The core version 1.4 is not supported."); - throw new Exception("Final Version"); + if( !core14 ) { + InternalIO.InternalAppendLog( + "The core version 1.4 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBlendColor = (delegate*)load("glBlendColor"); - contextPtr->glBlendEquation = (delegate*)load("glBlendEquation"); - contextPtr->glBlendFuncSeparate = (delegate*)load("glBlendFuncSeparate"); - contextPtr->glMultiDrawArrays = (delegate*)load("glMultiDrawArrays"); - contextPtr->glMultiDrawElements = (delegate*)load("glMultiDrawElements"); - contextPtr->glPointParameterf = (delegate*)load("glPointParameterf"); - contextPtr->glPointParameterfv = (delegate*)load("glPointParameterfv"); - contextPtr->glPointParameteri = (delegate*)load("glPointParameteri"); - contextPtr->glPointParameteriv = (delegate*)load("glPointParameteriv"); + contextPtr->glBlendColor = ( delegate* )load( + "glBlendColor" ); + contextPtr->glBlendEquation = ( delegate* )load( + "glBlendEquation" ); + contextPtr->glBlendFuncSeparate = ( delegate* )load( + "glBlendFuncSeparate" ); + contextPtr->glMultiDrawArrays = ( delegate* )load( + "glMultiDrawArrays" ); + contextPtr->glMultiDrawElements = ( delegate* )load( + "glMultiDrawElements" ); + contextPtr->glPointParameterf = ( delegate* )load( + "glPointParameterf" ); + contextPtr->glPointParameterfv = ( delegate* )load( + "glPointParameterfv" ); + contextPtr->glPointParameteri = ( delegate* )load( + "glPointParameteri" ); + contextPtr->glPointParameteriv = ( delegate* )load( + "glPointParameteriv" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.4 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.4 APIs" ); } - internal static unsafe void LoadGLcore15(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore15( + OpenglContext* contextPtr, + delegate* load ) { - if (!core15) - { - InternalIO.InternalAppendLog("The core version 1.5 is not supported."); - throw new Exception("Final Version"); + if( !core15 ) { + InternalIO.InternalAppendLog( + "The core version 1.5 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBeginQuery = (delegate*)load("glBeginQuery"); - contextPtr->glBindBuffer = (delegate*)load("glBindBuffer"); - contextPtr->glBufferData = (delegate*)load("glBufferData"); - contextPtr->glBufferSubData = (delegate*)load("glBufferSubData"); - contextPtr->glDeleteBuffers = (delegate*)load("glDeleteBuffers"); - contextPtr->glDeleteQueries = (delegate*)load("glDeleteQueries"); - contextPtr->glEndQuery = (delegate*)load("glEndQuery"); - contextPtr->glGenBuffers = (delegate*)load("glGenBuffers"); - contextPtr->glGenQueries = (delegate*)load("glGenQueries"); - contextPtr->glGetBufferParameteriv = (delegate*)load("glGetBufferParameteriv"); - contextPtr->glGetBufferPointerv = (delegate*)load("glGetBufferPointerv"); - contextPtr->glGetBufferSubData = (delegate*)load("glGetBufferSubData"); - contextPtr->glGetQueryObjectiv = (delegate*)load("glGetQueryObjectiv"); - contextPtr->glGetQueryObjectuiv = (delegate*)load("glGetQueryObjectuiv"); - contextPtr->glGetQueryiv = (delegate*)load("glGetQueryiv"); - contextPtr->glIsBuffer = (delegate*)load("glIsBuffer"); - contextPtr->glIsQuery = (delegate*)load("glIsQuery"); - contextPtr->glMapBuffer = (delegate*)load("glMapBuffer"); - contextPtr->glUnmapBuffer = (delegate*)load("glUnmapBuffer"); + contextPtr->glBeginQuery = ( delegate* )load( + "glBeginQuery" ); + contextPtr->glBindBuffer = ( delegate* )load( + "glBindBuffer" ); + contextPtr->glBufferData = ( delegate* )load( + "glBufferData" ); + contextPtr->glBufferSubData = ( delegate* )load( + "glBufferSubData" ); + contextPtr->glDeleteBuffers = ( delegate* )load( + "glDeleteBuffers" ); + contextPtr->glDeleteQueries = ( delegate* )load( + "glDeleteQueries" ); + contextPtr->glEndQuery = ( delegate* )load( + "glEndQuery" ); + contextPtr->glGenBuffers = ( delegate* )load( + "glGenBuffers" ); + contextPtr->glGenQueries = ( delegate* )load( + "glGenQueries" ); + contextPtr->glGetBufferParameteriv = ( delegate* )load( + "glGetBufferParameteriv" ); + contextPtr->glGetBufferPointerv = ( delegate* )load( + "glGetBufferPointerv" ); + contextPtr->glGetBufferSubData = ( delegate* )load( + "glGetBufferSubData" ); + contextPtr->glGetQueryObjectiv = ( delegate* )load( + "glGetQueryObjectiv" ); + contextPtr->glGetQueryObjectuiv = ( delegate* )load( + "glGetQueryObjectuiv" ); + contextPtr->glGetQueryiv = ( delegate* )load( + "glGetQueryiv" ); + contextPtr->glIsBuffer = ( delegate* )load( + "glIsBuffer" ); + contextPtr->glIsQuery = ( delegate* )load( "glIsQuery" ); + contextPtr->glMapBuffer = ( delegate* )load( + "glMapBuffer" ); + contextPtr->glUnmapBuffer = ( delegate* )load( + "glUnmapBuffer" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 1.5 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 1.5 APIs" ); } - internal static unsafe void LoadGLcore20(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore20( + OpenglContext* contextPtr, + delegate* load ) { - if (!core20) - { - InternalIO.InternalAppendLog("The core version 2.0 is not supported."); - throw new Exception("Final Version"); + if( !core20 ) { + InternalIO.InternalAppendLog( + "The core version 2.0 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glAttachShader = (delegate*)load("glAttachShader"); - contextPtr->glBindAttribLocation = (delegate*)load("glBindAttribLocation"); - contextPtr->glBlendEquationSeparate = (delegate*)load("glBlendEquationSeparate"); - contextPtr->glCompileShader = (delegate*)load("glCompileShader"); - contextPtr->glCreateProgram = (delegate*)load("glCreateProgram"); - contextPtr->glCreateShader = (delegate*)load("glCreateShader"); - contextPtr->glDeleteProgram = (delegate*)load("glDeleteProgram"); - contextPtr->glDeleteShader = (delegate*)load("glDeleteShader"); - contextPtr->glDetachShader = (delegate*)load("glDetachShader"); - contextPtr->glDisableVertexAttribArray = (delegate*)load("glDisableVertexAttribArray"); - contextPtr->glDrawBuffers = (delegate*)load("glDrawBuffers"); - contextPtr->glEnableVertexAttribArray = (delegate*)load("glEnableVertexAttribArray"); - contextPtr->glGetActiveAttrib = (delegate*)load("glGetActiveAttrib"); - contextPtr->glGetActiveUniform = (delegate*)load("glGetActiveUniform"); - contextPtr->glGetAttachedShaders = (delegate*)load("glGetAttachedShaders"); - contextPtr->glGetAttribLocation = (delegate*)load("glGetAttribLocation"); - contextPtr->glGetProgramInfoLog = (delegate*)load("glGetProgramInfoLog"); - contextPtr->glGetProgramiv = (delegate*)load("glGetProgramiv"); - contextPtr->glGetShaderInfoLog = (delegate*)load("glGetShaderInfoLog"); - contextPtr->glGetShaderSource = (delegate*)load("glGetShaderSource"); - contextPtr->glGetShaderiv = (delegate*)load("glGetShaderiv"); - contextPtr->glGetUniformLocation = (delegate*)load("glGetUniformLocation"); - contextPtr->glGetUniformfv = (delegate*)load("glGetUniformfv"); - contextPtr->glGetUniformiv = (delegate*)load("glGetUniformiv"); - contextPtr->glGetVertexAttribPointerv = (delegate*)load("glGetVertexAttribPointerv"); - contextPtr->glGetVertexAttribdv = (delegate*)load("glGetVertexAttribdv"); - contextPtr->glGetVertexAttribfv = (delegate*)load("glGetVertexAttribfv"); - contextPtr->glGetVertexAttribiv = (delegate*)load("glGetVertexAttribiv"); - contextPtr->glIsProgram = (delegate*)load("glIsProgram"); - contextPtr->glIsShader = (delegate*)load("glIsShader"); - contextPtr->glLinkProgram = (delegate*)load("glLinkProgram"); - contextPtr->glShaderSource = (delegate* unmanaged[Stdcall])load("glShaderSource"); - contextPtr->glStencilFuncSeparate = (delegate*)load("glStencilFuncSeparate"); - contextPtr->glStencilMaskSeparate = (delegate*)load("glStencilMaskSeparate"); - contextPtr->glStencilOpSeparate = (delegate*)load("glStencilOpSeparate"); - contextPtr->glUniform1f = (delegate*)load("glUniform1f"); - contextPtr->glUniform1fv = (delegate*)load("glUniform1fv"); - contextPtr->glUniform1i = (delegate*)load("glUniform1i"); - contextPtr->glUniform1iv = (delegate*)load("glUniform1iv"); - contextPtr->glUniform2f = (delegate*)load("glUniform2f"); - contextPtr->glUniform2fv = (delegate*)load("glUniform2fv"); - contextPtr->glUniform2i = (delegate*)load("glUniform2i"); - contextPtr->glUniform2iv = (delegate*)load("glUniform2iv"); - contextPtr->glUniform3f = (delegate*)load("glUniform3f"); - contextPtr->glUniform3fv = (delegate*)load("glUniform3fv"); - contextPtr->glUniform3i = (delegate*)load("glUniform3i"); - contextPtr->glUniform3iv = (delegate*)load("glUniform3iv"); - contextPtr->glUniform4f = (delegate*)load("glUniform4f"); - contextPtr->glUniform4fv = (delegate*)load("glUniform4fv"); - contextPtr->glUniform4i = (delegate*)load("glUniform4i"); - contextPtr->glUniform4iv = (delegate*)load("glUniform4iv"); - contextPtr->glUniformMatrix2fv = (delegate*)load("glUniformMatrix2fv"); - contextPtr->glUniformMatrix3fv = (delegate*)load("glUniformMatrix3fv"); - contextPtr->glUniformMatrix4fv = (delegate*)load("glUniformMatrix4fv"); - contextPtr->glUseProgram = (delegate*)load("glUseProgram"); - contextPtr->glValidateProgram = (delegate*)load("glValidateProgram"); - contextPtr->glVertexAttrib1d = (delegate*)load("glVertexAttrib1d"); - contextPtr->glVertexAttrib1dv = (delegate*)load("glVertexAttrib1dv"); - contextPtr->glVertexAttrib1f = (delegate*)load("glVertexAttrib1f"); - contextPtr->glVertexAttrib1fv = (delegate*)load("glVertexAttrib1fv"); - contextPtr->glVertexAttrib1s = (delegate*)load("glVertexAttrib1s"); - contextPtr->glVertexAttrib1sv = (delegate*)load("glVertexAttrib1sv"); - contextPtr->glVertexAttrib2d = (delegate*)load("glVertexAttrib2d"); - contextPtr->glVertexAttrib2dv = (delegate*)load("glVertexAttrib2dv"); - contextPtr->glVertexAttrib2f = (delegate*)load("glVertexAttrib2f"); - contextPtr->glVertexAttrib2fv = (delegate*)load("glVertexAttrib2fv"); - contextPtr->glVertexAttrib2s = (delegate*)load("glVertexAttrib2s"); - contextPtr->glVertexAttrib2sv = (delegate*)load("glVertexAttrib2sv"); - contextPtr->glVertexAttrib3d = (delegate*)load("glVertexAttrib3d"); - contextPtr->glVertexAttrib3dv = (delegate*)load("glVertexAttrib3dv"); - contextPtr->glVertexAttrib3f = (delegate*)load("glVertexAttrib3f"); - contextPtr->glVertexAttrib3fv = (delegate*)load("glVertexAttrib3fv"); - contextPtr->glVertexAttrib3s = (delegate*)load("glVertexAttrib3s"); - contextPtr->glVertexAttrib3sv = (delegate*)load("glVertexAttrib3sv"); - contextPtr->glVertexAttrib4Nbv = (delegate*)load("glVertexAttrib4Nbv"); - contextPtr->glVertexAttrib4Niv = (delegate*)load("glVertexAttrib4Niv"); - contextPtr->glVertexAttrib4Nsv = (delegate*)load("glVertexAttrib4Nsv"); - contextPtr->glVertexAttrib4Nub = (delegate*)load("glVertexAttrib4Nub"); - contextPtr->glVertexAttrib4Nubv = (delegate*)load("glVertexAttrib4Nubv"); - contextPtr->glVertexAttrib4Nuiv = (delegate*)load("glVertexAttrib4Nuiv"); - contextPtr->glVertexAttrib4Nusv = (delegate*)load("glVertexAttrib4Nusv"); - contextPtr->glVertexAttrib4bv = (delegate*)load("glVertexAttrib4bv"); - contextPtr->glVertexAttrib4d = (delegate*)load("glVertexAttrib4d"); - contextPtr->glVertexAttrib4dv = (delegate*)load("glVertexAttrib4dv"); - contextPtr->glVertexAttrib4f = (delegate*)load("glVertexAttrib4f"); - contextPtr->glVertexAttrib4fv = (delegate*)load("glVertexAttrib4fv"); - contextPtr->glVertexAttrib4iv = (delegate*)load("glVertexAttrib4iv"); - contextPtr->glVertexAttrib4s = (delegate*)load("glVertexAttrib4s"); - contextPtr->glVertexAttrib4sv = (delegate*)load("glVertexAttrib4sv"); - contextPtr->glVertexAttrib4ubv = (delegate*)load("glVertexAttrib4ubv"); - contextPtr->glVertexAttrib4uiv = (delegate*)load("glVertexAttrib4uiv"); - contextPtr->glVertexAttrib4usv = (delegate*)load("glVertexAttrib4usv"); - contextPtr->glVertexAttribPointer = (delegate*)load("glVertexAttribPointer"); + contextPtr->glAttachShader = ( delegate* )load( + "glAttachShader" ); + contextPtr->glBindAttribLocation = ( delegate* )load( + "glBindAttribLocation" ); + contextPtr->glBlendEquationSeparate = ( delegate* )load( + "glBlendEquationSeparate" ); + contextPtr->glCompileShader = ( delegate* )load( + "glCompileShader" ); + contextPtr->glCreateProgram = ( delegate* )load( + "glCreateProgram" ); + contextPtr->glCreateShader = ( delegate* )load( + "glCreateShader" ); + contextPtr->glDeleteProgram = ( delegate* )load( + "glDeleteProgram" ); + contextPtr->glDeleteShader = ( delegate* )load( + "glDeleteShader" ); + contextPtr->glDetachShader = ( delegate* )load( + "glDetachShader" ); + contextPtr->glDisableVertexAttribArray = ( delegate* )load( + "glDisableVertexAttribArray" ); + contextPtr->glDrawBuffers = ( delegate* )load( + "glDrawBuffers" ); + contextPtr->glEnableVertexAttribArray = ( delegate* )load( + "glEnableVertexAttribArray" ); + contextPtr->glGetActiveAttrib = ( delegate* )load( + "glGetActiveAttrib" ); + contextPtr->glGetActiveUniform = ( delegate* )load( + "glGetActiveUniform" ); + contextPtr->glGetAttachedShaders = ( delegate* )load( + "glGetAttachedShaders" ); + contextPtr->glGetAttribLocation = ( delegate* )load( + "glGetAttribLocation" ); + contextPtr->glGetProgramInfoLog = ( delegate* )load( + "glGetProgramInfoLog" ); + contextPtr->glGetProgramiv = ( delegate* )load( + "glGetProgramiv" ); + contextPtr->glGetShaderInfoLog = ( delegate* )load( + "glGetShaderInfoLog" ); + contextPtr->glGetShaderSource = ( delegate* )load( + "glGetShaderSource" ); + contextPtr->glGetShaderiv = ( delegate* )load( + "glGetShaderiv" ); + contextPtr->glGetUniformLocation = ( delegate* )load( + "glGetUniformLocation" ); + contextPtr->glGetUniformfv = ( delegate* )load( + "glGetUniformfv" ); + contextPtr->glGetUniformiv = ( delegate* )load( + "glGetUniformiv" ); + contextPtr->glGetVertexAttribPointerv = ( delegate* )load( + "glGetVertexAttribPointerv" ); + contextPtr->glGetVertexAttribdv = ( delegate* )load( + "glGetVertexAttribdv" ); + contextPtr->glGetVertexAttribfv = ( delegate* )load( + "glGetVertexAttribfv" ); + contextPtr->glGetVertexAttribiv = ( delegate* )load( + "glGetVertexAttribiv" ); + contextPtr->glIsProgram = ( delegate* )load( + "glIsProgram" ); + contextPtr->glIsShader = ( delegate* )load( + "glIsShader" ); + contextPtr->glLinkProgram = ( delegate* )load( + "glLinkProgram" ); + contextPtr->glShaderSource = ( delegate* unmanaged[Stdcall] )load( + "glShaderSource" ); + contextPtr->glStencilFuncSeparate = ( delegate* )load( + "glStencilFuncSeparate" ); + contextPtr->glStencilMaskSeparate = ( delegate* )load( + "glStencilMaskSeparate" ); + contextPtr->glStencilOpSeparate = ( delegate* )load( + "glStencilOpSeparate" ); + contextPtr->glUniform1f = ( delegate* )load( + "glUniform1f" ); + contextPtr->glUniform1fv = ( delegate* )load( + "glUniform1fv" ); + contextPtr->glUniform1i = ( delegate* )load( + "glUniform1i" ); + contextPtr->glUniform1iv = ( delegate* )load( + "glUniform1iv" ); + contextPtr->glUniform2f = ( delegate* )load( + "glUniform2f" ); + contextPtr->glUniform2fv = ( delegate* )load( + "glUniform2fv" ); + contextPtr->glUniform2i = ( delegate* )load( + "glUniform2i" ); + contextPtr->glUniform2iv = ( delegate* )load( + "glUniform2iv" ); + contextPtr->glUniform3f = ( delegate* )load( + "glUniform3f" ); + contextPtr->glUniform3fv = ( delegate* )load( + "glUniform3fv" ); + contextPtr->glUniform3i = ( delegate* )load( + "glUniform3i" ); + contextPtr->glUniform3iv = ( delegate* )load( + "glUniform3iv" ); + contextPtr->glUniform4f = ( delegate* )load( + "glUniform4f" ); + contextPtr->glUniform4fv = ( delegate* )load( + "glUniform4fv" ); + contextPtr->glUniform4i = ( delegate* )load( + "glUniform4i" ); + contextPtr->glUniform4iv = ( delegate* )load( + "glUniform4iv" ); + contextPtr->glUniformMatrix2fv = ( delegate* )load( + "glUniformMatrix2fv" ); + contextPtr->glUniformMatrix3fv = ( delegate* )load( + "glUniformMatrix3fv" ); + contextPtr->glUniformMatrix4fv = ( delegate* )load( + "glUniformMatrix4fv" ); + contextPtr->glUseProgram = ( delegate* )load( + "glUseProgram" ); + contextPtr->glValidateProgram = ( delegate* )load( + "glValidateProgram" ); + contextPtr->glVertexAttrib1d = ( delegate* )load( + "glVertexAttrib1d" ); + contextPtr->glVertexAttrib1dv = ( delegate* )load( + "glVertexAttrib1dv" ); + contextPtr->glVertexAttrib1f = ( delegate* )load( + "glVertexAttrib1f" ); + contextPtr->glVertexAttrib1fv = ( delegate* )load( + "glVertexAttrib1fv" ); + contextPtr->glVertexAttrib1s = ( delegate* )load( + "glVertexAttrib1s" ); + contextPtr->glVertexAttrib1sv = ( delegate* )load( + "glVertexAttrib1sv" ); + contextPtr->glVertexAttrib2d = ( delegate* )load( + "glVertexAttrib2d" ); + contextPtr->glVertexAttrib2dv = ( delegate* )load( + "glVertexAttrib2dv" ); + contextPtr->glVertexAttrib2f = ( delegate* )load( + "glVertexAttrib2f" ); + contextPtr->glVertexAttrib2fv = ( delegate* )load( + "glVertexAttrib2fv" ); + contextPtr->glVertexAttrib2s = ( delegate* )load( + "glVertexAttrib2s" ); + contextPtr->glVertexAttrib2sv = ( delegate* )load( + "glVertexAttrib2sv" ); + contextPtr->glVertexAttrib3d = ( delegate* )load( + "glVertexAttrib3d" ); + contextPtr->glVertexAttrib3dv = ( delegate* )load( + "glVertexAttrib3dv" ); + contextPtr->glVertexAttrib3f = ( delegate* )load( + "glVertexAttrib3f" ); + contextPtr->glVertexAttrib3fv = ( delegate* )load( + "glVertexAttrib3fv" ); + contextPtr->glVertexAttrib3s = ( delegate* )load( + "glVertexAttrib3s" ); + contextPtr->glVertexAttrib3sv = ( delegate* )load( + "glVertexAttrib3sv" ); + contextPtr->glVertexAttrib4Nbv = ( delegate* )load( + "glVertexAttrib4Nbv" ); + contextPtr->glVertexAttrib4Niv = ( delegate* )load( + "glVertexAttrib4Niv" ); + contextPtr->glVertexAttrib4Nsv = ( delegate* )load( + "glVertexAttrib4Nsv" ); + contextPtr->glVertexAttrib4Nub = ( delegate* )load( + "glVertexAttrib4Nub" ); + contextPtr->glVertexAttrib4Nubv = ( delegate* )load( + "glVertexAttrib4Nubv" ); + contextPtr->glVertexAttrib4Nuiv = ( delegate* )load( + "glVertexAttrib4Nuiv" ); + contextPtr->glVertexAttrib4Nusv = ( delegate* )load( + "glVertexAttrib4Nusv" ); + contextPtr->glVertexAttrib4bv = ( delegate* )load( + "glVertexAttrib4bv" ); + contextPtr->glVertexAttrib4d = ( delegate* )load( + "glVertexAttrib4d" ); + contextPtr->glVertexAttrib4dv = ( delegate* )load( + "glVertexAttrib4dv" ); + contextPtr->glVertexAttrib4f = ( delegate* )load( + "glVertexAttrib4f" ); + contextPtr->glVertexAttrib4fv = ( delegate* )load( + "glVertexAttrib4fv" ); + contextPtr->glVertexAttrib4iv = ( delegate* )load( + "glVertexAttrib4iv" ); + contextPtr->glVertexAttrib4s = ( delegate* )load( + "glVertexAttrib4s" ); + contextPtr->glVertexAttrib4sv = ( delegate* )load( + "glVertexAttrib4sv" ); + contextPtr->glVertexAttrib4ubv = ( delegate* )load( + "glVertexAttrib4ubv" ); + contextPtr->glVertexAttrib4uiv = ( delegate* )load( + "glVertexAttrib4uiv" ); + contextPtr->glVertexAttrib4usv = ( delegate* )load( + "glVertexAttrib4usv" ); + contextPtr->glVertexAttribPointer = ( delegate* )load( + "glVertexAttribPointer" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 2.0 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.0 APIs" ); } - internal static unsafe void LoadGLcore21(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore21( + OpenglContext* contextPtr, + delegate* load ) { - if (!core21) - { - InternalIO.InternalAppendLog("The core version 2.1 is not supported."); - throw new Exception("Final Version"); + if( !core21 ) { + InternalIO.InternalAppendLog( + "The core version 2.1 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glUniformMatrix2x3fv = (delegate*)load("glUniformMatrix2x3fv"); - contextPtr->glUniformMatrix2x4fv = (delegate*)load("glUniformMatrix2x4fv"); - contextPtr->glUniformMatrix3x2fv = (delegate*)load("glUniformMatrix3x2fv"); - contextPtr->glUniformMatrix3x4fv = (delegate*)load("glUniformMatrix3x4fv"); - contextPtr->glUniformMatrix4x2fv = (delegate*)load("glUniformMatrix4x2fv"); - contextPtr->glUniformMatrix4x3fv = (delegate*)load("glUniformMatrix4x3fv"); + contextPtr->glUniformMatrix2x3fv = ( delegate* )load( + "glUniformMatrix2x3fv" ); + contextPtr->glUniformMatrix2x4fv = ( delegate* )load( + "glUniformMatrix2x4fv" ); + contextPtr->glUniformMatrix3x2fv = ( delegate* )load( + "glUniformMatrix3x2fv" ); + contextPtr->glUniformMatrix3x4fv = ( delegate* )load( + "glUniformMatrix3x4fv" ); + contextPtr->glUniformMatrix4x2fv = ( delegate* )load( + "glUniformMatrix4x2fv" ); + contextPtr->glUniformMatrix4x3fv = ( delegate* )load( + "glUniformMatrix4x3fv" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 2.1 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 2.1 APIs" ); } - internal static unsafe void LoadGLcore30(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore30( + OpenglContext* contextPtr, + delegate* load ) { - if (!core30) - { - InternalIO.InternalAppendLog("The core version 3.0 is not supported."); - throw new Exception("Final Version"); + if( !core30 ) { + InternalIO.InternalAppendLog( + "The core version 3.0 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBeginConditionalRender = (delegate*)load("glBeginConditionalRender"); - contextPtr->glBeginTransformFeedback = (delegate*)load("glBeginTransformFeedback"); - contextPtr->glBindBufferBase = (delegate*)load("glBindBufferBase"); - contextPtr->glBindBufferRange = (delegate*)load("glBindBufferRange"); - contextPtr->glBindFragDataLocation = (delegate*)load("glBindFragDataLocation"); - contextPtr->glBindFramebuffer = (delegate*)load("glBindFramebuffer"); - contextPtr->glBindRenderbuffer = (delegate*)load("glBindRenderbuffer"); - contextPtr->glBindVertexArray = (delegate*)load("glBindVertexArray"); - contextPtr->glBlitFramebuffer = (delegate*)load("glBlitFramebuffer"); - contextPtr->glCheckFramebufferStatus = (delegate*)load("glCheckFramebufferStatus"); - contextPtr->glClampColor = (delegate*)load("glClampColor"); - contextPtr->glClearBufferfi = (delegate*)load("glClearBufferfi"); - contextPtr->glClearBufferfv = (delegate*)load("glClearBufferfv"); - contextPtr->glClearBufferiv = (delegate*)load("glClearBufferiv"); - contextPtr->glClearBufferuiv = (delegate*)load("glClearBufferuiv"); - contextPtr->glColorMaski = (delegate*)load("glColorMaski"); - contextPtr->glDeleteFramebuffers = (delegate*)load("glDeleteFramebuffers"); - contextPtr->glDeleteRenderbuffers = (delegate*)load("glDeleteRenderbuffers"); - contextPtr->glDeleteVertexArrays = (delegate*)load("glDeleteVertexArrays"); - contextPtr->glDisablei = (delegate*)load("glDisablei"); - contextPtr->glEnablei = (delegate*)load("glEnablei"); - contextPtr->glEndConditionalRender = (delegate*)load("glEndConditionalRender"); - contextPtr->glEndTransformFeedback = (delegate*)load("glEndTransformFeedback"); - contextPtr->glFlushMappedBufferRange = (delegate*)load("glFlushMappedBufferRange"); - contextPtr->glFramebufferRenderbuffer = (delegate*)load("glFramebufferRenderbuffer"); - contextPtr->glFramebufferTexture1D = (delegate*)load("glFramebufferTexture1D"); - contextPtr->glFramebufferTexture2D = (delegate*)load("glFramebufferTexture2D"); - contextPtr->glFramebufferTexture3D = (delegate*)load("glFramebufferTexture3D"); - contextPtr->glFramebufferTextureLayer = (delegate*)load("glFramebufferTextureLayer"); - contextPtr->glGenFramebuffers = (delegate*)load("glGenFramebuffers"); - contextPtr->glGenRenderbuffers = (delegate*)load("glGenRenderbuffers"); - contextPtr->glGenVertexArrays = (delegate*)load("glGenVertexArrays"); - contextPtr->glGenerateMipmap = (delegate*)load("glGenerateMipmap"); - contextPtr->glGetBooleani_v = (delegate*)load("glGetBooleani_v"); - contextPtr->glGetFragDataLocation = (delegate*)load("glGetFragDataLocation"); - contextPtr->glGetFramebufferAttachmentParameteriv = (delegate*)load("glGetFramebufferAttachmentParameteriv"); - contextPtr->glGetIntegeri_v = (delegate*)load("glGetIntegeri_v"); - contextPtr->glGetRenderbufferParameteriv = (delegate*)load("glGetRenderbufferParameteriv"); - contextPtr->glGetStringi = (delegate*)load("glGetStringi"); - contextPtr->glGetTexParameterIiv = (delegate*)load("glGetTexParameterIiv"); - contextPtr->glGetTexParameterIuiv = (delegate*)load("glGetTexParameterIuiv"); - contextPtr->glGetTransformFeedbackVarying = (delegate*)load("glGetTransformFeedbackVarying"); - contextPtr->glGetUniformuiv = (delegate*)load("glGetUniformuiv"); - contextPtr->glGetVertexAttribIiv = (delegate*)load("glGetVertexAttribIiv"); - contextPtr->glGetVertexAttribIuiv = (delegate*)load("glGetVertexAttribIuiv"); - contextPtr->glIsEnabledi = (delegate*)load("glIsEnabledi"); - contextPtr->glIsFramebuffer = (delegate*)load("glIsFramebuffer"); - contextPtr->glIsRenderbuffer = (delegate*)load("glIsRenderbuffer"); - contextPtr->glIsVertexArray = (delegate*)load("glIsVertexArray"); - contextPtr->glMapBufferRange = (delegate*)load("glMapBufferRange"); - contextPtr->glRenderbufferStorage = (delegate*)load("glRenderbufferStorage"); - contextPtr->glRenderbufferStorageMultisample = (delegate*)load("glRenderbufferStorageMultisample"); - contextPtr->glTexParameterIiv = (delegate*)load("glTexParameterIiv"); - contextPtr->glTexParameterIuiv = (delegate*)load("glTexParameterIuiv"); - contextPtr->glTransformFeedbackVaryings = (delegate*)load("glTransformFeedbackVaryings"); - contextPtr->glUniform1ui = (delegate*)load("glUniform1ui"); - contextPtr->glUniform1uiv = (delegate*)load("glUniform1uiv"); - contextPtr->glUniform2ui = (delegate*)load("glUniform2ui"); - contextPtr->glUniform2uiv = (delegate*)load("glUniform2uiv"); - contextPtr->glUniform3ui = (delegate*)load("glUniform3ui"); - contextPtr->glUniform3uiv = (delegate*)load("glUniform3uiv"); - contextPtr->glUniform4ui = (delegate*)load("glUniform4ui"); - contextPtr->glUniform4uiv = (delegate*)load("glUniform4uiv"); - contextPtr->glVertexAttribI1i = (delegate*)load("glVertexAttribI1i"); - contextPtr->glVertexAttribI1iv = (delegate*)load("glVertexAttribI1iv"); - contextPtr->glVertexAttribI1ui = (delegate*)load("glVertexAttribI1ui"); - contextPtr->glVertexAttribI1uiv = (delegate*)load("glVertexAttribI1uiv"); - contextPtr->glVertexAttribI2i = (delegate*)load("glVertexAttribI2i"); - contextPtr->glVertexAttribI2iv = (delegate*)load("glVertexAttribI2iv"); - contextPtr->glVertexAttribI2ui = (delegate*)load("glVertexAttribI2ui"); - contextPtr->glVertexAttribI2uiv = (delegate*)load("glVertexAttribI2uiv"); - contextPtr->glVertexAttribI3i = (delegate*)load("glVertexAttribI3i"); - contextPtr->glVertexAttribI3iv = (delegate*)load("glVertexAttribI3iv"); - contextPtr->glVertexAttribI3ui = (delegate*)load("glVertexAttribI3ui"); - contextPtr->glVertexAttribI3uiv = (delegate*)load("glVertexAttribI3uiv"); - contextPtr->glVertexAttribI4bv = (delegate*)load("glVertexAttribI4bv"); - contextPtr->glVertexAttribI4i = (delegate*)load("glVertexAttribI4i"); - contextPtr->glVertexAttribI4iv = (delegate*)load("glVertexAttribI4iv"); - contextPtr->glVertexAttribI4sv = (delegate*)load("glVertexAttribI4sv"); - contextPtr->glVertexAttribI4ubv = (delegate*)load("glVertexAttribI4ubv"); - contextPtr->glVertexAttribI4ui = (delegate*)load("glVertexAttribI4ui"); - contextPtr->glVertexAttribI4uiv = (delegate*)load("glVertexAttribI4uiv"); - contextPtr->glVertexAttribI4usv = (delegate*)load("glVertexAttribI4usv"); - contextPtr->glVertexAttribIPointer = (delegate*)load("glVertexAttribIPointer"); + contextPtr->glBeginConditionalRender = ( delegate* )load( + "glBeginConditionalRender" ); + contextPtr->glBeginTransformFeedback = ( delegate* )load( + "glBeginTransformFeedback" ); + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glBindFragDataLocation = ( delegate* )load( + "glBindFragDataLocation" ); + contextPtr->glBindFramebuffer = ( delegate* )load( + "glBindFramebuffer" ); + contextPtr->glBindRenderbuffer = ( delegate* )load( + "glBindRenderbuffer" ); + contextPtr->glBindVertexArray = ( delegate* )load( + "glBindVertexArray" ); + contextPtr->glBlitFramebuffer = ( delegate* )load( + "glBlitFramebuffer" ); + contextPtr->glCheckFramebufferStatus = ( delegate* )load( + "glCheckFramebufferStatus" ); + contextPtr->glClampColor = ( delegate* )load( + "glClampColor" ); + contextPtr->glClearBufferfi = ( delegate* )load( + "glClearBufferfi" ); + contextPtr->glClearBufferfv = ( delegate* )load( + "glClearBufferfv" ); + contextPtr->glClearBufferiv = ( delegate* )load( + "glClearBufferiv" ); + contextPtr->glClearBufferuiv = ( delegate* )load( + "glClearBufferuiv" ); + contextPtr->glColorMaski = ( delegate* )load( + "glColorMaski" ); + contextPtr->glDeleteFramebuffers = ( delegate* )load( + "glDeleteFramebuffers" ); + contextPtr->glDeleteRenderbuffers = ( delegate* )load( + "glDeleteRenderbuffers" ); + contextPtr->glDeleteVertexArrays = ( delegate* )load( + "glDeleteVertexArrays" ); + contextPtr->glDisablei = ( delegate* )load( + "glDisablei" ); + contextPtr->glEnablei = ( delegate* )load( + "glEnablei" ); + contextPtr->glEndConditionalRender = ( delegate* )load( + "glEndConditionalRender" ); + contextPtr->glEndTransformFeedback = ( delegate* )load( + "glEndTransformFeedback" ); + contextPtr->glFlushMappedBufferRange = ( delegate* )load( + "glFlushMappedBufferRange" ); + contextPtr->glFramebufferRenderbuffer = ( delegate* )load( + "glFramebufferRenderbuffer" ); + contextPtr->glFramebufferTexture1D = ( delegate* )load( + "glFramebufferTexture1D" ); + contextPtr->glFramebufferTexture2D = ( delegate* )load( + "glFramebufferTexture2D" ); + contextPtr->glFramebufferTexture3D = ( delegate* )load( + "glFramebufferTexture3D" ); + contextPtr->glFramebufferTextureLayer = ( delegate* )load( + "glFramebufferTextureLayer" ); + contextPtr->glGenFramebuffers = ( delegate* )load( + "glGenFramebuffers" ); + contextPtr->glGenRenderbuffers = ( delegate* )load( + "glGenRenderbuffers" ); + contextPtr->glGenVertexArrays = ( delegate* )load( + "glGenVertexArrays" ); + contextPtr->glGenerateMipmap = ( delegate* )load( + "glGenerateMipmap" ); + contextPtr->glGetBooleani_v = ( delegate* )load( + "glGetBooleani_v" ); + contextPtr->glGetFragDataLocation = ( delegate* )load( + "glGetFragDataLocation" ); + contextPtr->glGetFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetFramebufferAttachmentParameteriv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( + "glGetRenderbufferParameteriv" ); + contextPtr->glGetStringi = ( delegate* )load( + "glGetStringi" ); + contextPtr->glGetTexParameterIiv = ( delegate* )load( + "glGetTexParameterIiv" ); + contextPtr->glGetTexParameterIuiv = ( delegate* )load( + "glGetTexParameterIuiv" ); + contextPtr->glGetTransformFeedbackVarying = ( delegate* )load( + "glGetTransformFeedbackVarying" ); + contextPtr->glGetUniformuiv = ( delegate* )load( + "glGetUniformuiv" ); + contextPtr->glGetVertexAttribIiv = ( delegate* )load( + "glGetVertexAttribIiv" ); + contextPtr->glGetVertexAttribIuiv = ( delegate* )load( + "glGetVertexAttribIuiv" ); + contextPtr->glIsEnabledi = ( delegate* )load( + "glIsEnabledi" ); + contextPtr->glIsFramebuffer = ( delegate* )load( + "glIsFramebuffer" ); + contextPtr->glIsRenderbuffer = ( delegate* )load( + "glIsRenderbuffer" ); + contextPtr->glIsVertexArray = ( delegate* )load( + "glIsVertexArray" ); + contextPtr->glMapBufferRange = ( delegate* )load( + "glMapBufferRange" ); + contextPtr->glRenderbufferStorage = ( delegate* )load( + "glRenderbufferStorage" ); + contextPtr->glRenderbufferStorageMultisample = ( delegate* )load( + "glRenderbufferStorageMultisample" ); + contextPtr->glTexParameterIiv = ( delegate* )load( + "glTexParameterIiv" ); + contextPtr->glTexParameterIuiv = ( delegate* )load( + "glTexParameterIuiv" ); + contextPtr->glTransformFeedbackVaryings = ( delegate* )load( + "glTransformFeedbackVaryings" ); + contextPtr->glUniform1ui = ( delegate* )load( + "glUniform1ui" ); + contextPtr->glUniform1uiv = ( delegate* )load( + "glUniform1uiv" ); + contextPtr->glUniform2ui = ( delegate* )load( + "glUniform2ui" ); + contextPtr->glUniform2uiv = ( delegate* )load( + "glUniform2uiv" ); + contextPtr->glUniform3ui = ( delegate* )load( + "glUniform3ui" ); + contextPtr->glUniform3uiv = ( delegate* )load( + "glUniform3uiv" ); + contextPtr->glUniform4ui = ( delegate* )load( + "glUniform4ui" ); + contextPtr->glUniform4uiv = ( delegate* )load( + "glUniform4uiv" ); + contextPtr->glVertexAttribI1i = ( delegate* )load( + "glVertexAttribI1i" ); + contextPtr->glVertexAttribI1iv = ( delegate* )load( + "glVertexAttribI1iv" ); + contextPtr->glVertexAttribI1ui = ( delegate* )load( + "glVertexAttribI1ui" ); + contextPtr->glVertexAttribI1uiv = ( delegate* )load( + "glVertexAttribI1uiv" ); + contextPtr->glVertexAttribI2i = ( delegate* )load( + "glVertexAttribI2i" ); + contextPtr->glVertexAttribI2iv = ( delegate* )load( + "glVertexAttribI2iv" ); + contextPtr->glVertexAttribI2ui = ( delegate* )load( + "glVertexAttribI2ui" ); + contextPtr->glVertexAttribI2uiv = ( delegate* )load( + "glVertexAttribI2uiv" ); + contextPtr->glVertexAttribI3i = ( delegate* )load( + "glVertexAttribI3i" ); + contextPtr->glVertexAttribI3iv = ( delegate* )load( + "glVertexAttribI3iv" ); + contextPtr->glVertexAttribI3ui = ( delegate* )load( + "glVertexAttribI3ui" ); + contextPtr->glVertexAttribI3uiv = ( delegate* )load( + "glVertexAttribI3uiv" ); + contextPtr->glVertexAttribI4bv = ( delegate* )load( + "glVertexAttribI4bv" ); + contextPtr->glVertexAttribI4i = ( delegate* )load( + "glVertexAttribI4i" ); + contextPtr->glVertexAttribI4iv = ( delegate* )load( + "glVertexAttribI4iv" ); + contextPtr->glVertexAttribI4sv = ( delegate* )load( + "glVertexAttribI4sv" ); + contextPtr->glVertexAttribI4ubv = ( delegate* )load( + "glVertexAttribI4ubv" ); + contextPtr->glVertexAttribI4ui = ( delegate* )load( + "glVertexAttribI4ui" ); + contextPtr->glVertexAttribI4uiv = ( delegate* )load( + "glVertexAttribI4uiv" ); + contextPtr->glVertexAttribI4usv = ( delegate* )load( + "glVertexAttribI4usv" ); + contextPtr->glVertexAttribIPointer = ( delegate* )load( + "glVertexAttribIPointer" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 3.0 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.0 APIs" ); } - internal static unsafe void LoadGLcore31(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore31( + OpenglContext* contextPtr, + delegate* load ) { - if (!core31) - { - InternalIO.InternalAppendLog("The core version 3.1 is not supported."); - throw new Exception("Final Version"); + if( !core31 ) { + InternalIO.InternalAppendLog( + "The core version 3.1 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindBufferBase = (delegate*)load("glBindBufferBase"); - contextPtr->glBindBufferRange = (delegate*)load("glBindBufferRange"); - contextPtr->glCopyBufferSubData = (delegate*)load("glCopyBufferSubData"); - contextPtr->glDrawArraysInstanced = (delegate*)load("glDrawArraysInstanced"); - contextPtr->glDrawElementsInstanced = (delegate*)load("glDrawElementsInstanced"); - contextPtr->glGetActiveUniformBlockName = (delegate*)load("glGetActiveUniformBlockName"); - contextPtr->glGetActiveUniformBlockiv = (delegate*)load("glGetActiveUniformBlockiv"); - contextPtr->glGetActiveUniformName = (delegate*)load("glGetActiveUniformName"); - contextPtr->glGetActiveUniformsiv = (delegate*)load("glGetActiveUniformsiv"); - contextPtr->glGetIntegeri_v = (delegate*)load("glGetIntegeri_v"); - contextPtr->glGetUniformBlockIndex = (delegate*)load("glGetUniformBlockIndex"); - contextPtr->glGetUniformIndices = (delegate*)load("glGetUniformIndices"); - contextPtr->glPrimitiveRestartIndex = (delegate*)load("glPrimitiveRestartIndex"); - contextPtr->glTexBuffer = (delegate*)load("glTexBuffer"); - contextPtr->glUniformBlockBinding = (delegate*)load("glUniformBlockBinding"); + contextPtr->glBindBufferBase = ( delegate* )load( + "glBindBufferBase" ); + contextPtr->glBindBufferRange = ( delegate* )load( + "glBindBufferRange" ); + contextPtr->glCopyBufferSubData = ( delegate* )load( + "glCopyBufferSubData" ); + contextPtr->glDrawArraysInstanced = ( delegate* )load( + "glDrawArraysInstanced" ); + contextPtr->glDrawElementsInstanced = ( delegate* )load( + "glDrawElementsInstanced" ); + contextPtr->glGetActiveUniformBlockName = ( delegate* )load( + "glGetActiveUniformBlockName" ); + contextPtr->glGetActiveUniformBlockiv = ( delegate* )load( + "glGetActiveUniformBlockiv" ); + contextPtr->glGetActiveUniformName = ( delegate* )load( + "glGetActiveUniformName" ); + contextPtr->glGetActiveUniformsiv = ( delegate* )load( + "glGetActiveUniformsiv" ); + contextPtr->glGetIntegeri_v = ( delegate* )load( + "glGetIntegeri_v" ); + contextPtr->glGetUniformBlockIndex = ( delegate* )load( + "glGetUniformBlockIndex" ); + contextPtr->glGetUniformIndices = ( delegate* )load( + "glGetUniformIndices" ); + contextPtr->glPrimitiveRestartIndex = ( delegate* )load( + "glPrimitiveRestartIndex" ); + contextPtr->glTexBuffer = ( delegate* )load( + "glTexBuffer" ); + contextPtr->glUniformBlockBinding = ( delegate* )load( + "glUniformBlockBinding" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 3.1 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.1 APIs" ); } - internal static unsafe void LoadGLcore32(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore32( + OpenglContext* contextPtr, + delegate* load ) { - if (!core32) - { - InternalIO.InternalAppendLog("The core version 3.2 is not supported."); - throw new Exception("Final Version"); + if( !core32 ) { + InternalIO.InternalAppendLog( + "The core version 3.2 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glClientWaitSync = (delegate*)load("glClientWaitSync"); - contextPtr->glDeleteSync = (delegate*)load("glDeleteSync"); - contextPtr->glDrawElementsBaseVertex = (delegate*)load("glDrawElementsBaseVertex"); - contextPtr->glDrawElementsInstancedBaseVertex = (delegate*)load("glDrawElementsInstancedBaseVertex"); - contextPtr->glDrawRangeElementsBaseVertex = (delegate*)load("glDrawRangeElementsBaseVertex"); - contextPtr->glFenceSync = (delegate*)load("glFenceSync"); - contextPtr->glFramebufferTexture = (delegate*)load("glFramebufferTexture"); - contextPtr->glGetBufferParameteri64v = (delegate*)load("glGetBufferParameteri64v"); - contextPtr->glGetInteger64i_v = (delegate*)load("glGetInteger64i_v"); - contextPtr->glGetInteger64v = (delegate*)load("glGetInteger64v"); - contextPtr->glGetMultisamplefv = (delegate*)load("glGetMultisamplefv"); - contextPtr->glGetSynciv = (delegate*)load("glGetSynciv"); - contextPtr->glIsSync = (delegate*)load("glIsSync"); - contextPtr->glMultiDrawElementsBaseVertex = (delegate*)load("glMultiDrawElementsBaseVertex"); - contextPtr->glProvokingVertex = (delegate*)load("glProvokingVertex"); - contextPtr->glSampleMaski = (delegate*)load("glSampleMaski"); - contextPtr->glTexImage2DMultisample = (delegate*)load("glTexImage2DMultisample"); - contextPtr->glTexImage3DMultisample = (delegate*)load("glTexImage3DMultisample"); - contextPtr->glWaitSync = (delegate*)load("glWaitSync"); + contextPtr->glClientWaitSync = ( delegate* )load( + "glClientWaitSync" ); + contextPtr->glDeleteSync = ( delegate* )load( + "glDeleteSync" ); + contextPtr->glDrawElementsBaseVertex = ( delegate* )load( + "glDrawElementsBaseVertex" ); + contextPtr->glDrawElementsInstancedBaseVertex = ( delegate* )load( + "glDrawElementsInstancedBaseVertex" ); + contextPtr->glDrawRangeElementsBaseVertex = ( delegate* )load( + "glDrawRangeElementsBaseVertex" ); + contextPtr->glFenceSync = ( delegate* )load( + "glFenceSync" ); + contextPtr->glFramebufferTexture = ( delegate* )load( + "glFramebufferTexture" ); + contextPtr->glGetBufferParameteri64v = ( delegate* )load( + "glGetBufferParameteri64v" ); + contextPtr->glGetInteger64i_v = ( delegate* )load( + "glGetInteger64i_v" ); + contextPtr->glGetInteger64v = ( delegate* )load( + "glGetInteger64v" ); + contextPtr->glGetMultisamplefv = ( delegate* )load( + "glGetMultisamplefv" ); + contextPtr->glGetSynciv = ( delegate* )load( + "glGetSynciv" ); + contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); + contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( + "glMultiDrawElementsBaseVertex" ); + contextPtr->glProvokingVertex = ( delegate* )load( + "glProvokingVertex" ); + contextPtr->glSampleMaski = ( delegate* )load( + "glSampleMaski" ); + contextPtr->glTexImage2DMultisample = ( delegate* )load( + "glTexImage2DMultisample" ); + contextPtr->glTexImage3DMultisample = ( delegate* )load( + "glTexImage3DMultisample" ); + contextPtr->glWaitSync = ( delegate* )load( + "glWaitSync" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 3.2 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.2 APIs" ); } - internal static unsafe void LoadGLcore33(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore33( + OpenglContext* contextPtr, + delegate* load ) { - if (!core33) - { - InternalIO.InternalAppendLog("The core version 3.3 is not supported."); - throw new Exception("Final Version"); + if( !core33 ) { + InternalIO.InternalAppendLog( + "The core version 3.3 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindFragDataLocationIndexed = (delegate*)load("glBindFragDataLocationIndexed"); - contextPtr->glBindSampler = (delegate*)load("glBindSampler"); - contextPtr->glDeleteSamplers = (delegate*)load("glDeleteSamplers"); - contextPtr->glGenSamplers = (delegate*)load("glGenSamplers"); - contextPtr->glGetFragDataIndex = (delegate*)load("glGetFragDataIndex"); - contextPtr->glGetQueryObjecti64v = (delegate*)load("glGetQueryObjecti64v"); - contextPtr->glGetQueryObjectui64v = (delegate*)load("glGetQueryObjectui64v"); - contextPtr->glGetSamplerParameterIiv = (delegate*)load("glGetSamplerParameterIiv"); - contextPtr->glGetSamplerParameterIuiv = (delegate*)load("glGetSamplerParameterIuiv"); - contextPtr->glGetSamplerParameterfv = (delegate*)load("glGetSamplerParameterfv"); - contextPtr->glGetSamplerParameteriv = (delegate*)load("glGetSamplerParameteriv"); - contextPtr->glIsSampler = (delegate*)load("glIsSampler"); - contextPtr->glQueryCounter = (delegate*)load("glQueryCounter"); - contextPtr->glSamplerParameterIiv = (delegate*)load("glSamplerParameterIiv"); - contextPtr->glSamplerParameterIuiv = (delegate*)load("glSamplerParameterIuiv"); - contextPtr->glSamplerParameterf = (delegate*)load("glSamplerParameterf"); - contextPtr->glSamplerParameterfv = (delegate*)load("glSamplerParameterfv"); - contextPtr->glSamplerParameteri = (delegate*)load("glSamplerParameteri"); - contextPtr->glSamplerParameteriv = (delegate*)load("glSamplerParameteriv"); - contextPtr->glVertexAttribDivisor = (delegate*)load("glVertexAttribDivisor"); - contextPtr->glVertexAttribP1ui = (delegate*)load("glVertexAttribP1ui"); - contextPtr->glVertexAttribP1uiv = (delegate*)load("glVertexAttribP1uiv"); - contextPtr->glVertexAttribP2ui = (delegate*)load("glVertexAttribP2ui"); - contextPtr->glVertexAttribP2uiv = (delegate*)load("glVertexAttribP2uiv"); - contextPtr->glVertexAttribP3ui = (delegate*)load("glVertexAttribP3ui"); - contextPtr->glVertexAttribP3uiv = (delegate*)load("glVertexAttribP3uiv"); - contextPtr->glVertexAttribP4ui = (delegate*)load("glVertexAttribP4ui"); - contextPtr->glVertexAttribP4uiv = (delegate*)load("glVertexAttribP4uiv"); + contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( + "glBindFragDataLocationIndexed" ); + contextPtr->glBindSampler = ( delegate* )load( + "glBindSampler" ); + contextPtr->glDeleteSamplers = ( delegate* )load( + "glDeleteSamplers" ); + contextPtr->glGenSamplers = ( delegate* )load( + "glGenSamplers" ); + contextPtr->glGetFragDataIndex = ( delegate* )load( + "glGetFragDataIndex" ); + contextPtr->glGetQueryObjecti64v = ( delegate* )load( + "glGetQueryObjecti64v" ); + contextPtr->glGetQueryObjectui64v = ( delegate* )load( + "glGetQueryObjectui64v" ); + contextPtr->glGetSamplerParameterIiv = ( delegate* )load( + "glGetSamplerParameterIiv" ); + contextPtr->glGetSamplerParameterIuiv = ( delegate* )load( + "glGetSamplerParameterIuiv" ); + contextPtr->glGetSamplerParameterfv = ( delegate* )load( + "glGetSamplerParameterfv" ); + contextPtr->glGetSamplerParameteriv = ( delegate* )load( + "glGetSamplerParameteriv" ); + contextPtr->glIsSampler = ( delegate* )load( + "glIsSampler" ); + contextPtr->glQueryCounter = ( delegate* )load( + "glQueryCounter" ); + contextPtr->glSamplerParameterIiv = ( delegate* )load( + "glSamplerParameterIiv" ); + contextPtr->glSamplerParameterIuiv = ( delegate* )load( + "glSamplerParameterIuiv" ); + contextPtr->glSamplerParameterf = ( delegate* )load( + "glSamplerParameterf" ); + contextPtr->glSamplerParameterfv = ( delegate* )load( + "glSamplerParameterfv" ); + contextPtr->glSamplerParameteri = ( delegate* )load( + "glSamplerParameteri" ); + contextPtr->glSamplerParameteriv = ( delegate* )load( + "glSamplerParameteriv" ); + contextPtr->glVertexAttribDivisor = ( delegate* )load( + "glVertexAttribDivisor" ); + contextPtr->glVertexAttribP1ui = ( delegate* )load( + "glVertexAttribP1ui" ); + contextPtr->glVertexAttribP1uiv = ( delegate* )load( + "glVertexAttribP1uiv" ); + contextPtr->glVertexAttribP2ui = ( delegate* )load( + "glVertexAttribP2ui" ); + contextPtr->glVertexAttribP2uiv = ( delegate* )load( + "glVertexAttribP2uiv" ); + contextPtr->glVertexAttribP3ui = ( delegate* )load( + "glVertexAttribP3ui" ); + contextPtr->glVertexAttribP3uiv = ( delegate* )load( + "glVertexAttribP3uiv" ); + contextPtr->glVertexAttribP4ui = ( delegate* )load( + "glVertexAttribP4ui" ); + contextPtr->glVertexAttribP4uiv = ( delegate* )load( + "glVertexAttribP4uiv" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 3.3 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 3.3 APIs" ); } - internal static unsafe void LoadGLcore40(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore40( + OpenglContext* contextPtr, + delegate* load ) { - if (!core40) - { - InternalIO.InternalAppendLog("The core version 4.0 is not supported."); - throw new Exception("Final Version"); + if( !core40 ) { + InternalIO.InternalAppendLog( + "The core version 4.0 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBeginQueryIndexed = (delegate*)load("glBeginQueryIndexed"); - contextPtr->glBindTransformFeedback = (delegate*)load("glBindTransformFeedback"); - contextPtr->glBlendEquationSeparatei = (delegate*)load("glBlendEquationSeparatei"); - contextPtr->glBlendEquationi = (delegate*)load("glBlendEquationi"); - contextPtr->glBlendFuncSeparatei = (delegate*)load("glBlendFuncSeparatei"); - contextPtr->glBlendFunci = (delegate*)load("glBlendFunci"); - contextPtr->glDeleteTransformFeedbacks = (delegate*)load("glDeleteTransformFeedbacks"); - contextPtr->glDrawArraysIndirect = (delegate*)load("glDrawArraysIndirect"); - contextPtr->glDrawElementsIndirect = (delegate*)load("glDrawElementsIndirect"); - contextPtr->glDrawTransformFeedback = (delegate*)load("glDrawTransformFeedback"); - contextPtr->glDrawTransformFeedbackStream = (delegate*)load("glDrawTransformFeedbackStream"); - contextPtr->glEndQueryIndexed = (delegate*)load("glEndQueryIndexed"); - contextPtr->glGenTransformFeedbacks = (delegate*)load("glGenTransformFeedbacks"); - contextPtr->glGetActiveSubroutineName = (delegate*)load("glGetActiveSubroutineName"); - contextPtr->glGetActiveSubroutineUniformName = (delegate*)load("glGetActiveSubroutineUniformName"); - contextPtr->glGetActiveSubroutineUniformiv = (delegate*)load("glGetActiveSubroutineUniformiv"); - contextPtr->glGetProgramStageiv = (delegate*)load("glGetProgramStageiv"); - contextPtr->glGetQueryIndexediv = (delegate*)load("glGetQueryIndexediv"); - contextPtr->glGetSubroutineIndex = (delegate*)load("glGetSubroutineIndex"); - contextPtr->glGetSubroutineUniformLocation = (delegate*)load("glGetSubroutineUniformLocation"); - contextPtr->glGetUniformSubroutineuiv = (delegate*)load("glGetUniformSubroutineuiv"); - contextPtr->glGetUniformdv = (delegate*)load("glGetUniformdv"); - contextPtr->glIsTransformFeedback = (delegate*)load("glIsTransformFeedback"); - contextPtr->glMinSampleShading = (delegate*)load("glMinSampleShading"); - contextPtr->glPatchParameterfv = (delegate*)load("glPatchParameterfv"); - contextPtr->glPatchParameteri = (delegate*)load("glPatchParameteri"); - contextPtr->glPauseTransformFeedback = (delegate*)load("glPauseTransformFeedback"); - contextPtr->glResumeTransformFeedback = (delegate*)load("glResumeTransformFeedback"); - contextPtr->glUniform1d = (delegate*)load("glUniform1d"); - contextPtr->glUniform1dv = (delegate*)load("glUniform1dv"); - contextPtr->glUniform2d = (delegate*)load("glUniform2d"); - contextPtr->glUniform2dv = (delegate*)load("glUniform2dv"); - contextPtr->glUniform3d = (delegate*)load("glUniform3d"); - contextPtr->glUniform3dv = (delegate*)load("glUniform3dv"); - contextPtr->glUniform4d = (delegate*)load("glUniform4d"); - contextPtr->glUniform4dv = (delegate*)load("glUniform4dv"); - contextPtr->glUniformMatrix2dv = (delegate*)load("glUniformMatrix2dv"); - contextPtr->glUniformMatrix2x3dv = (delegate*)load("glUniformMatrix2x3dv"); - contextPtr->glUniformMatrix2x4dv = (delegate*)load("glUniformMatrix2x4dv"); - contextPtr->glUniformMatrix3dv = (delegate*)load("glUniformMatrix3dv"); - contextPtr->glUniformMatrix3x2dv = (delegate*)load("glUniformMatrix3x2dv"); - contextPtr->glUniformMatrix3x4dv = (delegate*)load("glUniformMatrix3x4dv"); - contextPtr->glUniformMatrix4dv = (delegate*)load("glUniformMatrix4dv"); - contextPtr->glUniformMatrix4x2dv = (delegate*)load("glUniformMatrix4x2dv"); - contextPtr->glUniformMatrix4x3dv = (delegate*)load("glUniformMatrix4x3dv"); - contextPtr->glUniformSubroutinesuiv = (delegate*)load("glUniformSubroutinesuiv"); + contextPtr->glBeginQueryIndexed = ( delegate* )load( + "glBeginQueryIndexed" ); + contextPtr->glBindTransformFeedback = ( delegate* )load( + "glBindTransformFeedback" ); + contextPtr->glBlendEquationSeparatei = ( delegate* )load( + "glBlendEquationSeparatei" ); + contextPtr->glBlendEquationi = ( delegate* )load( + "glBlendEquationi" ); + contextPtr->glBlendFuncSeparatei = ( delegate* )load( + "glBlendFuncSeparatei" ); + contextPtr->glBlendFunci = ( delegate* )load( + "glBlendFunci" ); + contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( + "glDeleteTransformFeedbacks" ); + contextPtr->glDrawArraysIndirect = ( delegate* )load( + "glDrawArraysIndirect" ); + contextPtr->glDrawElementsIndirect = ( delegate* )load( + "glDrawElementsIndirect" ); + contextPtr->glDrawTransformFeedback = ( delegate* )load( + "glDrawTransformFeedback" ); + contextPtr->glDrawTransformFeedbackStream = ( delegate* )load( + "glDrawTransformFeedbackStream" ); + contextPtr->glEndQueryIndexed = ( delegate* )load( + "glEndQueryIndexed" ); + contextPtr->glGenTransformFeedbacks = ( delegate* )load( + "glGenTransformFeedbacks" ); + contextPtr->glGetActiveSubroutineName = ( delegate* )load( + "glGetActiveSubroutineName" ); + contextPtr->glGetActiveSubroutineUniformName = ( delegate* )load( + "glGetActiveSubroutineUniformName" ); + contextPtr->glGetActiveSubroutineUniformiv = ( delegate* )load( + "glGetActiveSubroutineUniformiv" ); + contextPtr->glGetProgramStageiv = ( delegate* )load( + "glGetProgramStageiv" ); + contextPtr->glGetQueryIndexediv = ( delegate* )load( + "glGetQueryIndexediv" ); + contextPtr->glGetSubroutineIndex = ( delegate* )load( + "glGetSubroutineIndex" ); + contextPtr->glGetSubroutineUniformLocation = ( delegate* )load( + "glGetSubroutineUniformLocation" ); + contextPtr->glGetUniformSubroutineuiv = ( delegate* )load( + "glGetUniformSubroutineuiv" ); + contextPtr->glGetUniformdv = ( delegate* )load( + "glGetUniformdv" ); + contextPtr->glIsTransformFeedback = ( delegate* )load( + "glIsTransformFeedback" ); + contextPtr->glMinSampleShading = ( delegate* )load( + "glMinSampleShading" ); + contextPtr->glPatchParameterfv = ( delegate* )load( + "glPatchParameterfv" ); + contextPtr->glPatchParameteri = ( delegate* )load( + "glPatchParameteri" ); + contextPtr->glPauseTransformFeedback = ( delegate* )load( + "glPauseTransformFeedback" ); + contextPtr->glResumeTransformFeedback = ( delegate* )load( + "glResumeTransformFeedback" ); + contextPtr->glUniform1d = ( delegate* )load( + "glUniform1d" ); + contextPtr->glUniform1dv = ( delegate* )load( + "glUniform1dv" ); + contextPtr->glUniform2d = ( delegate* )load( + "glUniform2d" ); + contextPtr->glUniform2dv = ( delegate* )load( + "glUniform2dv" ); + contextPtr->glUniform3d = ( delegate* )load( + "glUniform3d" ); + contextPtr->glUniform3dv = ( delegate* )load( + "glUniform3dv" ); + contextPtr->glUniform4d = ( delegate* )load( + "glUniform4d" ); + contextPtr->glUniform4dv = ( delegate* )load( + "glUniform4dv" ); + contextPtr->glUniformMatrix2dv = ( delegate* )load( + "glUniformMatrix2dv" ); + contextPtr->glUniformMatrix2x3dv = ( delegate* )load( + "glUniformMatrix2x3dv" ); + contextPtr->glUniformMatrix2x4dv = ( delegate* )load( + "glUniformMatrix2x4dv" ); + contextPtr->glUniformMatrix3dv = ( delegate* )load( + "glUniformMatrix3dv" ); + contextPtr->glUniformMatrix3x2dv = ( delegate* )load( + "glUniformMatrix3x2dv" ); + contextPtr->glUniformMatrix3x4dv = ( delegate* )load( + "glUniformMatrix3x4dv" ); + contextPtr->glUniformMatrix4dv = ( delegate* )load( + "glUniformMatrix4dv" ); + contextPtr->glUniformMatrix4x2dv = ( delegate* )load( + "glUniformMatrix4x2dv" ); + contextPtr->glUniformMatrix4x3dv = ( delegate* )load( + "glUniformMatrix4x3dv" ); + contextPtr->glUniformSubroutinesuiv = ( delegate* )load( + "glUniformSubroutinesuiv" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.0 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.0 APIs" ); } - internal static unsafe void LoadGLcore41(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore41( + OpenglContext* contextPtr, + delegate* load ) { - if (!core41) - { - InternalIO.InternalAppendLog("The core version 4.1 is not supported."); - throw new Exception("Final Version"); + if( !core41 ) { + InternalIO.InternalAppendLog( + "The core version 4.1 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glActiveShaderProgram = (delegate*)load("glActiveShaderProgram"); - contextPtr->glBindProgramPipeline = (delegate*)load("glBindProgramPipeline"); - contextPtr->glClearDepthf = (delegate*)load("glClearDepthf"); - contextPtr->glCreateShaderProgramv = (delegate*)load("glCreateShaderProgramv"); - contextPtr->glDeleteProgramPipelines = (delegate*)load("glDeleteProgramPipelines"); - contextPtr->glDepthRangeArrayv = (delegate*)load("glDepthRangeArrayv"); - contextPtr->glDepthRangeIndexed = (delegate*)load("glDepthRangeIndexed"); - contextPtr->glDepthRangef = (delegate*)load("glDepthRangef"); - contextPtr->glGenProgramPipelines = (delegate*)load("glGenProgramPipelines"); - contextPtr->glGetDoublei_v = (delegate*)load("glGetDoublei_v"); - contextPtr->glGetFloati_v = (delegate*)load("glGetFloati_v"); - contextPtr->glGetProgramBinary = (delegate*)load("glGetProgramBinary"); - contextPtr->glGetProgramPipelineInfoLog = (delegate*)load("glGetProgramPipelineInfoLog"); - contextPtr->glGetProgramPipelineiv = (delegate*)load("glGetProgramPipelineiv"); - contextPtr->glGetShaderPrecisionFormat = (delegate*)load("glGetShaderPrecisionFormat"); - contextPtr->glGetVertexAttribLdv = (delegate*)load("glGetVertexAttribLdv"); - contextPtr->glIsProgramPipeline = (delegate*)load("glIsProgramPipeline"); - contextPtr->glProgramBinary = (delegate*)load("glProgramBinary"); - contextPtr->glProgramParameteri = (delegate*)load("glProgramParameteri"); - contextPtr->glProgramUniform1d = (delegate*)load("glProgramUniform1d"); - contextPtr->glProgramUniform1dv = (delegate*)load("glProgramUniform1dv"); - contextPtr->glProgramUniform1f = (delegate*)load("glProgramUniform1f"); - contextPtr->glProgramUniform1fv = (delegate*)load("glProgramUniform1fv"); - contextPtr->glProgramUniform1i = (delegate*)load("glProgramUniform1i"); - contextPtr->glProgramUniform1iv = (delegate*)load("glProgramUniform1iv"); - contextPtr->glProgramUniform1ui = (delegate*)load("glProgramUniform1ui"); - contextPtr->glProgramUniform1uiv = (delegate*)load("glProgramUniform1uiv"); - contextPtr->glProgramUniform2d = (delegate*)load("glProgramUniform2d"); - contextPtr->glProgramUniform2dv = (delegate*)load("glProgramUniform2dv"); - contextPtr->glProgramUniform2f = (delegate*)load("glProgramUniform2f"); - contextPtr->glProgramUniform2fv = (delegate*)load("glProgramUniform2fv"); - contextPtr->glProgramUniform2i = (delegate*)load("glProgramUniform2i"); - contextPtr->glProgramUniform2iv = (delegate*)load("glProgramUniform2iv"); - contextPtr->glProgramUniform2ui = (delegate*)load("glProgramUniform2ui"); - contextPtr->glProgramUniform2uiv = (delegate*)load("glProgramUniform2uiv"); - contextPtr->glProgramUniform3d = (delegate*)load("glProgramUniform3d"); - contextPtr->glProgramUniform3dv = (delegate*)load("glProgramUniform3dv"); - contextPtr->glProgramUniform3f = (delegate*)load("glProgramUniform3f"); - contextPtr->glProgramUniform3fv = (delegate*)load("glProgramUniform3fv"); - contextPtr->glProgramUniform3i = (delegate*)load("glProgramUniform3i"); - contextPtr->glProgramUniform3iv = (delegate*)load("glProgramUniform3iv"); - contextPtr->glProgramUniform3ui = (delegate*)load("glProgramUniform3ui"); - contextPtr->glProgramUniform3uiv = (delegate*)load("glProgramUniform3uiv"); - contextPtr->glProgramUniform4d = (delegate*)load("glProgramUniform4d"); - contextPtr->glProgramUniform4dv = (delegate*)load("glProgramUniform4dv"); - contextPtr->glProgramUniform4f = (delegate*)load("glProgramUniform4f"); - contextPtr->glProgramUniform4fv = (delegate*)load("glProgramUniform4fv"); - contextPtr->glProgramUniform4i = (delegate*)load("glProgramUniform4i"); - contextPtr->glProgramUniform4iv = (delegate*)load("glProgramUniform4iv"); - contextPtr->glProgramUniform4ui = (delegate*)load("glProgramUniform4ui"); - contextPtr->glProgramUniform4uiv = (delegate*)load("glProgramUniform4uiv"); - contextPtr->glProgramUniformMatrix2dv = (delegate*)load("glProgramUniformMatrix2dv"); - contextPtr->glProgramUniformMatrix2fv = (delegate*)load("glProgramUniformMatrix2fv"); - contextPtr->glProgramUniformMatrix2x3dv = (delegate*)load("glProgramUniformMatrix2x3dv"); - contextPtr->glProgramUniformMatrix2x3fv = (delegate*)load("glProgramUniformMatrix2x3fv"); - contextPtr->glProgramUniformMatrix2x4dv = (delegate*)load("glProgramUniformMatrix2x4dv"); - contextPtr->glProgramUniformMatrix2x4fv = (delegate*)load("glProgramUniformMatrix2x4fv"); - contextPtr->glProgramUniformMatrix3dv = (delegate*)load("glProgramUniformMatrix3dv"); - contextPtr->glProgramUniformMatrix3fv = (delegate*)load("glProgramUniformMatrix3fv"); - contextPtr->glProgramUniformMatrix3x2dv = (delegate*)load("glProgramUniformMatrix3x2dv"); - contextPtr->glProgramUniformMatrix3x2fv = (delegate*)load("glProgramUniformMatrix3x2fv"); - contextPtr->glProgramUniformMatrix3x4dv = (delegate*)load("glProgramUniformMatrix3x4dv"); - contextPtr->glProgramUniformMatrix3x4fv = (delegate*)load("glProgramUniformMatrix3x4fv"); - contextPtr->glProgramUniformMatrix4dv = (delegate*)load("glProgramUniformMatrix4dv"); - contextPtr->glProgramUniformMatrix4fv = (delegate*)load("glProgramUniformMatrix4fv"); - contextPtr->glProgramUniformMatrix4x2dv = (delegate*)load("glProgramUniformMatrix4x2dv"); - contextPtr->glProgramUniformMatrix4x2fv = (delegate*)load("glProgramUniformMatrix4x2fv"); - contextPtr->glProgramUniformMatrix4x3dv = (delegate*)load("glProgramUniformMatrix4x3dv"); - contextPtr->glProgramUniformMatrix4x3fv = (delegate*)load("glProgramUniformMatrix4x3fv"); - contextPtr->glReleaseShaderCompiler = (delegate*)load("glReleaseShaderCompiler"); - contextPtr->glScissorArrayv = (delegate*)load("glScissorArrayv"); - contextPtr->glScissorIndexed = (delegate*)load("glScissorIndexed"); - contextPtr->glScissorIndexedv = (delegate*)load("glScissorIndexedv"); - contextPtr->glShaderBinary = (delegate*)load("glShaderBinary"); - contextPtr->glUseProgramStages = (delegate*)load("glUseProgramStages"); - contextPtr->glValidateProgramPipeline = (delegate*)load("glValidateProgramPipeline"); - contextPtr->glVertexAttribL1d = (delegate*)load("glVertexAttribL1d"); - contextPtr->glVertexAttribL1dv = (delegate*)load("glVertexAttribL1dv"); - contextPtr->glVertexAttribL2d = (delegate*)load("glVertexAttribL2d"); - contextPtr->glVertexAttribL2dv = (delegate*)load("glVertexAttribL2dv"); - contextPtr->glVertexAttribL3d = (delegate*)load("glVertexAttribL3d"); - contextPtr->glVertexAttribL3dv = (delegate*)load("glVertexAttribL3dv"); - contextPtr->glVertexAttribL4d = (delegate*)load("glVertexAttribL4d"); - contextPtr->glVertexAttribL4dv = (delegate*)load("glVertexAttribL4dv"); - contextPtr->glVertexAttribLPointer = (delegate*)load("glVertexAttribLPointer"); - contextPtr->glViewportArrayv = (delegate*)load("glViewportArrayv"); - contextPtr->glViewportIndexedf = (delegate*)load("glViewportIndexedf"); - contextPtr->glViewportIndexedfv = (delegate*)load("glViewportIndexedfv"); + contextPtr->glActiveShaderProgram = ( delegate* )load( + "glActiveShaderProgram" ); + contextPtr->glBindProgramPipeline = ( delegate* )load( + "glBindProgramPipeline" ); + contextPtr->glClearDepthf = ( delegate* )load( + "glClearDepthf" ); + contextPtr->glCreateShaderProgramv = ( delegate* )load( + "glCreateShaderProgramv" ); + contextPtr->glDeleteProgramPipelines = ( delegate* )load( + "glDeleteProgramPipelines" ); + contextPtr->glDepthRangeArrayv = ( delegate* )load( + "glDepthRangeArrayv" ); + contextPtr->glDepthRangeIndexed = ( delegate* )load( + "glDepthRangeIndexed" ); + contextPtr->glDepthRangef = ( delegate* )load( + "glDepthRangef" ); + contextPtr->glGenProgramPipelines = ( delegate* )load( + "glGenProgramPipelines" ); + contextPtr->glGetDoublei_v = ( delegate* )load( + "glGetDoublei_v" ); + contextPtr->glGetFloati_v = ( delegate* )load( + "glGetFloati_v" ); + contextPtr->glGetProgramBinary = ( delegate* )load( + "glGetProgramBinary" ); + contextPtr->glGetProgramPipelineInfoLog = ( delegate* )load( + "glGetProgramPipelineInfoLog" ); + contextPtr->glGetProgramPipelineiv = ( delegate* )load( + "glGetProgramPipelineiv" ); + contextPtr->glGetShaderPrecisionFormat = ( delegate* )load( + "glGetShaderPrecisionFormat" ); + contextPtr->glGetVertexAttribLdv = ( delegate* )load( + "glGetVertexAttribLdv" ); + contextPtr->glIsProgramPipeline = ( delegate* )load( + "glIsProgramPipeline" ); + contextPtr->glProgramBinary = ( delegate* )load( + "glProgramBinary" ); + contextPtr->glProgramParameteri = ( delegate* )load( + "glProgramParameteri" ); + contextPtr->glProgramUniform1d = ( delegate* )load( + "glProgramUniform1d" ); + contextPtr->glProgramUniform1dv = ( delegate* )load( + "glProgramUniform1dv" ); + contextPtr->glProgramUniform1f = ( delegate* )load( + "glProgramUniform1f" ); + contextPtr->glProgramUniform1fv = ( delegate* )load( + "glProgramUniform1fv" ); + contextPtr->glProgramUniform1i = ( delegate* )load( + "glProgramUniform1i" ); + contextPtr->glProgramUniform1iv = ( delegate* )load( + "glProgramUniform1iv" ); + contextPtr->glProgramUniform1ui = ( delegate* )load( + "glProgramUniform1ui" ); + contextPtr->glProgramUniform1uiv = ( delegate* )load( + "glProgramUniform1uiv" ); + contextPtr->glProgramUniform2d = ( delegate* )load( + "glProgramUniform2d" ); + contextPtr->glProgramUniform2dv = ( delegate* )load( + "glProgramUniform2dv" ); + contextPtr->glProgramUniform2f = ( delegate* )load( + "glProgramUniform2f" ); + contextPtr->glProgramUniform2fv = ( delegate* )load( + "glProgramUniform2fv" ); + contextPtr->glProgramUniform2i = ( delegate* )load( + "glProgramUniform2i" ); + contextPtr->glProgramUniform2iv = ( delegate* )load( + "glProgramUniform2iv" ); + contextPtr->glProgramUniform2ui = ( delegate* )load( + "glProgramUniform2ui" ); + contextPtr->glProgramUniform2uiv = ( delegate* )load( + "glProgramUniform2uiv" ); + contextPtr->glProgramUniform3d = ( delegate* )load( + "glProgramUniform3d" ); + contextPtr->glProgramUniform3dv = ( delegate* )load( + "glProgramUniform3dv" ); + contextPtr->glProgramUniform3f = ( delegate* )load( + "glProgramUniform3f" ); + contextPtr->glProgramUniform3fv = ( delegate* )load( + "glProgramUniform3fv" ); + contextPtr->glProgramUniform3i = ( delegate* )load( + "glProgramUniform3i" ); + contextPtr->glProgramUniform3iv = ( delegate* )load( + "glProgramUniform3iv" ); + contextPtr->glProgramUniform3ui = ( delegate* )load( + "glProgramUniform3ui" ); + contextPtr->glProgramUniform3uiv = ( delegate* )load( + "glProgramUniform3uiv" ); + contextPtr->glProgramUniform4d = ( delegate* )load( + "glProgramUniform4d" ); + contextPtr->glProgramUniform4dv = ( delegate* )load( + "glProgramUniform4dv" ); + contextPtr->glProgramUniform4f = ( delegate* )load( + "glProgramUniform4f" ); + contextPtr->glProgramUniform4fv = ( delegate* )load( + "glProgramUniform4fv" ); + contextPtr->glProgramUniform4i = ( delegate* )load( + "glProgramUniform4i" ); + contextPtr->glProgramUniform4iv = ( delegate* )load( + "glProgramUniform4iv" ); + contextPtr->glProgramUniform4ui = ( delegate* )load( + "glProgramUniform4ui" ); + contextPtr->glProgramUniform4uiv = ( delegate* )load( + "glProgramUniform4uiv" ); + contextPtr->glProgramUniformMatrix2dv = ( delegate* )load( + "glProgramUniformMatrix2dv" ); + contextPtr->glProgramUniformMatrix2fv = ( delegate* )load( + "glProgramUniformMatrix2fv" ); + contextPtr->glProgramUniformMatrix2x3dv = ( delegate* )load( + "glProgramUniformMatrix2x3dv" ); + contextPtr->glProgramUniformMatrix2x3fv = ( delegate* )load( + "glProgramUniformMatrix2x3fv" ); + contextPtr->glProgramUniformMatrix2x4dv = ( delegate* )load( + "glProgramUniformMatrix2x4dv" ); + contextPtr->glProgramUniformMatrix2x4fv = ( delegate* )load( + "glProgramUniformMatrix2x4fv" ); + contextPtr->glProgramUniformMatrix3dv = ( delegate* )load( + "glProgramUniformMatrix3dv" ); + contextPtr->glProgramUniformMatrix3fv = ( delegate* )load( + "glProgramUniformMatrix3fv" ); + contextPtr->glProgramUniformMatrix3x2dv = ( delegate* )load( + "glProgramUniformMatrix3x2dv" ); + contextPtr->glProgramUniformMatrix3x2fv = ( delegate* )load( + "glProgramUniformMatrix3x2fv" ); + contextPtr->glProgramUniformMatrix3x4dv = ( delegate* )load( + "glProgramUniformMatrix3x4dv" ); + contextPtr->glProgramUniformMatrix3x4fv = ( delegate* )load( + "glProgramUniformMatrix3x4fv" ); + contextPtr->glProgramUniformMatrix4dv = ( delegate* )load( + "glProgramUniformMatrix4dv" ); + contextPtr->glProgramUniformMatrix4fv = ( delegate* )load( + "glProgramUniformMatrix4fv" ); + contextPtr->glProgramUniformMatrix4x2dv = ( delegate* )load( + "glProgramUniformMatrix4x2dv" ); + contextPtr->glProgramUniformMatrix4x2fv = ( delegate* )load( + "glProgramUniformMatrix4x2fv" ); + contextPtr->glProgramUniformMatrix4x3dv = ( delegate* )load( + "glProgramUniformMatrix4x3dv" ); + contextPtr->glProgramUniformMatrix4x3fv = ( delegate* )load( + "glProgramUniformMatrix4x3fv" ); + contextPtr->glReleaseShaderCompiler = ( delegate* )load( + "glReleaseShaderCompiler" ); + contextPtr->glScissorArrayv = ( delegate* )load( + "glScissorArrayv" ); + contextPtr->glScissorIndexed = ( delegate* )load( + "glScissorIndexed" ); + contextPtr->glScissorIndexedv = ( delegate* )load( + "glScissorIndexedv" ); + contextPtr->glShaderBinary = ( delegate* )load( + "glShaderBinary" ); + contextPtr->glUseProgramStages = ( delegate* )load( + "glUseProgramStages" ); + contextPtr->glValidateProgramPipeline = ( delegate* )load( + "glValidateProgramPipeline" ); + contextPtr->glVertexAttribL1d = ( delegate* )load( + "glVertexAttribL1d" ); + contextPtr->glVertexAttribL1dv = ( delegate* )load( + "glVertexAttribL1dv" ); + contextPtr->glVertexAttribL2d = ( delegate* )load( + "glVertexAttribL2d" ); + contextPtr->glVertexAttribL2dv = ( delegate* )load( + "glVertexAttribL2dv" ); + contextPtr->glVertexAttribL3d = ( delegate* )load( + "glVertexAttribL3d" ); + contextPtr->glVertexAttribL3dv = ( delegate* )load( + "glVertexAttribL3dv" ); + contextPtr->glVertexAttribL4d = ( delegate* )load( + "glVertexAttribL4d" ); + contextPtr->glVertexAttribL4dv = ( delegate* )load( + "glVertexAttribL4dv" ); + contextPtr->glVertexAttribLPointer = ( delegate* )load( + "glVertexAttribLPointer" ); + contextPtr->glViewportArrayv = ( delegate* )load( + "glViewportArrayv" ); + contextPtr->glViewportIndexedf = ( delegate* )load( + "glViewportIndexedf" ); + contextPtr->glViewportIndexedfv = ( delegate* )load( + "glViewportIndexedfv" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.1 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.1 APIs" ); } - internal static unsafe void LoadGLcore42(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore42( + OpenglContext* contextPtr, + delegate* load ) { - if (!core42) - { - InternalIO.InternalAppendLog("The core version 4.2 is not supported."); - throw new Exception("Final Version"); + if( !core42 ) { + InternalIO.InternalAppendLog( + "The core version 4.2 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindImageTexture = (delegate*)load("glBindImageTexture"); - contextPtr->glDrawArraysInstancedBaseInstance = (delegate*)load("glDrawArraysInstancedBaseInstance"); - contextPtr->glDrawElementsInstancedBaseInstance = (delegate*)load("glDrawElementsInstancedBaseInstance"); - contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = (delegate*)load("glDrawElementsInstancedBaseVertexBaseInstance"); - contextPtr->glDrawTransformFeedbackInstanced = (delegate*)load("glDrawTransformFeedbackInstanced"); - contextPtr->glDrawTransformFeedbackStreamInstanced = (delegate*)load("glDrawTransformFeedbackStreamInstanced"); - contextPtr->glGetActiveAtomicCounterBufferiv = (delegate*)load("glGetActiveAtomicCounterBufferiv"); - contextPtr->glGetInternalformativ = (delegate*)load("glGetInternalformativ"); - contextPtr->glMemoryBarrier = (delegate*)load("glMemoryBarrier"); - contextPtr->glTexStorage1D = (delegate*)load("glTexStorage1D"); - contextPtr->glTexStorage2D = (delegate*)load("glTexStorage2D"); - contextPtr->glTexStorage3D = (delegate*)load("glTexStorage3D"); + contextPtr->glBindImageTexture = ( delegate* )load( + "glBindImageTexture" ); + contextPtr->glDrawArraysInstancedBaseInstance = ( delegate* )load( + "glDrawArraysInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseInstance" ); + contextPtr->glDrawElementsInstancedBaseVertexBaseInstance = ( delegate* )load( + "glDrawElementsInstancedBaseVertexBaseInstance" ); + contextPtr->glDrawTransformFeedbackInstanced = ( delegate* )load( + "glDrawTransformFeedbackInstanced" ); + contextPtr->glDrawTransformFeedbackStreamInstanced = ( delegate* )load( + "glDrawTransformFeedbackStreamInstanced" ); + contextPtr->glGetActiveAtomicCounterBufferiv = ( delegate* )load( + "glGetActiveAtomicCounterBufferiv" ); + contextPtr->glGetInternalformativ = ( delegate* )load( + "glGetInternalformativ" ); + contextPtr->glMemoryBarrier = ( delegate* )load( + "glMemoryBarrier" ); + contextPtr->glTexStorage1D = ( delegate* )load( + "glTexStorage1D" ); + contextPtr->glTexStorage2D = ( delegate* )load( + "glTexStorage2D" ); + contextPtr->glTexStorage3D = ( delegate* )load( + "glTexStorage3D" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.2 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.2 APIs" ); } - internal static unsafe void LoadGLcore43(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore43( + OpenglContext* contextPtr, + delegate* load ) { - if (!core43) - { - InternalIO.InternalAppendLog("The core version 4.3 is not supported."); - throw new Exception("Final Version"); + if( !core43 ) { + InternalIO.InternalAppendLog( + "The core version 4.3 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindVertexBuffer = (delegate*)load("glBindVertexBuffer"); - contextPtr->glClearBufferData = (delegate*)load("glClearBufferData"); - contextPtr->glClearBufferSubData = (delegate*)load("glClearBufferSubData"); - contextPtr->glCopyImageSubData = (delegate*)load("glCopyImageSubData"); - contextPtr->glDebugMessageCallback = (delegate*)load("glDebugMessageCallback"); - contextPtr->glDebugMessageControl = (delegate*)load("glDebugMessageControl"); - contextPtr->glDebugMessageInsert = (delegate*)load("glDebugMessageInsert"); - contextPtr->glDispatchCompute = (delegate*)load("glDispatchCompute"); - contextPtr->glDispatchComputeIndirect = (delegate*)load("glDispatchComputeIndirect"); - contextPtr->glFramebufferParameteri = (delegate*)load("glFramebufferParameteri"); - contextPtr->glGetDebugMessageLog = (delegate*)load("glGetDebugMessageLog"); - contextPtr->glGetFramebufferParameteriv = (delegate*)load("glGetFramebufferParameteriv"); - contextPtr->glGetInternalformati64v = (delegate*)load("glGetInternalformati64v"); - contextPtr->glGetObjectLabel = (delegate*)load("glGetObjectLabel"); - contextPtr->glGetObjectPtrLabel = (delegate*)load("glGetObjectPtrLabel"); - contextPtr->glGetPointerv = (delegate*)load("glGetPointerv"); - contextPtr->glGetProgramInterfaceiv = (delegate*)load("glGetProgramInterfaceiv"); - contextPtr->glGetProgramResourceIndex = (delegate*)load("glGetProgramResourceIndex"); - contextPtr->glGetProgramResourceLocation = (delegate*)load("glGetProgramResourceLocation"); - contextPtr->glGetProgramResourceLocationIndex = (delegate*)load("glGetProgramResourceLocationIndex"); - contextPtr->glGetProgramResourceName = (delegate*)load("glGetProgramResourceName"); - contextPtr->glGetProgramResourceiv = (delegate*)load("glGetProgramResourceiv"); - contextPtr->glInvalidateBufferData = (delegate*)load("glInvalidateBufferData"); - contextPtr->glInvalidateBufferSubData = (delegate*)load("glInvalidateBufferSubData"); - contextPtr->glInvalidateFramebuffer = (delegate*)load("glInvalidateFramebuffer"); - contextPtr->glInvalidateSubFramebuffer = (delegate*)load("glInvalidateSubFramebuffer"); - contextPtr->glInvalidateTexImage = (delegate*)load("glInvalidateTexImage"); - contextPtr->glInvalidateTexSubImage = (delegate*)load("glInvalidateTexSubImage"); - contextPtr->glMultiDrawArraysIndirect = (delegate*)load("glMultiDrawArraysIndirect"); - contextPtr->glMultiDrawElementsIndirect = (delegate*)load("glMultiDrawElementsIndirect"); - contextPtr->glObjectLabel = (delegate*)load("glObjectLabel"); - contextPtr->glObjectPtrLabel = (delegate*)load("glObjectPtrLabel"); - contextPtr->glPopDebugGroup = (delegate*)load("glPopDebugGroup"); - contextPtr->glPushDebugGroup = (delegate*)load("glPushDebugGroup"); - contextPtr->glShaderStorageBlockBinding = (delegate*)load("glShaderStorageBlockBinding"); - contextPtr->glTexBufferRange = (delegate*)load("glTexBufferRange"); - contextPtr->glTexStorage2DMultisample = (delegate*)load("glTexStorage2DMultisample"); - contextPtr->glTexStorage3DMultisample = (delegate*)load("glTexStorage3DMultisample"); - contextPtr->glTextureView = (delegate*)load("glTextureView"); - contextPtr->glVertexAttribBinding = (delegate*)load("glVertexAttribBinding"); - contextPtr->glVertexAttribFormat = (delegate*)load("glVertexAttribFormat"); - contextPtr->glVertexAttribIFormat = (delegate*)load("glVertexAttribIFormat"); - contextPtr->glClearBufferData = (delegate*)load("glClearBufferData"); - contextPtr->glVertexBindingDivisor = (delegate*)load("glVertexBindingDivisor"); + contextPtr->glBindVertexBuffer = ( delegate* )load( + "glBindVertexBuffer" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glClearBufferSubData = ( delegate* )load( + "glClearBufferSubData" ); + contextPtr->glCopyImageSubData = ( delegate* )load( + "glCopyImageSubData" ); + contextPtr->glDebugMessageCallback = ( delegate* )load( + "glDebugMessageCallback" ); + contextPtr->glDebugMessageControl = ( delegate* )load( + "glDebugMessageControl" ); + contextPtr->glDebugMessageInsert = ( delegate* )load( + "glDebugMessageInsert" ); + contextPtr->glDispatchCompute = ( delegate* )load( + "glDispatchCompute" ); + contextPtr->glDispatchComputeIndirect = ( delegate* )load( + "glDispatchComputeIndirect" ); + contextPtr->glFramebufferParameteri = ( delegate* )load( + "glFramebufferParameteri" ); + contextPtr->glGetDebugMessageLog = ( delegate* )load( + "glGetDebugMessageLog" ); + contextPtr->glGetFramebufferParameteriv = ( delegate* )load( + "glGetFramebufferParameteriv" ); + contextPtr->glGetInternalformati64v = ( delegate* )load( + "glGetInternalformati64v" ); + contextPtr->glGetObjectLabel = ( delegate* )load( + "glGetObjectLabel" ); + contextPtr->glGetObjectPtrLabel = ( delegate* )load( + "glGetObjectPtrLabel" ); + contextPtr->glGetPointerv = ( delegate* )load( + "glGetPointerv" ); + contextPtr->glGetProgramInterfaceiv = ( delegate* )load( + "glGetProgramInterfaceiv" ); + contextPtr->glGetProgramResourceIndex = ( delegate* )load( + "glGetProgramResourceIndex" ); + contextPtr->glGetProgramResourceLocation = ( delegate* )load( + "glGetProgramResourceLocation" ); + contextPtr->glGetProgramResourceLocationIndex = ( delegate* )load( + "glGetProgramResourceLocationIndex" ); + contextPtr->glGetProgramResourceName = ( delegate* )load( + "glGetProgramResourceName" ); + contextPtr->glGetProgramResourceiv = ( delegate* )load( + "glGetProgramResourceiv" ); + contextPtr->glInvalidateBufferData = ( delegate* )load( + "glInvalidateBufferData" ); + contextPtr->glInvalidateBufferSubData = ( delegate* )load( + "glInvalidateBufferSubData" ); + contextPtr->glInvalidateFramebuffer = ( delegate* )load( + "glInvalidateFramebuffer" ); + contextPtr->glInvalidateSubFramebuffer = ( delegate* )load( + "glInvalidateSubFramebuffer" ); + contextPtr->glInvalidateTexImage = ( delegate* )load( + "glInvalidateTexImage" ); + contextPtr->glInvalidateTexSubImage = ( delegate* )load( + "glInvalidateTexSubImage" ); + contextPtr->glMultiDrawArraysIndirect = ( delegate* )load( + "glMultiDrawArraysIndirect" ); + contextPtr->glMultiDrawElementsIndirect = ( delegate* )load( + "glMultiDrawElementsIndirect" ); + contextPtr->glObjectLabel = ( delegate* )load( + "glObjectLabel" ); + contextPtr->glObjectPtrLabel = ( delegate* )load( + "glObjectPtrLabel" ); + contextPtr->glPopDebugGroup = ( delegate* )load( + "glPopDebugGroup" ); + contextPtr->glPushDebugGroup = ( delegate* )load( + "glPushDebugGroup" ); + contextPtr->glShaderStorageBlockBinding = ( delegate* )load( + "glShaderStorageBlockBinding" ); + contextPtr->glTexBufferRange = ( delegate* )load( + "glTexBufferRange" ); + contextPtr->glTexStorage2DMultisample = ( delegate* )load( + "glTexStorage2DMultisample" ); + contextPtr->glTexStorage3DMultisample = ( delegate* )load( + "glTexStorage3DMultisample" ); + contextPtr->glTextureView = ( delegate* )load( + "glTextureView" ); + contextPtr->glVertexAttribBinding = ( delegate* )load( + "glVertexAttribBinding" ); + contextPtr->glVertexAttribFormat = ( delegate* )load( + "glVertexAttribFormat" ); + contextPtr->glVertexAttribIFormat = ( delegate* )load( + "glVertexAttribIFormat" ); + contextPtr->glClearBufferData = ( delegate* )load( + "glClearBufferData" ); + contextPtr->glVertexBindingDivisor = ( delegate* )load( + "glVertexBindingDivisor" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.3 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.3 APIs" ); } - internal static unsafe void LoadGLcore44(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore44( + OpenglContext* contextPtr, + delegate* load ) { - if (!core44) - { - InternalIO.InternalAppendLog("The core version 4.4 is not supported."); - throw new Exception("Final Version"); + if( !core44 ) { + InternalIO.InternalAppendLog( + "The core version 4.4 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindBuffersBase = (delegate*)load("glBindBuffersBase"); - contextPtr->glBindBuffersRange = (delegate*)load("glBindBuffersRange"); - contextPtr->glBindImageTextures = (delegate*)load("glBindImageTextures"); - contextPtr->glBindSamplers = (delegate*)load("glBindSamplers"); - contextPtr->glBindTextures = (delegate*)load("glBindTextures"); - contextPtr->glBindVertexBuffers = (delegate*)load("glBindVertexBuffers"); - contextPtr->glBufferStorage = (delegate*)load("glBufferStorage"); - contextPtr->glClearTexImage = (delegate*)load("glClearTexImage"); - contextPtr->glClearTexSubImage = (delegate*)load("glClearTexSubImage"); + contextPtr->glBindBuffersBase = ( delegate* )load( + "glBindBuffersBase" ); + contextPtr->glBindBuffersRange = ( delegate* )load( + "glBindBuffersRange" ); + contextPtr->glBindImageTextures = ( delegate* )load( + "glBindImageTextures" ); + contextPtr->glBindSamplers = ( delegate* )load( + "glBindSamplers" ); + contextPtr->glBindTextures = ( delegate* )load( + "glBindTextures" ); + contextPtr->glBindVertexBuffers = ( delegate* )load( + "glBindVertexBuffers" ); + contextPtr->glBufferStorage = ( delegate* )load( + "glBufferStorage" ); + contextPtr->glClearTexImage = ( delegate* )load( + "glClearTexImage" ); + contextPtr->glClearTexSubImage = ( delegate* )load( + "glClearTexSubImage" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.4 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.4 APIs" ); } - internal static unsafe void LoadGLcore45(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore45( + OpenglContext* contextPtr, + delegate* load ) { - if (!core45) - { - InternalIO.InternalAppendLog("The core version 4.5 is not supported."); - throw new Exception("Final Version"); + if( !core45 ) { + InternalIO.InternalAppendLog( + "The core version 4.5 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glBindTextureUnit = (delegate*)load("glBindTextureUnit"); - contextPtr->glBlitNamedFramebuffer = (delegate*)load("glBlitNamedFramebuffer"); - contextPtr->glCheckNamedFramebufferStatus = (delegate*)load("glCheckNamedFramebufferStatus"); - contextPtr->glClearNamedBufferData = (delegate*)load("glClearNamedBufferData"); - contextPtr->glClearNamedBufferSubData = (delegate*)load("glClearNamedBufferSubData"); - contextPtr->glClearNamedFramebufferfi = (delegate*)load("glClearNamedFramebufferfi"); - contextPtr->glClearNamedFramebufferfv = (delegate*)load("glClearNamedFramebufferfv"); - contextPtr->glClearNamedFramebufferiv = (delegate*)load("glClearNamedFramebufferiv"); - contextPtr->glClearNamedFramebufferuiv = (delegate*)load("glClearNamedFramebufferuiv"); - contextPtr->glClipControl = (delegate*)load("glClipControl"); - contextPtr->glCompressedTextureSubImage1D = (delegate*)load("glCompressedTextureSubImage1D"); - contextPtr->glCompressedTextureSubImage2D = (delegate*)load("glCompressedTextureSubImage2D"); - contextPtr->glCompressedTextureSubImage3D = (delegate*)load("glCompressedTextureSubImage3D"); - contextPtr->glCopyNamedBufferSubData = (delegate*)load("glCopyNamedBufferSubData"); - contextPtr->glCopyTextureSubImage1D = (delegate*)load("glCopyTextureSubImage1D"); - contextPtr->glCopyTextureSubImage2D = (delegate*)load("glCopyTextureSubImage2D"); - contextPtr->glCopyTextureSubImage3D = (delegate*)load("glCopyTextureSubImage3D"); - contextPtr->glCreateBuffers = (delegate*)load("glCreateBuffers"); - contextPtr->glCreateFramebuffers = (delegate*)load("glCreateFramebuffers"); - contextPtr->glCreateProgramPipelines = (delegate*)load("glCreateProgramPipelines"); - contextPtr->glCreateQueries = (delegate*)load("glCreateQueries"); - contextPtr->glCreateRenderbuffers = (delegate*)load("glCreateRenderbuffers"); - contextPtr->glCreateSamplers = (delegate*)load("glCreateSamplers"); - contextPtr->glCreateTextures = (delegate*)load("glCreateTextures"); - contextPtr->glCreateTransformFeedbacks = (delegate*)load("glCreateTransformFeedbacks"); - contextPtr->glCreateVertexArrays = (delegate*)load("glCreateVertexArrays"); - contextPtr->glDisableVertexArrayAttrib = (delegate*)load("glDisableVertexArrayAttrib"); - contextPtr->glEnableVertexArrayAttrib = (delegate*)load("glEnableVertexArrayAttrib"); - contextPtr->glFlushMappedNamedBufferRange = (delegate*)load("glFlushMappedNamedBufferRange"); - contextPtr->glGenerateTextureMipmap = (delegate*)load("glGenerateTextureMipmap"); - contextPtr->glGetCompressedTextureImage = (delegate*)load("glGetCompressedTextureImage"); - contextPtr->glGetCompressedTextureSubImage = (delegate*)load("glGetCompressedTextureSubImage"); - contextPtr->glGetGraphicsResetStatus = (delegate*)load("glGetGraphicsResetStatus"); - contextPtr->glGetNamedBufferParameteri64v = (delegate*)load("glGetNamedBufferParameteri64v"); - contextPtr->glGetNamedBufferParameteriv = (delegate*)load("glGetNamedBufferParameteriv"); - contextPtr->glGetNamedBufferPointerv = (delegate*)load("glGetNamedBufferPointerv"); - contextPtr->glGetNamedBufferSubData = (delegate*)load("glGetNamedBufferSubData"); - contextPtr->glGetNamedFramebufferAttachmentParameteriv = (delegate*)load("glGetNamedFramebufferAttachmentParameteriv"); - contextPtr->glGetNamedFramebufferParameteriv = (delegate*)load("glGetNamedFramebufferParameteriv"); - contextPtr->glGetNamedRenderbufferParameteriv = (delegate*)load("glGetNamedRenderbufferParameteriv"); - contextPtr->glGetQueryBufferObjecti64v = (delegate*)load("glGetQueryBufferObjecti64v"); - contextPtr->glGetQueryBufferObjectiv = (delegate*)load("glGetQueryBufferObjectiv"); - contextPtr->glGetQueryBufferObjectui64v = (delegate*)load("glGetQueryBufferObjectui64v"); - contextPtr->glGetQueryBufferObjectuiv = (delegate*)load("glGetQueryBufferObjectuiv"); - contextPtr->glGetTextureImage = (delegate*)load("glGetTextureImage"); - contextPtr->glGetTextureLevelParameterfv = (delegate*)load("glGetTextureLevelParameterfv"); - contextPtr->glGetTextureLevelParameteriv = (delegate*)load("glGetTextureLevelParameteriv"); - contextPtr->glGetTextureParameterIiv = (delegate*)load("glGetTextureParameterIiv"); - contextPtr->glGetTextureParameterIuiv = (delegate*)load("glGetTextureParameterIuiv"); - contextPtr->glGetTextureParameterfv = (delegate*)load("glGetTextureParameterfv"); - contextPtr->glGetTextureParameteriv = (delegate*)load("glGetTextureParameteriv"); - contextPtr->glGetTextureSubImage = (delegate*)load("glGetTextureSubImage"); - contextPtr->glGetTransformFeedbacki64_v = (delegate*)load("glGetTransformFeedbacki64_v"); - contextPtr->glGetTransformFeedbacki_v = (delegate*)load("glGetTransformFeedbacki_v"); - contextPtr->glGetTransformFeedbackiv = (delegate*)load("glGetTransformFeedbackiv"); - contextPtr->glGetVertexArrayIndexed64iv = (delegate*)load("glGetVertexArrayIndexed64iv"); - contextPtr->glGetVertexArrayIndexediv = (delegate*)load("glGetVertexArrayIndexediv"); - contextPtr->glGetVertexArrayiv = (delegate*)load("glGetVertexArrayiv"); - contextPtr->glGetnCompressedTexImage = (delegate*)load("glGetnCompressedTexImage"); - contextPtr->glGetnTexImage = (delegate*)load("glGetnTexImage"); - contextPtr->glGetnUniformdv = (delegate*)load("glGetnUniformdv"); - contextPtr->glGetnUniformfv = (delegate*)load("glGetnUniformfv"); - contextPtr->glGetnUniformiv = (delegate*)load("glGetnUniformiv"); - contextPtr->glGetnUniformuiv = (delegate*)load("glGetnUniformuiv"); - contextPtr->glInvalidateNamedFramebufferData = (delegate*)load("glInvalidateNamedFramebufferData"); - contextPtr->glInvalidateNamedFramebufferSubData = (delegate*)load("glInvalidateNamedFramebufferSubData"); - contextPtr->glMapNamedBuffer = (delegate*)load("glMapNamedBuffer"); - contextPtr->glMapNamedBufferRange = (delegate*)load("glMapNamedBufferRange"); - contextPtr->glMemoryBarrierByRegion = (delegate*)load("glMemoryBarrierByRegion"); - contextPtr->glNamedBufferData = (delegate*)load("glNamedBufferData"); - contextPtr->glNamedBufferStorage = (delegate*)load("glNamedBufferStorage"); - contextPtr->glNamedBufferSubData = (delegate*)load("glNamedBufferSubData"); - contextPtr->glNamedFramebufferDrawBuffer = (delegate*)load("glNamedFramebufferDrawBuffer"); - contextPtr->glNamedFramebufferDrawBuffers = (delegate*)load("glNamedFramebufferDrawBuffers"); - contextPtr->glNamedFramebufferParameteri = (delegate*)load("glNamedFramebufferParameteri"); - contextPtr->glNamedFramebufferReadBuffer = (delegate*)load("glNamedFramebufferReadBuffer"); - contextPtr->glNamedFramebufferRenderbuffer = (delegate*)load("glNamedFramebufferRenderbuffer"); - contextPtr->glNamedFramebufferTexture = (delegate*)load("glNamedFramebufferTexture"); - contextPtr->glNamedFramebufferTextureLayer = (delegate*)load("glNamedFramebufferTextureLayer"); - contextPtr->glNamedRenderbufferStorage = (delegate*)load("glNamedRenderbufferStorage"); - contextPtr->glNamedRenderbufferStorageMultisample = (delegate*)load("glNamedRenderbufferStorageMultisample"); - contextPtr->glReadnPixels = (delegate*)load("glReadnPixels"); - contextPtr->glTextureBarrier = (delegate*)load("glTextureBarrier"); - contextPtr->glTextureBuffer = (delegate*)load("glTextureBuffer"); - contextPtr->glTextureBufferRange = (delegate*)load("glTextureBufferRange"); - contextPtr->glTextureParameterIiv = (delegate*)load("glTextureParameterIiv"); - contextPtr->glTextureParameterIuiv = (delegate*)load("glTextureParameterIuiv"); - contextPtr->glTextureParameterf = (delegate*)load("glTextureParameterf"); - contextPtr->glTextureParameterfv = (delegate*)load("glTextureParameterfv"); - contextPtr->glTextureParameteri = (delegate*)load("glTextureParameteri"); - contextPtr->glTextureParameteriv = (delegate*)load("glTextureParameteriv"); - contextPtr->glTextureStorage1D = (delegate*)load("glTextureStorage1D"); - contextPtr->glTextureStorage2D = (delegate*)load("glTextureStorage2D"); - contextPtr->glTextureStorage2DMultisample = (delegate*)load("glTextureStorage2DMultisample"); - contextPtr->glTextureStorage3D = (delegate*)load("glTextureStorage3D"); - contextPtr->glTextureStorage3DMultisample = (delegate*)load("glTextureStorage3DMultisample"); - contextPtr->glTextureSubImage1D = (delegate*)load("glTextureSubImage1D"); - contextPtr->glTextureSubImage2D = (delegate*)load("glTextureSubImage2D"); - contextPtr->glTextureSubImage3D = (delegate*)load("glTextureSubImage3D"); - contextPtr->glTransformFeedbackBufferBase = (delegate*)load("glTransformFeedbackBufferBase"); - contextPtr->glTransformFeedbackBufferRange = (delegate*)load("glTransformFeedbackBufferRange"); - contextPtr->glUnmapNamedBuffer = (delegate*)load("glUnmapNamedBuffer"); - contextPtr->glVertexArrayAttribBinding = (delegate*)load("glVertexArrayAttribBinding"); - contextPtr->glVertexArrayAttribFormat = (delegate*)load("glVertexArrayAttribFormat"); - contextPtr->glVertexArrayAttribIFormat = (delegate*)load("glVertexArrayAttribIFormat"); - contextPtr->glVertexArrayAttribLFormat = (delegate*)load("glVertexArrayAttribLFormat"); - contextPtr->glVertexArrayBindingDivisor = (delegate*)load("glVertexArrayBindingDivisor"); - contextPtr->glVertexArrayElementBuffer = (delegate*)load("glVertexArrayElementBuffer"); - contextPtr->glVertexArrayVertexBuffer = (delegate*)load("glVertexArrayVertexBuffer"); - contextPtr->glVertexArrayVertexBuffers = (delegate*)load("glVertexArrayVertexBuffers"); + contextPtr->glBindTextureUnit = ( delegate* )load( + "glBindTextureUnit" ); + contextPtr->glBlitNamedFramebuffer = ( delegate* )load( + "glBlitNamedFramebuffer" ); + contextPtr->glCheckNamedFramebufferStatus = ( delegate* )load( + "glCheckNamedFramebufferStatus" ); + contextPtr->glClearNamedBufferData = ( delegate* )load( + "glClearNamedBufferData" ); + contextPtr->glClearNamedBufferSubData = ( delegate* )load( + "glClearNamedBufferSubData" ); + contextPtr->glClearNamedFramebufferfi = ( delegate* )load( + "glClearNamedFramebufferfi" ); + contextPtr->glClearNamedFramebufferfv = ( delegate* )load( + "glClearNamedFramebufferfv" ); + contextPtr->glClearNamedFramebufferiv = ( delegate* )load( + "glClearNamedFramebufferiv" ); + contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( + "glClearNamedFramebufferuiv" ); + contextPtr->glClipControl = ( delegate* )load( + "glClipControl" ); + contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( + "glCompressedTextureSubImage1D" ); + contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( + "glCompressedTextureSubImage2D" ); + contextPtr->glCompressedTextureSubImage3D = ( delegate* )load( + "glCompressedTextureSubImage3D" ); + contextPtr->glCopyNamedBufferSubData = ( delegate* )load( + "glCopyNamedBufferSubData" ); + contextPtr->glCopyTextureSubImage1D = ( delegate* )load( + "glCopyTextureSubImage1D" ); + contextPtr->glCopyTextureSubImage2D = ( delegate* )load( + "glCopyTextureSubImage2D" ); + contextPtr->glCopyTextureSubImage3D = ( delegate* )load( + "glCopyTextureSubImage3D" ); + contextPtr->glCreateBuffers = ( delegate* )load( + "glCreateBuffers" ); + contextPtr->glCreateFramebuffers = ( delegate* )load( + "glCreateFramebuffers" ); + contextPtr->glCreateProgramPipelines = ( delegate* )load( + "glCreateProgramPipelines" ); + contextPtr->glCreateQueries = ( delegate* )load( + "glCreateQueries" ); + contextPtr->glCreateRenderbuffers = ( delegate* )load( + "glCreateRenderbuffers" ); + contextPtr->glCreateSamplers = ( delegate* )load( + "glCreateSamplers" ); + contextPtr->glCreateTextures = ( delegate* )load( + "glCreateTextures" ); + contextPtr->glCreateTransformFeedbacks = ( delegate* )load( + "glCreateTransformFeedbacks" ); + contextPtr->glCreateVertexArrays = ( delegate* )load( + "glCreateVertexArrays" ); + contextPtr->glDisableVertexArrayAttrib = ( delegate* )load( + "glDisableVertexArrayAttrib" ); + contextPtr->glEnableVertexArrayAttrib = ( delegate* )load( + "glEnableVertexArrayAttrib" ); + contextPtr->glFlushMappedNamedBufferRange = ( delegate* )load( + "glFlushMappedNamedBufferRange" ); + contextPtr->glGenerateTextureMipmap = ( delegate* )load( + "glGenerateTextureMipmap" ); + contextPtr->glGetCompressedTextureImage = ( delegate* )load( + "glGetCompressedTextureImage" ); + contextPtr->glGetCompressedTextureSubImage = ( delegate* )load( + "glGetCompressedTextureSubImage" ); + contextPtr->glGetGraphicsResetStatus = ( delegate* )load( + "glGetGraphicsResetStatus" ); + contextPtr->glGetNamedBufferParameteri64v = ( delegate* )load( + "glGetNamedBufferParameteri64v" ); + contextPtr->glGetNamedBufferParameteriv = ( delegate* )load( + "glGetNamedBufferParameteriv" ); + contextPtr->glGetNamedBufferPointerv = ( delegate* )load( + "glGetNamedBufferPointerv" ); + contextPtr->glGetNamedBufferSubData = ( delegate* )load( + "glGetNamedBufferSubData" ); + contextPtr->glGetNamedFramebufferAttachmentParameteriv = ( delegate* )load( + "glGetNamedFramebufferAttachmentParameteriv" ); + contextPtr->glGetNamedFramebufferParameteriv = ( delegate* )load( + "glGetNamedFramebufferParameteriv" ); + contextPtr->glGetNamedRenderbufferParameteriv = ( delegate* )load( + "glGetNamedRenderbufferParameteriv" ); + contextPtr->glGetQueryBufferObjecti64v = ( delegate* )load( + "glGetQueryBufferObjecti64v" ); + contextPtr->glGetQueryBufferObjectiv = ( delegate* )load( + "glGetQueryBufferObjectiv" ); + contextPtr->glGetQueryBufferObjectui64v = ( delegate* )load( + "glGetQueryBufferObjectui64v" ); + contextPtr->glGetQueryBufferObjectuiv = ( delegate* )load( + "glGetQueryBufferObjectuiv" ); + contextPtr->glGetTextureImage = ( delegate* )load( + "glGetTextureImage" ); + contextPtr->glGetTextureLevelParameterfv = ( delegate* )load( + "glGetTextureLevelParameterfv" ); + contextPtr->glGetTextureLevelParameteriv = ( delegate* )load( + "glGetTextureLevelParameteriv" ); + contextPtr->glGetTextureParameterIiv = ( delegate* )load( + "glGetTextureParameterIiv" ); + contextPtr->glGetTextureParameterIuiv = ( delegate* )load( + "glGetTextureParameterIuiv" ); + contextPtr->glGetTextureParameterfv = ( delegate* )load( + "glGetTextureParameterfv" ); + contextPtr->glGetTextureParameteriv = ( delegate* )load( + "glGetTextureParameteriv" ); + contextPtr->glGetTextureSubImage = ( delegate* )load( + "glGetTextureSubImage" ); + contextPtr->glGetTransformFeedbacki64_v = ( delegate* )load( + "glGetTransformFeedbacki64_v" ); + contextPtr->glGetTransformFeedbacki_v = ( delegate* )load( + "glGetTransformFeedbacki_v" ); + contextPtr->glGetTransformFeedbackiv = ( delegate* )load( + "glGetTransformFeedbackiv" ); + contextPtr->glGetVertexArrayIndexed64iv = ( delegate* )load( + "glGetVertexArrayIndexed64iv" ); + contextPtr->glGetVertexArrayIndexediv = ( delegate* )load( + "glGetVertexArrayIndexediv" ); + contextPtr->glGetVertexArrayiv = ( delegate* )load( + "glGetVertexArrayiv" ); + contextPtr->glGetnCompressedTexImage = ( delegate* )load( + "glGetnCompressedTexImage" ); + contextPtr->glGetnTexImage = ( delegate* )load( + "glGetnTexImage" ); + contextPtr->glGetnUniformdv = ( delegate* )load( + "glGetnUniformdv" ); + contextPtr->glGetnUniformfv = ( delegate* )load( + "glGetnUniformfv" ); + contextPtr->glGetnUniformiv = ( delegate* )load( + "glGetnUniformiv" ); + contextPtr->glGetnUniformuiv = ( delegate* )load( + "glGetnUniformuiv" ); + contextPtr->glInvalidateNamedFramebufferData = ( delegate* )load( + "glInvalidateNamedFramebufferData" ); + contextPtr->glInvalidateNamedFramebufferSubData = ( delegate* )load( + "glInvalidateNamedFramebufferSubData" ); + contextPtr->glMapNamedBuffer = ( delegate* )load( + "glMapNamedBuffer" ); + contextPtr->glMapNamedBufferRange = ( delegate* )load( + "glMapNamedBufferRange" ); + contextPtr->glMemoryBarrierByRegion = ( delegate* )load( + "glMemoryBarrierByRegion" ); + contextPtr->glNamedBufferData = ( delegate* )load( + "glNamedBufferData" ); + contextPtr->glNamedBufferStorage = ( delegate* )load( + "glNamedBufferStorage" ); + contextPtr->glNamedBufferSubData = ( delegate* )load( + "glNamedBufferSubData" ); + contextPtr->glNamedFramebufferDrawBuffer = ( delegate* )load( + "glNamedFramebufferDrawBuffer" ); + contextPtr->glNamedFramebufferDrawBuffers = ( delegate* )load( + "glNamedFramebufferDrawBuffers" ); + contextPtr->glNamedFramebufferParameteri = ( delegate* )load( + "glNamedFramebufferParameteri" ); + contextPtr->glNamedFramebufferReadBuffer = ( delegate* )load( + "glNamedFramebufferReadBuffer" ); + contextPtr->glNamedFramebufferRenderbuffer = ( delegate* )load( + "glNamedFramebufferRenderbuffer" ); + contextPtr->glNamedFramebufferTexture = ( delegate* )load( + "glNamedFramebufferTexture" ); + contextPtr->glNamedFramebufferTextureLayer = ( delegate* )load( + "glNamedFramebufferTextureLayer" ); + contextPtr->glNamedRenderbufferStorage = ( delegate* )load( + "glNamedRenderbufferStorage" ); + contextPtr->glNamedRenderbufferStorageMultisample = ( delegate* )load( + "glNamedRenderbufferStorageMultisample" ); + contextPtr->glReadnPixels = ( delegate* )load( + "glReadnPixels" ); + contextPtr->glTextureBarrier = ( delegate* )load( + "glTextureBarrier" ); + contextPtr->glTextureBuffer = ( delegate* )load( + "glTextureBuffer" ); + contextPtr->glTextureBufferRange = ( delegate* )load( + "glTextureBufferRange" ); + contextPtr->glTextureParameterIiv = ( delegate* )load( + "glTextureParameterIiv" ); + contextPtr->glTextureParameterIuiv = ( delegate* )load( + "glTextureParameterIuiv" ); + contextPtr->glTextureParameterf = ( delegate* )load( + "glTextureParameterf" ); + contextPtr->glTextureParameterfv = ( delegate* )load( + "glTextureParameterfv" ); + contextPtr->glTextureParameteri = ( delegate* )load( + "glTextureParameteri" ); + contextPtr->glTextureParameteriv = ( delegate* )load( + "glTextureParameteriv" ); + contextPtr->glTextureStorage1D = ( delegate* )load( + "glTextureStorage1D" ); + contextPtr->glTextureStorage2D = ( delegate* )load( + "glTextureStorage2D" ); + contextPtr->glTextureStorage2DMultisample = ( delegate* )load( + "glTextureStorage2DMultisample" ); + contextPtr->glTextureStorage3D = ( delegate* )load( + "glTextureStorage3D" ); + contextPtr->glTextureStorage3DMultisample = ( delegate* )load( + "glTextureStorage3DMultisample" ); + contextPtr->glTextureSubImage1D = ( delegate* )load( + "glTextureSubImage1D" ); + contextPtr->glTextureSubImage2D = ( delegate* )load( + "glTextureSubImage2D" ); + contextPtr->glTextureSubImage3D = ( delegate* )load( + "glTextureSubImage3D" ); + contextPtr->glTransformFeedbackBufferBase = ( delegate* )load( + "glTransformFeedbackBufferBase" ); + contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( + "glTransformFeedbackBufferRange" ); + contextPtr->glUnmapNamedBuffer = ( delegate* )load( + "glUnmapNamedBuffer" ); + contextPtr->glVertexArrayAttribBinding = ( delegate* )load( + "glVertexArrayAttribBinding" ); + contextPtr->glVertexArrayAttribFormat = ( delegate* )load( + "glVertexArrayAttribFormat" ); + contextPtr->glVertexArrayAttribIFormat = ( delegate* )load( + "glVertexArrayAttribIFormat" ); + contextPtr->glVertexArrayAttribLFormat = ( delegate* )load( + "glVertexArrayAttribLFormat" ); + contextPtr->glVertexArrayBindingDivisor = ( delegate* )load( + "glVertexArrayBindingDivisor" ); + contextPtr->glVertexArrayElementBuffer = ( delegate* )load( + "glVertexArrayElementBuffer" ); + contextPtr->glVertexArrayVertexBuffer = ( delegate* )load( + "glVertexArrayVertexBuffer" ); + contextPtr->glVertexArrayVertexBuffers = ( delegate* )load( + "glVertexArrayVertexBuffers" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.5 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.5 APIs" ); } - internal static unsafe void LoadGLcore46(OpenglContext* contextPtr, delegate* load) + internal static unsafe void LoadGLcore46( + OpenglContext* contextPtr, + delegate* load ) { - if (!core46) - { - InternalIO.InternalAppendLog("The core version 4.6 is not supported."); - throw new Exception("Final Version"); + if( !core46 ) { + InternalIO.InternalAppendLog( + "The core version 4.6 is not supported." ); + throw new Exception( "Final Version" ); } #region load - contextPtr->glMultiDrawArraysIndirectCount = (delegate*)load("glMultiDrawArraysIndirectCount"); - contextPtr->glMultiDrawElementsIndirectCount = (delegate*)load("glMultiDrawElementsIndirectCount"); - contextPtr->glPolygonOffsetClamp = (delegate*)load("glPolygonOffsetClamp"); - contextPtr->glSpecializeShader = (delegate*)load("glSpecializeShader"); + contextPtr->glMultiDrawArraysIndirectCount = ( delegate* )load( + "glMultiDrawArraysIndirectCount" ); + contextPtr->glMultiDrawElementsIndirectCount = ( delegate* )load( + "glMultiDrawElementsIndirectCount" ); + contextPtr->glPolygonOffsetClamp = ( delegate* )load( + "glPolygonOffsetClamp" ); + contextPtr->glSpecializeShader = ( delegate* )load( + "glSpecializeShader" ); #endregion load - InternalIO.InternalAppendLog("Successfully load all OpenGL 4.6 APIs"); + InternalIO.InternalAppendLog( + "Successfully load all OpenGL 4.6 APIs" ); } } diff --git a/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs b/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs index 40ca87ef..f3ccd5c3 100644 --- a/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs +++ b/源代码/StgSharp/Graphics/OpenGL/glApiManagerConst.cs @@ -36,6 +36,7 @@ namespace StgSharp.Graphics.OpenGL { public static partial class glManager { + #region coreVersion private static bool core10 = false; @@ -682,8 +683,6 @@ namespace StgSharp.Graphics.OpenGL private static bool WIN_phong_shading; private static bool WIN_specular_fog; - #endregion - } } diff --git a/源代码/StgSharp/Graphics/OpenGL/glFucntionSourceManager.cs b/源代码/StgSharp/Graphics/OpenGL/glFucntionSourceManager.cs new file mode 100644 index 00000000..bc2231fa --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glFucntionSourceManager.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glFucntionSourceManager.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp; + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class OpenGLFunction + { + + private Lazy textureUnitCountGetter; + private Lazy> unusedTextureImageUintInitilizing; + + public int TextureUnitCount + { + get => textureUnitCountGetter.Value; + } + + private ConcurrentQueue UnusedTextureImageUint + { + get => unusedTextureImageUintInitilizing.Value; + } + + internal void ReturnAvailableUnit( IEnumerable source ) + { + int v = GLconst.TEXTURE0 + TextureUnitCount; + foreach( TextureUnit unit in source ) { + if( ( int )unit > v ) { + throw new InvalidOperationException( + "Source contains texture unit beyond context support." ); + } + } + } + + internal int TryGetAvailableTextureUnit( + int count, + out IEnumerable result ) + { + result = new Queue(); + for( int i = 0; i < count; i++ ) { + if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) { + ( result as Queue )!.Enqueue( unit ); + } else { + return i; + } + } + return count; + } + + private ConcurrentQueue InitializeUnusedTextureImageUint() + { + ConcurrentQueue result = new ConcurrentQueue( + ); + for( int index = 0; index < TextureUnitCount; index++ ) { + result.Enqueue( ( TextureUnit )( GLconst.TEXTURE0 + index ) ); + } + return result; + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/glFunction.cs b/源代码/StgSharp/Graphics/OpenGL/glFunction.cs index 175b8a5b..3097e8ae 100644 --- a/源代码/StgSharp/Graphics/OpenGL/glFunction.cs +++ b/源代码/StgSharp/Graphics/OpenGL/glFunction.cs @@ -40,246 +40,286 @@ using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; using System.Runtime.InteropServices; using System.Text; +using System.Threading; namespace StgSharp { internal static unsafe partial class InternalIO { - [DllImport(SSC_libName, EntryPoint = "glCheckShaderStat", - CallingConvention = CallingConvention.Cdecl)] -#pragma warning disable CA5392 - internal static extern int glCheckShaderStatus(ref OpenglContext context, uint shaderHandle, int key, ref IntPtr logPtr); + [DllImport( + SSC_libName, + EntryPoint = "glCheckShaderStat", + CallingConvention = CallingConvention.Cdecl )] + #pragma warning disable CA5392 + internal static extern int glCheckShaderStatus( + ref OpenglContext context, + uint shaderHandle, + int key, + ref IntPtr logPtr ); #pragma warning restore CA5392 - - } } namespace StgSharp.Graphics.OpenGL { - - public unsafe partial class OpenGLFunction { - private static Dictionary contextToGLMap = new Dictionary(); + private static Dictionary contextToGLMap = new Dictionary( + ); + private static ThreadLocal _currentGL = new ThreadLocal( + ); private OpenglContext* _context; + private Lazy _attachmentColorRange; + private OpenGLFunction() { - textureUnitCountGetter = new Lazy(() => GetMaskInteger(GLconst.MAX_TEXTURE_IMAGE_UNITS)); - unusedTextureImageUintInitilizing = new Lazy>(InitializeUnusedTextureImageUint); + textureUnitCountGetter = new Lazy( + () => GetMaskInteger( GLconst.MAX_TEXTURE_IMAGE_UNITS ) ); + unusedTextureImageUintInitilizing = new Lazy>( + InitializeUnusedTextureImageUint ); + _attachmentColorRange = new Lazy( + () => { + return GetMaskInteger( + ( uint )GLconst.MAX_COLOR_ATTACHMENTS ); + } ); } - internal IntPtr ContextHandle => (IntPtr)_context; + public int AttachmentColorRange + { + get => _attachmentColorRange.Value; + } - internal static OpenGLFunction CurrentGL { get; set; } + public static OpenGLFunction CurrentGL + { + get { return _currentGL.Value; } + internal set { _currentGL.Value = value; } + } + + internal IntPtr ContextHandle => ( IntPtr )_context; protected ref OpenglContext Context { get { -#if DEBUG - if ((IntPtr)_context == IntPtr.Zero) - { + #if DEBUG + if( ( IntPtr )_context == IntPtr.Zero ) { throw new NullReferenceException(); } -#endif - return ref (*_context); + #endif + return ref ( *_context ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void ActiveTextureUnit(uint type) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void ActiveTextureUnit( uint type ) { - Context.glActiveTexture(type); + Context.glActiveTexture( type ); } - [Conditional("DEBUG")] - public void Assert(bool shouldReportWhenNormal) + [Conditional( "DEBUG" )] + public void Assert( bool shouldReportWhenNormal ) { - try - { - uint code = Context.glGetError(); - if (code != GLconst.NO_ERROR) - { - throw new GlExecutionException(code); - } - if (shouldReportWhenNormal) - { - Console.WriteLine("OpenGL runs normally"); - } + uint code = Context.glGetError(); + if( code != GLconst.NO_ERROR ) { + throw new GlExecutionException( code ); } - catch (GlExecutionException ex) - { - throw ex; + if( shouldReportWhenNormal ) { + Console.WriteLine( "OpenGL runs normally" ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void AttachShader(GlHandle program, GlHandle shader) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void AttachShader( GlHandle program, GlHandle shader ) { - Context.glAttachShader(program.Value, shader.Value); + Context.glAttachShader( program.Value, shader.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindBuffer(BufferType bufferType, GlHandle handle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindBuffer( BufferType bufferType, GlHandle handle ) { - Context.glBindBuffer((uint)bufferType, handle.Value); + Context.glBindBuffer( ( uint )bufferType, handle.Value ); } /// - /// Bind a frame buffer to a frame buffer target - /// Same function as glBindFramebuffer. + /// Bind a frame buffer to a frame buffer target Same function as glBindFramebuffer. /// - /// The frame buffer target of the binding operation. - /// The handle of the frame buffer object to bind. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindFrameBuffer(FrameBufferTarget target, GlHandle handle) + /// The frame buffer target of the binding operation. + /// The handle of the frame buffer object to bind. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindFrameBuffer( FrameBufferTarget target, GlHandle handle ) { - Context.glBindFramebuffer((uint)target, handle.Value); + Context.glBindFramebuffer( ( uint )target, handle.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindRenderBuffer(GlHandle handle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindRenderBuffer( GlHandle handle ) { - Context.glBindRenderbuffer(GLconst.RENDERBUFFER, handle.Value); + Context.glBindRenderbuffer( GLconst.RENDERBUFFER, handle.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindTexture(uint type, GlHandle texture) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindTexture( uint type, GlHandle texture ) { - Context.glBindTexture(type, texture.Value); + Context.glBindTexture( type, texture.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void BindVertexArray(GlHandle handle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void BindVertexArray( GlHandle handle ) { - Context.glBindVertexArray(handle.Value); + Context.glBindVertexArray( handle.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public FrameBufferStatus CheckFrameBufferStatus(FrameBufferTarget target) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public FrameBufferStatus CheckFrameBufferStatus( + FrameBufferTarget target ) { - return (FrameBufferStatus)Context.glCheckFramebufferStatus((uint)target); + return ( FrameBufferStatus )Context.glCheckFramebufferStatus( + ( uint )target ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Clear(MaskBufferBit mask) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Clear( MaskBufferBit mask ) { - Context.glClear((uint)mask); + Context.glClear( ( uint )mask ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void ClearColor(float R, float G, float B, float A) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void ClearColor( float R, float G, float B, float A ) { - Context.glClearColor(R, G, B, A); + Context.glClearColor( R, G, B, A ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void ClearError() { - while (Context.glGetError() != 0) { } + uint code = 0; + for( int i = 0; i < 1024; i++ ) { + code = Context.glGetError(); + if( code == 0 ) { + return; + } + + //Console.WriteLine(code); + } + foreach( ProcessThread thread in Process.GetCurrentProcess().Threads ) { + Debugger.Break(); + } + throw new GlErrorOverflowException( 1024, code ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void ClearGraphicError() { - while (Context.glGetError() != 0) { } + while( Context.glGetError() != 0 ) { } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CombineFrameBufferRenderBuffer(FrameBufferAttachment attachment, GlHandle rboHandle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CombineFrameBufferRenderBuffer( + FrameBufferAttachment attachment, + GlHandle rboHandle ) { - Context.glFramebufferRenderbuffer(GLconst.FRAMEBUFFER, (uint)attachment, GLconst.RENDERBUFFER, rboHandle.Value); + Context.glFramebufferRenderbuffer( + GLconst.FRAMEBUFFER, ( uint )attachment, GLconst.RENDERBUFFER, + rboHandle.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompileShader(GlHandle shaderhandle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompileShader( GlHandle shaderhandle ) { - Context.glCompileShader(shaderhandle.Value); + Context.glCompileShader( shaderhandle.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe GlHandle CreateGraphicProgram() { - return GlHandle.Alloc(Context.glCreateProgram()); + return GlHandle.Alloc( Context.glCreateProgram() ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public GlHandle CreateProgram() { - return GlHandle.Alloc(Context.glCreateProgram()); + return GlHandle.Alloc( Context.glCreateProgram() ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] CreateProgram(int count) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] CreateProgram( int count ) { GlHandle[] h = new GlHandle[count]; - for (int i = 0; i < count; i++) - { - h.SetValue(i, Context.glCreateProgram()); + for( int i = 0; i < count; i++ ) { + h.SetValue( i, Context.glCreateProgram() ); } return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public GlHandle[] CreateShaderSet(int count, ShaderType type) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public GlHandle[] CreateShaderSet( int count, ShaderType type ) { GlHandle[] ret = new GlHandle[count]; - uint t = (uint)type; - for (int i = 0; i < count; i++) - { - uint id = Context.glCreateShader(t); - if (id == 0) - { + uint t = ( uint )type; + for( int i = 0; i < count; i++ ) { + uint id = Context.glCreateShader( t ); + if( id == 0 ) { uint error = Context.glGetError(); - throw new InvalidOperationException($"Failed in creating shader: {error}"); + throw new InvalidOperationException( + $"Failed in creating shader: {error}" ); } - ret[i] = GlHandle.Alloc(id); + ret[ i ] = GlHandle.Alloc( id ); } return ret; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffer(GlHandle handle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteBuffer( GlHandle handle ) { - Context.glDeleteBuffers(1, (uint*)&handle); + Context.glDeleteBuffers( 1, ( uint* )&handle ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteBuffers(GlHandle[] handle) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteBuffers( GlHandle[] handle ) { - if ((handle == null) || (handle.Length == 0)) - { - throw new ArgumentNullException(nameof(handle)); + if( ( handle == null ) || ( handle.Length == 0 ) ) { + throw new ArgumentNullException( nameof( handle ) ); } - fixed (GlHandle* hptr = handle) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < handle.Length; i++) - { - Context.glDeleteBuffers(1, iptr + i); + fixed( GlHandle* hptr = handle ) { + uint* iptr = ( uint* )hptr; + for( int i = 0; i < handle.Length; i++ ) { + Context.glDeleteBuffers( 1, iptr + i ); } } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DeleteVertexArrays(GlHandle[] arrays) + /// + /// Delete a render buffer object Very simlilar function as glDeleteRenderbuffers. The only + /// deifference is that this mehtod can only delete one renderbuffer at the same time. + /// + /// Handle to buffer to delete. + public unsafe void DeleteRenderBuffer( GlHandle bufferHandle ) { - fixed (GlHandle* hptr = arrays) - { - uint* iptr = (uint*)hptr; - for (int i = 0; i < arrays.Length; i++) - { - Context.glDeleteVertexArrays(1, iptr + i); + Context.glDeleteRenderbuffers( 1, &bufferHandle.Value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DeleteVertexArrays( GlHandle[] arrays ) + { + fixed( GlHandle* hptr = arrays ) { + uint* iptr = ( uint* )hptr; + for( int i = 0; i < arrays.Length; i++ ) { + Context.glDeleteVertexArrays( 1, iptr + i ); } } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void DrawElements(GeometryType mode, uint count, TypeCode type, IntPtr ptr) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DrawElements( + GeometryType mode, + uint count, + TypeCode type, + IntPtr ptr ) { uint a; a = type switch @@ -288,19 +328,21 @@ namespace StgSharp.Graphics.OpenGL TypeCode.UInt16 => GLconst.UNSIGNED_SHORT, TypeCode.Byte => GLconst.UNSIGNED_BYTE, _ => throw new ArgumentException( - $"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}") + $"{$"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}"}{$"{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}"}" ) }; - Context.glDrawElements((uint)mode, count, a, (void*)ptr); + Context.glDrawElements( ( uint )mode, count, a, ( void* )ptr ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void DrawElementsInstanced( - GeometryType mode, uint count, TypeCode type, IntPtr ptr, uint amount - ) + GeometryType mode, + uint count, + TypeCode type, + IntPtr ptr, + uint amount ) { uint a; - switch (type) - { + switch( type ) { case TypeCode.UInt32: a = GLconst.UNSIGNED_INT; break; @@ -316,434 +358,489 @@ namespace StgSharp.Graphics.OpenGL default: InternalIO.InternalWriteLog( $"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}", - LogType.Error); + LogType.Error ); return; } - Context.glDrawElementsInstanced((uint)mode, count, a, (void*)ptr, amount); + Context.glDrawElementsInstanced( + ( uint )mode, count, a, ( void* )ptr, amount ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Enable(GLOperation operation) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Enable( GLOperation operation ) { - Context.glEnable((uint)operation); + Context.glEnable( ( uint )operation ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void FrameBufferTexture2d(FrameBufferTarget target, uint attachment, Texture2DTarget texTarget, GlHandle textureHandle, int level) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void FrameBufferTexture2d( + FrameBufferTarget target, + uint attachment, + Texture2DTarget texTarget, + GlHandle textureHandle, + int level ) { Context.glFramebufferTexture2D( - (uint)target, attachment, (uint)texTarget, textureHandle.Value, level - ); + ( uint )target, attachment, ( uint )texTarget, + textureHandle.Value, level ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenBuffers(int count) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenBuffers( int count ) { GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - for (int i = 0; i < count; i++) - { - Context.glGenBuffers(count, ((uint*)hptr) + i); + fixed( GlHandle* hptr = h ) { + for( int i = 0; i < count; i++ ) { + Context.glGenBuffers( count, ( ( uint* )hptr ) + i ); } } return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void GenerateMipmap(Texture2DTarget target) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void GenerateMipmap( Texture2DTarget target ) { - Context.glGenerateMipmap((uint)target); + Context.glGenerateMipmap( ( uint )target ); } - public unsafe GlHandle[] GenFrameBuffers(int count) + public unsafe GlHandle[] GenFrameBuffers( int count ) { GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - Context.glGenFramebuffers(1, (uint*)hptr); + fixed( GlHandle* hptr = h ) { + Context.glGenFramebuffers( 1, ( uint* )hptr ); } return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenRenderBuffer(int count) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenRenderBuffer( int count ) { GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - Context.glGenRenderbuffers(count, (uint*)hptr); + fixed( GlHandle* hptr = h ) { + Context.glGenRenderbuffers( count, ( uint* )hptr ); } return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle[] GenTextures(int count) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle[] GenTextures( int count ) { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - Context.glGenTextures(count, (uint*)hptr); + fixed( GlHandle* hptr = h ) { + Context.glGenTextures( count, ( uint* )hptr ); } return h; } - - public unsafe GlHandle[] GenVertexArrays(int count) + public unsafe GlHandle[] GenVertexArrays( int count ) { - GlHandle[] h = new GlHandle[count]; - fixed (GlHandle* hptr = h) - { - Context.glGenVertexArrays(count, (uint*)hptr); + fixed( GlHandle* hptr = h ) { + Context.glGenVertexArrays( count, ( uint* )hptr ); } return h; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public uint GetError() { return Context.glGetError(); } - public unsafe int GetMaskInteger(uint statusCode) + public unsafe int GetMaskInteger( uint statusCode ) { int ret = 0; - Context.glGetIntegerv(statusCode, &ret); + Context.glGetIntegerv( statusCode, &ret ); return ret; } - public string GetShaderStatus(Shader s, int index, int key) + public string GetShaderStatus( Shader s, int index, int key ) { IntPtr sptr = IntPtr.Zero; - if (InternalIO.glCheckShaderStatus(ref Context, s.handle[index].Value, key, ref sptr) == 0) - { - return Marshal.PtrToStringAnsi(sptr); + if( InternalIO.glCheckShaderStatus( + ref Context, s.handle[ index ].Value, key, ref sptr ) == 0 ) { + return Marshal.PtrToStringAnsi( sptr ); } return string.Empty; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void GetTextureImage(Texture2DTarget target, int level, ImageChannel channel, PixelChannelLayout channelLayout, T[] dataStream) - where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void GetTextureImage( + Texture2DTarget target, + int level, + ImageChannel channel, + PixelChannelLayout channelLayout, + T[] dataStream ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { -#pragma warning disable CS8500 - fixed (T* tptr = dataStream) - { - Context.glGetTexImage((uint)target, level, (uint)channel, (uint)channelLayout, tptr); + #pragma warning disable CS8500 + fixed( T* tptr = dataStream ) { + Context.glGetTexImage( + ( uint )target, level, ( uint )channel, + ( uint )channelLayout, tptr ); } -#pragma warning restore CS8500 + #pragma warning restore CS8500 } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe GlHandle GetUniformLocation(GlHandle program, string name) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void GetTextureLevelProperty( + uint textureTypeMask, + int level, + uint propertyMask, + out int propertyValue ) { - byte[] code = Encoding.UTF8.GetBytes(name); - fixed (byte* ptr = code) - { - int ret = Context.glGetUniformLocation(program.Value, ptr); -#if DEBUG - if ((ret == GLconst.INVALID_OPERATION) || - (ret == GLconst.INVALID_VALUE)) - { + fixed( int* iptr = &propertyValue ) { + Context.glGetTexLevelParameteriv( + textureTypeMask, level, propertyMask, iptr ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe GlHandle GetUniformLocation( + GlHandle program, + string name ) + { + byte[] code = Encoding.UTF8.GetBytes( name ); + fixed( byte* ptr = code ) { + int ret = Context.glGetUniformLocation( program.Value, ptr ); + #if DEBUG + if( ( ret == GLconst.INVALID_OPERATION ) || ( ret == GLconst.INVALID_VALUE ) ) { throw new InvalidOperationException(); } - if (ret == -1) - { - throw new UniformEmptyReferenceException(nameof(program), name); + if( ret == -1 ) { + throw new UniformEmptyReferenceException( + nameof( program ), name ); } -#endif - return GlHandle.SignedAlloc(ret); + #endif + return GlHandle.SignedAlloc( ret ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void LoadShaderSource(GlHandle shaderHandle, byte[] codeStream) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void LoadShaderSource( + GlHandle shaderHandle, + byte[] codeStream ) { - fixed (byte* streamPtr = codeStream) - { - Context.glShaderSource(shaderHandle.Value, 1, &streamPtr, (void*)0); + fixed( byte* streamPtr = codeStream ) { + Context.glShaderSource( + shaderHandle.Value, 1, &streamPtr, ( void* )0 ); } } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void ReadPixels( - (int X, int Y) beginPosition, (int width, int height) size, FrameBufferChannel format, PixelChannelLayout dataType, ref byte[] stream - ) + (int X, int Y) beginPosition, + (int width, int height) size, + FrameBufferChannel format, + PixelChannelLayout dataType, + ref byte[] stream ) { - fixed (byte* bptr = stream) - { + fixed( byte* bptr = stream ) { Context.glReadPixels( - beginPosition.X, beginPosition.Y, - size.width, size.height, (uint)format, (uint)dataType, bptr); + beginPosition.X, beginPosition.Y, size.width, size.height, + ( uint )format, ( uint )dataType, bptr ); } } public void RereadImage( - in Image i, (int X, int Y) beginPosition, FrameBufferChannel format, PixelChannelLayout dataType) + in Image i, + (int X, int Y) beginPosition, + FrameBufferChannel format, + PixelChannelLayout dataType ) { byte[] pixels = i.PixelBuffer; - if (!pixels.CheckArrayFormat(dataType)) - { - throw new GlArrayFormatException(dataType, "i.PixelArray"); + if( !pixels.CheckArrayFormat( dataType ) ) { + throw new GlArrayFormatException( dataType, "i.PixelArray" ); } - fixed (byte* bptr = pixels) - { + fixed( byte* bptr = pixels ) { Context.glReadPixels( - beginPosition.X, beginPosition.Y, i.Width, i.Height, (uint)format, (uint)dataType, bptr); + beginPosition.X, beginPosition.Y, i.Width, i.Height, + ( uint )format, ( uint )dataType, bptr ); } i.PixelUpdateCount++; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, T bufferData, BufferUsage usage) - where T : struct + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + T bufferData, + BufferUsage usage ) + where T: struct { int size = Marshal.SizeOf(); -#pragma warning disable CS8500 + #pragma warning disable CS8500 T* p = &bufferData; -#pragma warning restore CS8500 + #pragma warning restore CS8500 Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)p, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )p, + ( uint )usage ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, T[] bufferArray, BufferUsage usage) - where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) - { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { return; } -#pragma warning disable CS8500 - fixed (void* bufferPtr = bufferArray) -#pragma warning restore CS8500 - { + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)bufferPtr, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); } } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, ReadOnlySpan bufferArray, BufferUsage usage) - where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + ReadOnlySpan bufferArray, + BufferUsage usage ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) - { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { return; } -#pragma warning disable CS8500 - fixed (void* bufferPtr = bufferArray) -#pragma warning restore CS8500 - { + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)bufferPtr, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); } } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferData(BufferType bufferType, Span bufferArray, BufferUsage usage) - where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferData( + BufferType bufferType, + Span bufferArray, + BufferUsage usage ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) - { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { return; } -#pragma warning disable CS8500 - fixed (void* bufferPtr = &bufferArray.GetPinnableReference()) -#pragma warning restore CS8500 - { + #pragma warning disable CS8500 + fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + #pragma warning restore CS8500 + { Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)bufferPtr, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); } } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData(BufferType bufferType, ReadOnlySpan bufferArray, BufferUsage usage) - where T : struct, IVector + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferVectorData( + BufferType bufferType, + ReadOnlySpan bufferArray, + BufferUsage usage ) + where T: struct, IVector { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) - { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { return; } -#pragma warning disable CS8500 - fixed (void* bufferPtr = &bufferArray.GetPinnableReference()) -#pragma warning restore CS8500 - { + #pragma warning disable CS8500 + fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + #pragma warning restore CS8500 + { Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)bufferPtr, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetBufferVectorData(BufferType bufferType, T[] bufferArray, BufferUsage usage) - where T : struct, IVector + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetBufferVectorData( + BufferType bufferType, + T[] bufferArray, + BufferUsage usage ) + where T: struct, IVector { - int size = bufferArray.Length * Marshal.SizeOf(typeof(T)); - if (bufferArray == null) - { + int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferArray == null ) { return; } -#pragma warning disable CS8500 - fixed (void* bufferPtr = bufferArray) -#pragma warning restore CS8500 - { + #pragma warning disable CS8500 + fixed( void* bufferPtr = bufferArray ) + #pragma warning restore CS8500 + { Context.glBufferData( - (uint)bufferType, - (IntPtr)size, - (IntPtr)bufferPtr, - (uint)usage); + ( uint )bufferType, ( IntPtr )size, ( IntPtr )bufferPtr, + ( uint )usage ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public unsafe void SetRenderBufferStorage(RenderBufferInternalFormat internalFormat, (int width, int height) size) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (int width, int height) size ) { Context.glRenderbufferStorage( - GLconst.RENDERBUFFER, (uint)internalFormat, size.width, size.height - ); + GLconst.RENDERBUFFER, ( uint )internalFormat, size.width, + size.height ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetVertexAttribute(uint index, int size, TypeCode t, bool normalized, uint stride, int pointer) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void SetRenderBufferStorage( + RenderBufferInternalFormat internalFormat, + (uint width, uint height) size ) { - uint type = InternalIO.GLtype[t]; - Context.glVertexAttribPointer(index, size, type, normalized ? 1 : 0, stride, (void*)pointer); - Context.glEnableVertexAttribArray(index); + Context.glRenderbufferStorage( + GLconst.RENDERBUFFER, ( uint )internalFormat, ( int )size.width, + ( int )size.height ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d(Texture2DTarget target, int level, uint internalformat, uint width, uint height, - uint format, PixelChannelLayout type, T[] pixels) where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetVertexAttribute( + uint index, + int size, + TypeCode t, + bool normalized, + uint stride, + int pointer ) + { + uint type = InternalIO.GLtype[ t ]; + Context.glVertexAttribPointer( + index, size, type, normalized ? 1 : 0, stride, + ( void* )pointer ); + Context.glEnableVertexAttribArray( index ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + PixelChannelLayout type, + T[] pixels ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { -#pragma warning disable CS8500 - fixed (T* tptr = ((pixels == null) || (pixels.Length == 0)) ? null : pixels) - { + #pragma warning disable CS8500 + fixed( T* tptr = pixels ) { + T* ptr = ( ( pixels == null ) || ( pixels.Length == 0 ) ) ? + ( T* )IntPtr.Zero : tptr; Context.glTexImage2D( - (uint)target, level, internalformat, width, height, 0, format, (uint)type, tptr); + ( uint )target, level, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( uint )type, tptr ); } -#pragma warning restore CS8500 + #pragma warning restore CS8500 } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureImage2d(Texture2DTarget target, int level, uint internalformat, uint width, uint height, - uint format, PixelChannelLayout type, Span pixelSpan) where T : struct, + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureImage2d( + Texture2DTarget target, + int level, + ImageChannel sourceChannel, + uint width, + uint height, + ImageChannel targetChannel, + PixelChannelLayout type, + Span pixelSpan ) + where T: struct, #if NET8_0_OR_GREATER INumber #else IConvertible -#endif + #endif { -#pragma warning disable CS8500 - fixed (T* tptr = pixelSpan) - { + #pragma warning disable CS8500 + fixed( T* tptr = pixelSpan ) { Context.glTexImage2D( - (uint)target, level, internalformat, width, height, 0, format, (uint)type, tptr); + ( uint )target, level, ( uint )sourceChannel, width, height, + 0, ( uint )targetChannel, ( uint )type, tptr ); } -#pragma warning restore CS8500 + #pragma warning restore CS8500 } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void TextureParameter(int target, uint pname, int param) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void TextureParameter( int target, uint pname, int param ) { - Context.glTexParameteri((uint)target, pname, param); + Context.glTexParameteri( ( uint )target, pname, param ); } - public static bool TryGetFunctionPackage(IntPtr handle, out OpenGLFunction functionPackage) + public static bool TryGetFunctionPackage( + IntPtr handle, + out OpenGLFunction functionPackage ) { - return contextToGLMap.TryGetValue(handle, out functionPackage); + return contextToGLMap.TryGetValue( handle, out functionPackage ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UseProgram(GlHandle program) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void UseProgram( GlHandle program ) { - Context.glUseProgram(program.Value); + Context.glUseProgram( program.Value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void VertexAttributeDivisor(uint layoutIndex, uint divisor) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void VertexAttributeDivisor( uint layoutIndex, uint divisor ) { - Context.glVertexAttribDivisor(layoutIndex, divisor); + Context.glVertexAttribDivisor( layoutIndex, divisor ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Viewport(int x, int y, uint width, uint height) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Viewport( int x, int y, uint width, uint height ) { - Context.glViewport(x, y, width, height); + Context.glViewport( x, y, width, height ); } - public void WaitAccomplishment() { Context.glFinish(); } - internal static OpenGLFunction BuildGlFunctionPackage(IntPtr handle) + internal static OpenGLFunction BuildGlFunctionPackage( IntPtr handle ) { OpenGLFunction pack; - if (contextToGLMap.TryGetValue(handle, out pack)) - { + if( contextToGLMap.TryGetValue( handle, out pack ) ) { return pack; } - pack = new OpenGLFunction { _context = (OpenglContext*)handle }; - contextToGLMap.Add(handle, pack); + pack = new OpenGLFunction { _context = ( OpenglContext* )handle }; + contextToGLMap.Add( handle, pack ); return pack; } ~OpenGLFunction() { - contextToGLMap.Remove(ContextHandle); + contextToGLMap.Remove( ContextHandle ); } } diff --git a/源代码/StgSharp/Graphics/OpenGL/glRenderSourceGenrator.cs b/源代码/StgSharp/Graphics/OpenGL/glRenderSourceGenrator.cs new file mode 100644 index 00000000..c5411b1f --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glRenderSourceGenrator.cs @@ -0,0 +1,107 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderSourceGenrator.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRender + { + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected AutoTextureGL CreateAutoTexture( int count ) + { + return new AutoTextureGL( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of EBO to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected ElementBuffer CreateElementBuffer( int count ) + { + return new ElementBuffer( count, this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected FrameBuffer CreateFrameBuffer( int count ) + { + return new FrameBuffer( count, this ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected RenderBuffer CreateRenderBuffer( int count ) + { + return new RenderBuffer( count, this ); + } + + /// + /// Create a sets of + /// + /// Amount of textures to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected TextureGL CreateTexture( int count ) + { + return new TextureGL( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of VAO to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected VertexArray CreateVertexArray( int count ) + { + return new VertexArray( count, this ); + } + + /// + /// Create a set of . + /// + /// Amount of Object to be created. + /// + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected VertexBuffer CreateVertexBuffer( int count ) + { + return new VertexBuffer( count, this ); + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs b/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs index 63b86dc8..478b6ef9 100644 --- a/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs +++ b/源代码/StgSharp/Graphics/OpenGL/glRenderStream.cs @@ -1,6 +1,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// file="glRender.cs" +// file="glRenderStream.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. @@ -28,24 +28,28 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; +using StgSharp.Threading; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; +using System.Threading; using System.Threading.Tasks; namespace StgSharp.Graphics.OpenGL { - public abstract partial class glRender : RenderStream { + private protected static readonly ConcurrentDictionary renderToThread + = new ConcurrentDictionary(); + private OpenGLFunction _context; protected internal OpenGLFunction GL @@ -54,93 +58,134 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Initialize an OpenGl viewPortDisplay if current form has not been binded to any viewPortDisplay. - /// and set the viewPortDisplay binded to current form as current OpenGL viewPortDisplay. + /// Initialize an opengl context and load all opengl functions. + /// + public unsafe void InitializeContext() + { + if( ContextHandle == default ) { + ContextHandle = Marshal.AllocHGlobal( + Marshal.SizeOf( typeof( OpenglContext ) ) ); + OpenglContext* contextID = ( OpenglContext* )ContextHandle; + contextID->glGetString = ( delegate* )IntPtr.Zero; + } + if( GL == null ) { + _context = OpenGLFunction.BuildGlFunctionPackage( + ContextHandle ); + } + } + + /// + /// Initialize an OpenGl viewPortDisplay if current form has not been binded to any + /// viewPortDisplay. and set the viewPortDisplay binded to current form as current OpenGL + /// viewPortDisplay. /// /// /// Something goes wrong and StgSharp fails in creating a new OpenGL viewPortDisplay. /// public unsafe void MakeAsCurrentContext() { - if (ContextHandle == default) - { - ContextHandle = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(OpenglContext))); - OpenglContext* contextID = (OpenglContext*)ContextHandle; - contextID->glGetString = (delegate*)IntPtr.Zero; - } - if (GL == null) - { - _context = OpenGLFunction.BuildGlFunctionPackage(ContextHandle); - } - if (OpenGLFunction.CurrentGL != GL) - { - OpenGLFunction.CurrentGL = GL; - InternalIO.glfwMakeContextCurrent(CanvasHandle); - } + InternalIO.glfwMakeContextCurrent( CanvasHandle ); + OpenGLFunction.CurrentGL = this.GL; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public override void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight) + /// + public override void RenderEnd() { - InternalIO.glfwSetWindowSizeLimits(this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight); + if( !renderToThread.TryGetValue( this, + out Thread t ) || t != Thread.CurrentThread ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } + SwapBuffers(); + renderToThread[ this ] = ThreadHelper.EmptyThread; + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); + OpenGLFunction.CurrentGL = null; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal override sealed void Draw() + /// + public override void RenderStart() { - MakeAsCurrentContext(); - Main(); + Thread current = Thread.CurrentThread; + if( !renderToThread.TryGetValue( this, + out Thread t ) || t == ThreadHelper.EmptyThread ) { + renderToThread[ this ] = current; + MakeAsCurrentContext(); + return; + } + if( t != current ) { + throw new InvalidOperationException( + $"Current render has had been binded to thread {t!.ManagedThreadId}" ); + } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public override void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) + { + InternalIO.glfwSetWindowSizeLimits( + this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal override sealed void PlatformSpecifiedInitialize() { + InitializeContext(); MakeAsCurrentContext(); - glManager.LoadOpenGLApiTo(Port.GraphicHandle); + glManager.LoadOpenGLApiTo( BindedViewPortContext.GraphicHandle ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal override sealed void Terminate() { CustomizeDeinit(); } - protected override sealed Uniform NativeCameraUniform(ShaderProgram source, string name) + protected override sealed Uniform NativeCameraUniform( + ShaderProgram source, + string name ) { - NativeCamera.GainAllUniforms(source, name); + NativeCamera.GainAllUniforms( source, name ); return NativeCamera.convertedUniform; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - protected override sealed void NativeCameraViewRange(Radius fieldOfRange, vec2d offset, (float frontDepth, float backDepth) viewDepth) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + protected override sealed void NativeCameraViewRange( + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ) { - NativeCamera.SetViewRange(fieldOfRange, this.Size, offset, viewDepth); + NativeCamera.SetViewRange( + fieldOfRange, this.Size, offset, viewDepth ); } - protected override sealed void NativeCameraViewTarget(vec3d position, vec3d direction, vec3d up) + protected override sealed void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up ) { - NativeCamera.SetViewDirection(position, direction, up); + NativeCamera.SetViewDirection( position, direction, up ); } #region Key Control - protected KeyStatus CheckKey(KeyboardKey key) + protected KeyStatus CheckKey( KeyboardKey key ) { - return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); } - protected KeyStatus CheckKey(Mouse key) + protected KeyStatus CheckKey( Mouse key ) { - return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); } - protected KeyStatus CheckKey(Joystick key) + protected KeyStatus CheckKey( Joystick key ) { - return InternalIO.glfwGetKey(this.CanvasHandle, (int)key); + return InternalIO.glfwGetKey( this.CanvasHandle, ( int )key ); } #endregion - - } } diff --git a/源代码/StgSharp/Graphics/OpenGL/glRenderThreadSecurity.cs b/源代码/StgSharp/Graphics/OpenGL/glRenderThreadSecurity.cs new file mode 100644 index 00000000..c0dca674 --- /dev/null +++ b/源代码/StgSharp/Graphics/OpenGL/glRenderThreadSecurity.cs @@ -0,0 +1,49 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="glRenderThreadSecurity.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.OpenGL +{ + public partial class glRender + { + + private static ConcurrentDictionary threadLocalIndex + = new ConcurrentDictionary(); + private readonly SynchronizationContext mainThreadContext = SynchronizationContext.Current; + + } +} diff --git a/源代码/StgSharp/Graphics/Pixels.cs b/源代码/StgSharp/Graphics/Pixels.cs index 330a94bd..5220b7b2 100644 --- a/源代码/StgSharp/Graphics/Pixels.cs +++ b/源代码/StgSharp/Graphics/Pixels.cs @@ -38,26 +38,44 @@ namespace StgSharp.Graphics public interface IPixel { - public float Red { get; set; } - public float Green { get; set; } - public float Blue { get; set; } - public float Alpha { get; set; } + public float Red + { + get; + set; + } - internal int Size { get; } + public float Green + { + get; + set; + } + public float Blue + { + get; + set; + } + + public float Alpha + { + get; + set; + } + + internal int Size + { + get; + } } - [StructLayout(LayoutKind.Explicit, Size = 32)] + [StructLayout( LayoutKind.Explicit, Size = 32 )] public unsafe struct Pixel32 { - [FieldOffset(0)] private unsafe fixed byte data[4]; + [FieldOffset( 0 )] private unsafe fixed byte data[ 4 ]; internal int Size => 4; } - - - } diff --git a/源代码/StgSharp/Graphics/PlainGeometryMesh.cs b/源代码/StgSharp/Graphics/PlainGeometryMesh.cs index a1f24ff5..0f506367 100644 --- a/源代码/StgSharp/Graphics/PlainGeometryMesh.cs +++ b/源代码/StgSharp/Graphics/PlainGeometryMesh.cs @@ -46,52 +46,57 @@ namespace StgSharp.Graphics private PlainGeometry _shape; private TextureProvider _texture; - public PlainGeometryMesh([NotNull] PlainGeometry shape, [NotNull] TextureProvider texture) + public PlainGeometryMesh( + [NotNull] PlainGeometry shape, + [NotNull] TextureProvider texture ) { - if (shape.VertexCount > texture.TextureCoordinate.Length) - { - throw new ArgumentException(paramName: nameof(texture), message: "Amount of texture coordination is too less"); + if( shape.VertexCount > texture.TextureCoordinate.Length ) { + throw new ArgumentException( + paramName: nameof( texture ), + message: "Amount of texture coordination is too less" ); } _texture = texture; _shape = shape; } + //private Image _texture; public PlainGeometryMesh( - PlainGeometry shape, Image texture, vec2d[] texCoord - ) + PlainGeometry shape, + Image texture, + Vec2[] texCoord ) { - if (shape == null) - { - throw new ArgumentNullException(nameof(shape)); + if( shape == null ) { + throw new ArgumentNullException( nameof( shape ) ); } - if (texCoord == null) - { - throw new ArgumentNullException(nameof(texCoord)); + if( texCoord == null ) { + throw new ArgumentNullException( nameof( texCoord ) ); } - if (shape.VertexCount > texCoord.Length) - { - throw new ArgumentException(paramName: nameof(texCoord), message: "Amount of texture coordination is too less"); + if( shape.VertexCount > texCoord.Length ) { + throw new ArgumentException( + paramName: nameof( texCoord ), + message: "Amount of texture coordination is too less" ); } - _texture = new TextureProvider(texture, texCoord); + _texture = new TextureProvider( texture, texCoord ); } - public vec4d[] VertexArray => _shape.VertexStream; + public Vec4[] VertexArray => _shape.VertexStream; public Image TextureImage { get => _texture.ProvideImage(); - internal set => _texture.ReadImage(value); + internal set => _texture.ReadImage( value ); } public ReadOnlySpan MeshIndices => _shape.VertexIndices; - public ReadOnlySpan TextureCoord => MemoryMarshal.Cast(_texture.TextureCoordinate); + public ReadOnlySpan TextureCoord => MemoryMarshal.Cast( + _texture.TextureCoordinate ); - public PlainGeometryMesh Resize(PlainGeometry newShape) + public PlainGeometryMesh Resize( PlainGeometry newShape ) { - return new PlainGeometryMesh(newShape, _texture); + return new PlainGeometryMesh( newShape, _texture ); } } diff --git a/源代码/StgSharp/Graphics/RenderStream.cs b/源代码/StgSharp/Graphics/RenderStream.cs index fc72d233..574a72a4 100644 --- a/源代码/StgSharp/Graphics/RenderStream.cs +++ b/源代码/StgSharp/Graphics/RenderStream.cs @@ -29,15 +29,16 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Graphics.OpenGL; -using StgSharp.Timing; - using StgSharp.Math; + using StgSharp.MVVM; using StgSharp.MVVM.View; +using StgSharp.Timing; using System; using System.Collections.Generic; using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -57,12 +58,6 @@ namespace StgSharp.Graphics public (int width, int height) Size { get => (Width, Height); - internal set - { - primeArgs.Height = value.width; - primeArgs.Width = value.height; - InternalIO.glfwSetWindowSize(this.CanvasHandle, Width, Height); - } } public abstract bool IsContextSharable @@ -73,13 +68,11 @@ namespace StgSharp.Graphics public int Height { get => primeArgs.Height; - internal set { primeArgs.Height = value; } } public int Width { get => primeArgs.Width; - internal set { primeArgs.Width = value; } } public IntPtr Monitor @@ -93,21 +86,18 @@ namespace StgSharp.Graphics get => primeArgs.Name; } - protected bool IsWaitingUserEvent - { - get => primeArgs.IsWaitingEvent; - } + public Vec2 GlobalCoordSize => (( Width * 1.0f ) / _coordStretch.x, ( Height * 1.0f ) / _coordStretch.y); - public vec2d GlobalCoordSize => ((Width * 1.0f) / _coordStretch.x, (Height * 1.0f) / _coordStretch.y); - - public ViewPort Port + public ViewPort BindedViewPortContext { get => primeArgs; internal set => primeArgs = value; } - internal IntPtr CanvasHandle { get => primeArgs.ViewPortID; } - + internal IntPtr CanvasHandle + { + get => primeArgs.ViewPortID; + } internal IntPtr ContextHandle { @@ -144,19 +134,26 @@ namespace StgSharp.Graphics /// /// Set the size limit of current form /// - /// Minimum width of current form - /// Minimum height of current form - /// Maximum width of current form - /// Maximum height of current form - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public abstract void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight); + /// Minimum width of current form + /// Minimum height of current form + /// Maximum width of current form + /// Maximum height of current form + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public abstract void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ); - public static TTarget ShareContextFrom(TSource source) - where TSource : RenderStream - where TTarget : RenderStream, new() + public static TTarget ShareContextFrom( + [NotNull]TSource source ) + where TSource: RenderStream + where TTarget: RenderStream, new() { TTarget target = new TTarget(); - target.Initialize(source.Port, source._coordStretch, source._timeProvider); + target.Initialize( + source.BindedViewPortContext, source._coordStretch, + source._timeProvider ); return target; } @@ -166,38 +163,52 @@ namespace StgSharp.Graphics InternalIO.glfwPollEvents(); } - protected internal void SwapBuffers() + private protected void SwapBuffers() { - InternalIO.glfwSwapBuffers(CanvasHandle); + InternalIO.glfwSwapBuffers( CanvasHandle ); } + /**/ + #region native camera operation - protected abstract void NativeCameraViewRange(Radius fieldOfRange, vec2d offset, (float frontDepth, float backDepth) viewDepth); - protected abstract void NativeCameraViewTarget(vec3d position, vec3d direction, vec3d up); + + protected abstract void NativeCameraViewRange( + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ); + + protected abstract void NativeCameraViewTarget( + Vec3 position, + Vec3 direction, + Vec3 up ); /// - /// Get (TView is ) uniform from a shader. - /// This uniform will be used as projection matrix of this camera. - /// Additionally, for multi-shader rendering, each shader requires a uniform, - /// so do not ignore return value of this method. + /// Get (TView is ) uniform from a shader. + /// This uniform will be used as projection matrix of this camera. Additionally, for multi- + /// shader rendering, each shader requires a uniform, so do not ignore return value of this + /// method. /// - /// Shader using this camera - /// ContextName of projection camera named in shader + /// Shader using this camera + /// ContextName of projection camera named in shader /// - /// (TView is ) representing - /// projection matrix in shader program. + /// (TView is ) representing projection + /// matrix in shader program. /// - protected abstract Uniform NativeCameraUniform(ShaderProgram source, string name); + protected abstract Uniform NativeCameraUniform( + ShaderProgram source, + string name ); + #endregion #region internal operation - internal abstract void Draw(); - public void Initialize(ViewPort v, (int, int, int) unitCubeSize, TimeSpanProvider timeProvider) + public void Initialize( + ViewPort v, + (int, int, int) unitCubeSize, + TimeSpanProvider timeProvider ) { - if (v == null) - { - throw new ArgumentNullException(nameof(v)); + if( v == null ) { + throw new ArgumentNullException( nameof( v ) ); } primeArgs = v; this._timeProvider = timeProvider; @@ -205,30 +216,42 @@ namespace StgSharp.Graphics nativeCamera = new Camera(); PlatformSpecifiedInitialize(); CustomizeInit(); + InternalIO.glfwMakeContextCurrent( IntPtr.Zero ); } internal abstract void PlatformSpecifiedInitialize(); internal abstract void Terminate(); + #endregion #region public operation + protected abstract void CustomizeDeinit(); + protected abstract void CustomizeInit(); - protected abstract void Main(); + /// + /// Marking the start of current render operations, and set this renser context as current. + /// + public abstract void RenderStart(); + /// + /// Marking the end of current render operations, and release the binding of this renser + /// context to current, making it available for another thread as current. + /// + public abstract void RenderEnd(); #endregion #region public resource generator - protected abstract Shader CreateShaderSegment(ShaderType type, int count); + protected abstract Shader CreateShaderSegment( + ShaderType type, + int count ); + protected abstract ShaderProgram CreateShaderProgram(); - #endregion - - + #endregion } - } diff --git a/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs b/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs index ed7e7a97..bfec23b0 100644 --- a/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs +++ b/源代码/StgSharp/Graphics/ShaderEdit/ShaderGenerator.cs @@ -48,10 +48,13 @@ namespace StgSharp.Graphics.ShaderEdit private List codeList; private List usedShaderFunctions; - public Uniform DefineUniform(string name, int index) where T : struct + public Uniform DefineUniform( string name, int index ) + where T: struct { - ShaderParameter p = new ShaderParameter(name, ShaderParameter.TypeMarshal()); - uniformDefine.Add(index, p); + ShaderParameter p = new ShaderParameter( + name, ShaderParameter.TypeMarshal() ); + uniformDefine.Add( index, p ); + //return new Uniform(); throw new NotImplementedException(); } @@ -68,38 +71,39 @@ namespace StgSharp.Graphics.ShaderEdit public int ParameterCount => inputList.Count; - public void EmitCall(ShaderFunction function, ShaderParameter outPut, params ShaderParameter[] inputParams) + public void EmitCall( + ShaderFunction function, + ShaderParameter outPut, + params ShaderParameter[] inputParams ) { - if (inputParams.Length != function.ParameterCount) - { + if( inputParams.Length != function.ParameterCount ) { // Param list length not equal - throw new ArgumentException("Provided parameters does not match function's parameter list."); + throw new ArgumentException( + "Provided parameters does not match function's parameter list." ); } - if (!ShaderParameter.IsSameType(outPut, function.outPut)) - { + if( !ShaderParameter.IsSameType( outPut, function.outPut ) ) { // Type of returning value not qual - throw new Exception("Provided parameters does not match function's parameter list."); + throw new Exception( + "Provided parameters does not match function's parameter list." ); } - for (int i = 0; i < inputParams.Length; i++) - { - if (!ShaderParameter.IsSameType(function.inputList[i], inputParams[i])) - { + for( int i = 0; i < inputParams.Length; i++ ) { + if( !ShaderParameter.IsSameType( + function.inputList[ i ], inputParams[ i ] ) ) { // Input type not match - throw new Exception("Provided parameters does not match function's parameter list."); + throw new Exception( + "Provided parameters does not match function's parameter list." ); } } string codeLine = string.Empty; // adding a line like " outvalue = Func(input1, input2,...); " - if (outPut != ShaderParameter.Void) - { + if( outPut != ShaderParameter.Void ) { codeLine += $"{outPut.name} = "; } codeLine += $"{function.name}("; - foreach (ShaderParameter inputParam in inputParams) - { + foreach( ShaderParameter inputParam in inputParams ) { codeLine += inputParam.name; } codeLine += ");\n"; - codeList.Add(codeLine); + codeList.Add( codeLine ); } } @@ -107,34 +111,33 @@ namespace StgSharp.Graphics.ShaderEdit public class ShaderParameter { - public static readonly ShaderParameter Void = new ShaderParameter(string.Empty, InternalShaderType.Void); + public static readonly ShaderParameter Void = new ShaderParameter( + string.Empty, InternalShaderType.Void ); internal readonly bool isReadOnly; internal readonly InternalShaderType type; internal readonly string name; - public ShaderParameter(string name, InternalShaderType type) + public ShaderParameter( string name, InternalShaderType type ) { this.name = name; this.type = type; isReadOnly = false; } - public static bool IsSameType(ShaderParameter param1, ShaderParameter param2) + public static bool IsSameType( + ShaderParameter param1, + ShaderParameter param2 ) { - if (param1.type != InternalShaderType.Struct) - { + if( param1.type != InternalShaderType.Struct ) { return param1.type == param2.type; - } - else - { - throw new Exception("Struct is currently not supported."); + } else { + throw new Exception( "Struct is currently not supported." ); } } - public static InternalShaderType TypeMarshal() where T : struct + public static InternalShaderType TypeMarshal() where T: struct { - switch (Type.GetTypeCode(typeof(T))) - { + switch( Type.GetTypeCode( typeof( T ) ) ) { case TypeCode.Single: return InternalShaderType.Float; case TypeCode.Double: @@ -146,8 +149,7 @@ namespace StgSharp.Graphics.ShaderEdit default: break; } - switch (typeof(T).Name) - { + switch( typeof( T ).Name ) { case "vec4d": return InternalShaderType.Vector4; case "Matrix2x2": @@ -169,7 +171,8 @@ namespace StgSharp.Graphics.ShaderEdit case "Matrix4x4": return InternalShaderType.Matrix4x4; default: - throw new ArgumentException("Not supported shader data type."); + throw new ArgumentException( + "Not supported shader data type." ); } } @@ -178,14 +181,27 @@ namespace StgSharp.Graphics.ShaderEdit public enum InternalShaderType { #pragma warning disable CS1591 - Struct, Void, - Int, UInt, - Float, Double, - Vector2, Vector3, Vector4, - VectorD2, VectorD3, VectorD4, - Matrix2x2, Matrix2x3, Matrix2x4, - Matrix3x2, Matrix3x3, Matrix3x4, - Matrix4x2, Matrix4x3, Matrix4x4, + Struct, + Void, + Int, + UInt, + Float, + Double, + Vector2, + Vector3, + Vector4, + VectorD2, + VectorD3, + VectorD4, + Matrix2x2, + Matrix2x3, + Matrix2x4, + Matrix3x2, + Matrix3x3, + Matrix3x4, + Matrix4x2, + Matrix4x3, + Matrix4x4, #pragma warning restore CS1591 } } \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs b/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs index cd64c87a..eecd6187 100644 --- a/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs +++ b/源代码/StgSharp/Graphics/ShaderEdit/ShaderStruct.cs @@ -53,47 +53,42 @@ namespace StgSharp.Graphics.ShaderEdit internal ShaderStruct() { } - public ShaderStruct(params (GlHandle, ShaderStructMember)[] uniformPairs) + public ShaderStruct( + params (GlHandle, ShaderStructMember)[] uniformPairs ) { uniformPair = new Dictionary(); - if (uniformPairs.Length == 0) - { + if( uniformPairs.Length == 0 ) { return; } - foreach ((GlHandle, ShaderStructMember) item in uniformPairs) - { - uniformPair.Add(item.Item1, item.Item2); + foreach( (GlHandle, ShaderStructMember) item in uniformPairs ) { + uniformPair.Add( item.Item1, item.Item2 ); } - } - public unsafe void SetAllUniforms() { - OpenglContext* gl = (OpenglContext*)OpenGL.OpenGLFunction.CurrentGL.ContextHandle; - foreach (KeyValuePair uniform in uniformPair) - { + OpenglContext* gl = ( OpenglContext* )OpenGL.OpenGLFunction.CurrentGL.ContextHandle; + foreach( KeyValuePair uniform in uniformPair ) { int id = uniform.Key.SignedValue; ShaderStructMember s = uniform.Value; - switch (s.type) - { + switch( s.type ) { case InternalShaderType.Struct: throw new ArgumentException( - "Incorrect type \"Struct\" defined in this self define type"); + "Incorrect type \"Struct\" defined in this self define type" ); case InternalShaderType.Void: throw new ArgumentException( - "Incorrect type \"Void\" defined in this self define type"); + "Incorrect type \"Void\" defined in this self define type" ); case InternalShaderType.Float: - gl->glUniform1f(id, (float)s.value); + gl->glUniform1f( id, ( float )s.value ); break; case InternalShaderType.Int: - gl->glUniform1f(id, (int)s.value); + gl->glUniform1f( id, ( int )s.value ); break; default: throw new NotImplementedException(); throw new ArgumentException( - "Incorrect type \"Unknown\" defined in this self define type"); + "Incorrect type \"Unknown\" defined in this self define type" ); } } }//------------------------------------ End of Class --------------------------------------- diff --git a/源代码/StgSharp/Graphics/TextureBufferImage.cs b/源代码/StgSharp/Graphics/TextureBufferImage.cs new file mode 100644 index 00000000..2625c774 --- /dev/null +++ b/源代码/StgSharp/Graphics/TextureBufferImage.cs @@ -0,0 +1,98 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TextureBufferImage.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp; +using StgSharp.Graphics.OpenGL; +using StgSharp.Math; + +using System; + +namespace StgSharp.Graphics +{ + public class TextureImage : IImageProvider + { + + private byte[] _data; + private ImageInfo _imageInfo; + private int _pixelUpdateCount = 0; + + public TextureImage( + Vec2 size, + ImageChannel channel, + PixelChannelLayout layout, + int bufferSize ) + { + this._imageInfo = new ImageInfo + { + Width = ( int )size.X, + Height = ( int )size.Y, + Channel = channel, + pixelLayout = layout, + }; + if( bufferSize < _imageInfo.Width * _imageInfo.Height * GlHelper.GetPixelSize( + layout, channel ) ) { + throw new OverflowException( + "Size of data buffer is smaller than default image size." ); + } + _data = new byte[bufferSize]; + } + + public int Width + { + get => _imageInfo.Width; + internal set => _imageInfo.Width = value; + } + + public int Height + { + get => _imageInfo.Height; + internal set => _imageInfo.Height = value; + } + + public Image ProvideImage() + { + return Image.FromMemory( _imageInfo, _data, _pixelUpdateCount ); + } + + public void Resize( int width, int height ) + { + if( _data.Length < width * height * GlHelper.GetPixelSize( + _imageInfo.pixelLayout, _imageInfo.Channel ) ) { + throw new OverflowException( + "Size of image is larger than capacity of sata buffer." ); + } + Width = width; + Height = height; + _pixelUpdateCount++; + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Graphics/TexturePipeline.cs b/源代码/StgSharp/Graphics/TexturePipeline.cs index a205733d..ace7ca87 100644 --- a/源代码/StgSharp/Graphics/TexturePipeline.cs +++ b/源代码/StgSharp/Graphics/TexturePipeline.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.BluePrint; using System; @@ -45,7 +44,7 @@ namespace StgSharp.Graphics private Image _value; - public TexturePipeline(Image i) + public TexturePipeline( Image i ) { _value = i; } @@ -53,7 +52,8 @@ namespace StgSharp.Graphics public new Image Value { get => _value; - set => _value = value ?? throw new ArgumentNullException(nameof(value)); + set => _value = value ?? + throw new ArgumentNullException( nameof( value ) ); } } diff --git a/源代码/StgSharp/Graphics/TextureProvider.cs b/源代码/StgSharp/Graphics/TextureProvider.cs index 47839799..5baf7f60 100644 --- a/源代码/StgSharp/Graphics/TextureProvider.cs +++ b/源代码/StgSharp/Graphics/TextureProvider.cs @@ -40,23 +40,23 @@ namespace StgSharp.Graphics public class TextureProvider : IImageProvider { - private vec2d[] _texCoord; + private Vec2[] _texCoord; private Image _tex; - public TextureProvider(Image image, vec2d[] coord) + public TextureProvider( Image image, Vec2[] coord ) { _tex = image; _texCoord = coord; } - public ref vec2d this[int index] + public ref Vec2 this[ int index ] { - get => ref _texCoord[index]; + get => ref _texCoord[ index ]; } - public Span TextureCoordinate + public Span TextureCoordinate { - get => new Span(_texCoord); + get => new Span( _texCoord ); } public Image ProvideImage() @@ -64,26 +64,22 @@ namespace StgSharp.Graphics return _tex; } - public void ReadImage(IImageProvider provider) + public void ReadImage( IImageProvider provider ) { _tex = provider.ProvideImage(); } - public void UpdateFromImage(Image i) + public void UpdateFromImage( Image i ) { - if (i == _tex) - { + if( i == _tex ) { return; } - if (i.Size == _tex.Size) - { + if( i.Size == _tex.Size ) { _tex = i; + } else { + throw new ArgumentException( + $"Size of {nameof(i)} does not equals to current image." ); } - else - { - throw new ArgumentException($"Size of {nameof(i)} does not equals to current image."); - } - } } diff --git a/源代码/StgSharp/Graphics/Vulkan/vkHandle.cs b/源代码/StgSharp/Graphics/Vulkan/vkHandle.cs new file mode 100644 index 00000000..5396a1f7 --- /dev/null +++ b/源代码/StgSharp/Graphics/Vulkan/vkHandle.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="vkHandle.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Graphics.Vulkan +{ + [StructLayout( LayoutKind.Explicit, Size = 8 )] + public struct vkHandle + { + + [FieldOffset( 0 )] public int SignedHalfValue; + [FieldOffset( 0 )] public IntPtr Handle; + [FieldOffset( 0 )] public IntPtr UnsignedHandle; + [FieldOffset( 0 )] public uint HalfValue; + + } +} diff --git a/源代码/StgSharp/Graphics/framework.cs b/源代码/StgSharp/Graphics/framework.cs index 77b4217c..9692f3f5 100644 --- a/源代码/StgSharp/Graphics/framework.cs +++ b/源代码/StgSharp/Graphics/framework.cs @@ -32,6 +32,7 @@ using StgSharp.Graphics; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -45,239 +46,459 @@ namespace StgSharp { internal partial class InternalIO { + #region api call - [DllImport(SSC_libName, EntryPoint = "glfwInit")] internal static extern unsafe int glfwInit(); + [DllImport( SSC_libName, EntryPoint = "glfwInit" )] internal static extern unsafe int glfwInit( + ); - [DllImport(SSC_libName, EntryPoint = "glfwTerminate")] internal static extern unsafe void glfwTerminate(); + [DllImport( SSC_libName, EntryPoint = "glfwTerminate" )] internal static extern unsafe void glfwTerminate( + ); - [DllImport(SSC_libName, EntryPoint = "glfwInitHint")] internal static extern unsafe void glfwInitHint(int hint, int value); + [DllImport( SSC_libName, EntryPoint = "glfwInitHint" )] internal static extern unsafe void glfwInitHint( + int hint, + int value ); - [DllImport(SSC_libName, EntryPoint = "glfwGetVersion")] internal static extern unsafe void glfwGetVersion(int* major, int* minor, int* rev); + [DllImport( SSC_libName, EntryPoint = "glfwGetVersion" )] internal static extern unsafe void glfwGetVersion( + int* major, + int* minor, + int* rev ); - [DllImport(SSC_libName, EntryPoint = "glfwGetVersionString")] internal static extern unsafe byte* glfwGetVersionString(); + [DllImport( SSC_libName, EntryPoint = "glfwGetVersionString" )] internal static extern unsafe byte* glfwGetVersionString( + ); - [DllImport(SSC_libName, EntryPoint = "glfwGetError")] internal static extern unsafe int glfwGetError(byte** description); + [DllImport( SSC_libName, EntryPoint = "glfwGetError" )] internal static extern unsafe int glfwGetError( + byte** description ); - [DllImport(SSC_libName, EntryPoint = "glfwSetErrorCallback")] internal static extern unsafe GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); + [DllImport( SSC_libName, EntryPoint = "glfwSetErrorCallback" )] internal static extern unsafe GLFWerrorfun glfwSetErrorCallback( + GLFWerrorfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitors")] internal static extern unsafe IntPtr* glfwGetMonitors(int* count); + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitors" )] internal static extern unsafe IntPtr* glfwGetMonitors( + int* count ); - [DllImport(SSC_libName, EntryPoint = "glfwGetPrimaryMonitor")] internal static extern unsafe IntPtr glfwGetPrimaryMonitor(); + [DllImport( SSC_libName, EntryPoint = "glfwGetPrimaryMonitor" )] internal static extern unsafe IntPtr glfwGetPrimaryMonitor( + ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorPos")] internal static extern unsafe void glfwGetMonitorPos(IntPtr monitor, int* xpos, int* ypos); + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorPos" )] internal static extern unsafe void glfwGetMonitorPos( + IntPtr monitor, + int* xpos, + int* ypos ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorWorkarea")] internal static extern unsafe void glfwGetMonitorWorkarea(IntPtr monitor, int* xpos, int* ypos, int* width, int* height); + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorWorkarea" )] internal static extern unsafe void glfwGetMonitorWorkarea( + IntPtr monitor, + int* xpos, + int* ypos, + int* width, + int* height ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize")] internal static extern unsafe void glfwGetMonitorPhysicalSize(IntPtr monitor, int* widthMM, int* heightMM); + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize" )] internal static extern unsafe void glfwGetMonitorPhysicalSize( + IntPtr monitor, + int* widthMM, + int* heightMM ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorContentScale")] internal static extern unsafe void glfwGetMonitorContentScale(IntPtr monitor, float* xscale, float* yscale); + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorContentScale" )] internal static extern unsafe void glfwGetMonitorContentScale( + IntPtr monitor, + float* xscale, + float* yscale ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorName" )] internal static extern unsafe byte* glfwGetMonitorName( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetMonitorUserPointer" )] internal static extern unsafe void glfwSetMonitorUserPointer( + IntPtr monitor, + void* pointer ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetMonitorUserPointer" )] internal static extern unsafe void* glfwGetMonitorUserPointer( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetMonitorCallback" )] internal static extern unsafe GLFWmonitorfun glfwSetMonitorCallback( + GLFWmonitorfun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVideoModes" )] internal static extern unsafe glfwVideomode* glfwGetVideoModes( + IntPtr monitor, + int* count ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetVideoMode" )] internal static extern unsafe glfwVideomode* glfwGetVideoMode( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetGamma" )] internal static extern unsafe void glfwSetGamma( + IntPtr monitor, + float gamma ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetGammaRamp" )] internal static extern unsafe glfwGammaramp* glfwGetGammaRamp( + IntPtr monitor ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetGammaRamp" )] internal static extern unsafe void glfwSetGammaRamp( + IntPtr monitor, + glfwGammaramp* ramp ); + + [DllImport( SSC_libName, EntryPoint = "glfwDefaultWindowHints" )] internal static extern unsafe void glfwDefaultWindowHints( + ); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowHint" )] internal static extern unsafe void glfwWindowHint( + int hint, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowHintString" )] internal static extern unsafe void glfwWindowHintString( + int hint, + byte* value ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorName")] internal static extern unsafe byte* glfwGetMonitorName(IntPtr monitor); + [DllImport( SSC_libName, EntryPoint = "glfwCreateWindow" )] internal static extern unsafe IntPtr glfwCreateWindow( + int width, + int height, + byte[] title, + IntPtr monitor, + IntPtr share ); - [DllImport(SSC_libName, EntryPoint = "glfwSetMonitorUserPointer")] internal static extern unsafe void glfwSetMonitorUserPointer(IntPtr monitor, void* pointer); + [DllImport( SSC_libName, EntryPoint = "glfwDestroyWindow" )] internal static extern unsafe void glfwDestroyWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwWindowShouldClose" )] internal static extern unsafe int glfwWindowShouldClose( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowShouldClose" )] internal static extern unsafe void glfwSetWindowShouldClose( + IntPtr window, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowTitle" )] internal static extern unsafe void glfwSetWindowTitle( + IntPtr window, + byte* title ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowIcon" )] internal static extern unsafe void glfwSetWindowIcon( + IntPtr window, + int count, + GLFWimage* images ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowPos" )] internal static extern unsafe void glfwGetWindowPos( + IntPtr window, + int* xpos, + int* ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowPos" )] internal static extern unsafe void glfwSetWindowPos( + IntPtr window, + int xpos, + int ypos ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowSize" )] internal static extern unsafe void glfwGetWindowSize( + IntPtr window, + int* width, + int* height ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSizeLimits" )] internal static extern unsafe void glfwSetWindowSizeLimits( + IntPtr window, + int minwidth, + int minheight, + int maxwidth, + int maxheight ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowAspectRatio" )] internal static extern unsafe void glfwSetWindowAspectRatio( + IntPtr window, + int numer, + int denom ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSize" )] internal static extern unsafe void glfwSetWindowSize( + IntPtr window, + int width, + int height ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetFramebufferSize" )] internal static extern unsafe void glfwGetFramebufferSize( + IntPtr window, + int* width, + int* height ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowFrameSize" )] internal static extern unsafe void glfwGetWindowFrameSize( + IntPtr window, + int* left, + int* top, + int* right, + int* bottom ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowContentScale" )] internal static extern unsafe void glfwGetWindowContentScale( + IntPtr window, + float* xscale, + float* yscale ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowOpacity" )] internal static extern unsafe float glfwGetWindowOpacity( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowOpacity" )] internal static extern unsafe void glfwSetWindowOpacity( + IntPtr window, + float opacity ); + + [DllImport( SSC_libName, EntryPoint = "glfwIconifyWindow" )] internal static extern unsafe void glfwIconifyWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwRestoreWindow" )] internal static extern unsafe void glfwRestoreWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwMaximizeWindow" )] internal static extern unsafe void glfwMaximizeWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwShowWindow" )] internal static extern unsafe void glfwShowWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwHideWindow" )] internal static extern unsafe void glfwHideWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwFocusWindow" )] internal static extern unsafe void glfwFocusWindow( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwRequestWindowAttention" )] internal static extern unsafe void glfwRequestWindowAttention( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowMonitor" )] internal static extern unsafe IntPtr glfwGetWindowMonitor( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowMonitor" )] internal static extern unsafe void glfwSetWindowMonitor( + IntPtr window, + IntPtr monitor, + int xpos, + int ypos, + int width, + int height, + int refreshRate ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowAttrib" )] internal static extern unsafe int glfwGetWindowAttrib( + IntPtr window, + int attrib ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowAttrib" )] internal static extern unsafe void glfwSetWindowAttrib( + IntPtr window, + int attrib, + int value ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowUserPointer" )] internal static extern unsafe void glfwSetWindowUserPointer( + IntPtr window, + void* pointer ); + + [DllImport( SSC_libName, EntryPoint = "glfwGetWindowUserPointer" )] internal static extern unsafe void* glfwGetWindowUserPointer( + IntPtr window ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowPosCallback" )] internal static extern unsafe GLFWwindowposfun glfwSetWindowPosCallback( + IntPtr window, + IntPtr callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowSizeCallback" )] internal static extern unsafe GLFWwindowsizefun glfwSetWindowSizeCallback( + IntPtr window, + GLFWwindowsizefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowCloseCallback" )] internal static extern unsafe GLFWwindowclosefun glfwSetWindowCloseCallback( + IntPtr window, + GLFWwindowclosefun callback ); + + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowRefreshCallback" )] internal static extern unsafe GLFWwindowrefreshfun glfwSetWindowRefreshCallback( + IntPtr window, + GLFWwindowrefreshfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetMonitorUserPointer")] internal static extern unsafe void* glfwGetMonitorUserPointer(IntPtr monitor); + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowFocusCallback" )] internal static extern unsafe GLFWwindowfocusfun glfwSetWindowFocusCallback( + IntPtr window, + GLFWwindowfocusfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwSetMonitorCallback")] internal static extern unsafe GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowIconifyCallback" )] internal static extern unsafe GLFWwindowiconifyfun glfwSetWindowIconifyCallback( + IntPtr window, + GLFWwindowiconifyfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetVideoModes")] internal static extern unsafe glfwVideomode* glfwGetVideoModes(IntPtr monitor, int* count); + [DllImport( SSC_libName, EntryPoint = "glfwSetWindowMaximizeCallback" )] internal static extern unsafe GLFWwindowmaximizefun glfwSetWindowMaximizeCallback( + IntPtr window, + GLFWwindowmaximizefun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetVideoMode")] internal static extern unsafe glfwVideomode* glfwGetVideoMode(IntPtr monitor); + [DllImport( SSC_libName, EntryPoint = "glfwSetFramebufferSizeCallback" )] internal static extern unsafe FrameBufferSizeHandler glfwSetFramebufferSizeCallback( + IntPtr window, + IntPtr callback ); - [DllImport(SSC_libName, EntryPoint = "glfwSetGamma")] internal static extern unsafe void glfwSetGamma(IntPtr monitor, float gamma); + [DllImport( + SSC_libName, + EntryPoint = "glfwSetWindowContentScaleCallback" )] internal static extern unsafe GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback( + IntPtr window, + GLFWwindowcontentscalefun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetGammaRamp")] internal static extern unsafe glfwGammaramp* glfwGetGammaRamp(IntPtr monitor); + [DllImport( SSC_libName, EntryPoint = "glfwPollEvents" )] internal static extern unsafe void glfwPollEvents( + ); - [DllImport(SSC_libName, EntryPoint = "glfwSetGammaRamp")] internal static extern unsafe void glfwSetGammaRamp(IntPtr monitor, glfwGammaramp* ramp); + [DllImport( SSC_libName, EntryPoint = "glfwWaitEvents" )] internal static extern unsafe void glfwWaitEvents( + ); - [DllImport(SSC_libName, EntryPoint = "glfwDefaultWindowHints")] internal static extern unsafe void glfwDefaultWindowHints(); + [DllImport( SSC_libName, EntryPoint = "glfwWaitEventsTimeout" )] internal static extern unsafe void glfwWaitEventsTimeout( + double timeout ); - [DllImport(SSC_libName, EntryPoint = "glfwWindowHint")] internal static extern unsafe void glfwWindowHint(int hint, int value); + [DllImport( SSC_libName, EntryPoint = "glfwPostEmptyEvent" )] internal static extern unsafe void glfwPostEmptyEvent( + ); - [DllImport(SSC_libName, EntryPoint = "glfwWindowHintString")] internal static extern unsafe void glfwWindowHintString(int hint, byte* value); + [DllImport( SSC_libName, EntryPoint = "glfwGetInputMode" )] internal static extern unsafe int glfwGetInputMode( + IntPtr window, + int mode ); - [DllImport(SSC_libName, EntryPoint = "glfwCreateWindow")] internal static extern unsafe IntPtr glfwCreateWindow(int width, int height, byte[] title, IntPtr monitor, IntPtr share); + [DllImport( SSC_libName, EntryPoint = "glfwSetInputMode" )] internal static extern unsafe void glfwSetInputMode( + IntPtr window, + int mode, + int value ); - [DllImport(SSC_libName, EntryPoint = "glfwDestroyWindow")] internal static extern unsafe void glfwDestroyWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwRawMouseMotionSupported" )] internal static extern unsafe int glfwRawMouseMotionSupported( + ); - [DllImport(SSC_libName, EntryPoint = "glfwWindowShouldClose")] internal static extern unsafe int glfwWindowShouldClose(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwGetKeyName" )] internal static extern unsafe byte* glfwGetKeyName( + int key, + int scancode ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowShouldClose")] internal static extern unsafe void glfwSetWindowShouldClose(IntPtr window, int value); + [DllImport( SSC_libName, EntryPoint = "glfwGetKeyScancode" )] internal static extern unsafe int glfwGetKeyScancode( + int key ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowTitle")] internal static extern unsafe void glfwSetWindowTitle(IntPtr window, byte* title); + [DllImport( SSC_libName, EntryPoint = "glfwGetKey" )] internal static extern unsafe KeyStatus glfwGetKey( + IntPtr window, + int key ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowIcon")] internal static extern unsafe void glfwSetWindowIcon(IntPtr window, int count, GLFWimage* images); + [DllImport( SSC_libName, EntryPoint = "glfwGetMouseButton" )] internal static extern unsafe int glfwGetMouseButton( + IntPtr window, + int button ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowPos")] internal static extern unsafe void glfwGetWindowPos(IntPtr window, int* xpos, int* ypos); + [DllImport( SSC_libName, EntryPoint = "glfwGetCursorPos" )] internal static extern unsafe void glfwGetCursorPos( + IntPtr window, + double* xpos, + double* ypos ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowPos")] internal static extern unsafe void glfwSetWindowPos(IntPtr window, int xpos, int ypos); + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorPos" )] internal static extern unsafe void glfwSetCursorPos( + IntPtr window, + double xpos, + double ypos ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowSize")] internal static extern unsafe void glfwGetWindowSize(IntPtr window, int* width, int* height); + [DllImport( SSC_libName, EntryPoint = "glfwCreateCursor" )] internal static extern unsafe GLFWcursor* glfwCreateCursor( + GLFWimage* image, + int xhot, + int yhot ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowSizeLimits")] internal static extern unsafe void glfwSetWindowSizeLimits(IntPtr window, int minwidth, int minheight, int maxwidth, int maxheight); + [DllImport( SSC_libName, EntryPoint = "glfwCreateStandardCursor" )] internal static extern unsafe GLFWcursor* glfwCreateStandardCursor( + int shape ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowAspectRatio")] internal static extern unsafe void glfwSetWindowAspectRatio(IntPtr window, int numer, int denom); + [DllImport( SSC_libName, EntryPoint = "glfwDestroyCursor" )] internal static extern unsafe void glfwDestroyCursor( + GLFWcursor* cursor ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowSize")] internal static extern unsafe void glfwSetWindowSize(IntPtr window, int width, int height); + [DllImport( SSC_libName, EntryPoint = "glfwSetCursor" )] internal static extern unsafe void glfwSetCursor( + IntPtr window, + GLFWcursor* cursor ); - [DllImport(SSC_libName, EntryPoint = "glfwGetFramebufferSize")] internal static extern unsafe void glfwGetFramebufferSize(IntPtr window, int* width, int* height); + [DllImport( SSC_libName, EntryPoint = "glfwSetKeyCallback" )] internal static extern unsafe GLFWkeyfun glfwSetKeyCallback( + IntPtr window, + GLFWkeyfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowFrameSize")] internal static extern unsafe void glfwGetWindowFrameSize(IntPtr window, int* left, int* top, int* right, int* bottom); + [DllImport( SSC_libName, EntryPoint = "glfwSetCharCallback" )] internal static extern unsafe GLFWcharfun glfwSetCharCallback( + IntPtr window, + GLFWcharfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowContentScale")] internal static extern unsafe void glfwGetWindowContentScale(IntPtr window, float* xscale, float* yscale); + [DllImport( SSC_libName, EntryPoint = "glfwSetCharModsCallback" )] internal static extern unsafe GLFWcharmodsfun glfwSetCharModsCallback( + IntPtr window, + GLFWcharmodsfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowOpacity")] internal static extern unsafe float glfwGetWindowOpacity(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwSetMouseButtonCallback" )] internal static extern unsafe GLFWmousebuttonfun glfwSetMouseButtonCallback( + IntPtr window, + GLFWmousebuttonfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowOpacity")] internal static extern unsafe void glfwSetWindowOpacity(IntPtr window, float opacity); + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorPosCallback" )] internal static extern unsafe GLFWcursorposfun glfwSetCursorPosCallback( + IntPtr window, + GLFWcursorposfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwIconifyWindow")] internal static extern unsafe void glfwIconifyWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwSetCursorEnterCallback" )] internal static extern unsafe GLFWcursorenterfun glfwSetCursorEnterCallback( + IntPtr window, + GLFWcursorenterfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwRestoreWindow")] internal static extern unsafe void glfwRestoreWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwSetScrollCallback" )] internal static extern unsafe GLFWscrollfun glfwSetScrollCallback( + IntPtr window, + GLFWscrollfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwMaximizeWindow")] internal static extern unsafe void glfwMaximizeWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwSetDropCallback" )] internal static extern unsafe GLFWdropfun glfwSetDropCallback( + IntPtr window, + GLFWdropfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwShowWindow")] internal static extern unsafe void glfwShowWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwJoystickPresent" )] internal static extern unsafe int glfwJoystickPresent( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwHideWindow")] internal static extern unsafe void glfwHideWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickAxes" )] internal static extern unsafe float* glfwGetJoystickAxes( + int jid, + int* count ); - [DllImport(SSC_libName, EntryPoint = "glfwFocusWindow")] internal static extern unsafe void glfwFocusWindow(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickButtons" )] internal static extern unsafe byte* glfwGetJoystickButtons( + int jid, + int* count ); - [DllImport(SSC_libName, EntryPoint = "glfwRequestWindowAttention")] internal static extern unsafe void glfwRequestWindowAttention(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickHats" )] internal static extern unsafe byte* glfwGetJoystickHats( + int jid, + int* count ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowMonitor")] internal static extern unsafe IntPtr glfwGetWindowMonitor(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickName" )] internal static extern unsafe byte* glfwGetJoystickName( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowMonitor")] internal static extern unsafe void glfwSetWindowMonitor(IntPtr window, IntPtr monitor, int xpos, int ypos, int width, int height, int refreshRate); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickGUID" )] internal static extern unsafe byte* glfwGetJoystickGUID( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowAttrib")] internal static extern unsafe int glfwGetWindowAttrib(IntPtr window, int attrib); + [DllImport( SSC_libName, EntryPoint = "glfwSetJoystickUserPointer" )] internal static extern unsafe void glfwSetJoystickUserPointer( + int jid, + void* pointer ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowAttrib")] internal static extern unsafe void glfwSetWindowAttrib(IntPtr window, int attrib, int value); + [DllImport( SSC_libName, EntryPoint = "glfwGetJoystickUserPointer" )] internal static extern unsafe void* glfwGetJoystickUserPointer( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowUserPointer")] internal static extern unsafe void glfwSetWindowUserPointer(IntPtr window, void* pointer); + [DllImport( SSC_libName, EntryPoint = "glfwJoystickIsGamepad" )] internal static extern unsafe int glfwJoystickIsGamepad( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwGetWindowUserPointer")] internal static extern unsafe void* glfwGetWindowUserPointer(IntPtr window); + [DllImport( SSC_libName, EntryPoint = "glfwSetJoystickCallback" )] internal static extern unsafe GLFWjoystickfun glfwSetJoystickCallback( + GLFWjoystickfun callback ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowPosCallback")] internal static extern unsafe GLFWwindowposfun glfwSetWindowPosCallback(IntPtr window, IntPtr callback); + [DllImport( SSC_libName, EntryPoint = "glfwUpdateGamepadMappings" )] internal static extern unsafe int glfwUpdateGamepadMappings( + byte* str ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowSizeCallback")] internal static extern unsafe GLFWwindowsizefun glfwSetWindowSizeCallback(IntPtr window, GLFWwindowsizefun callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetGamepadName" )] internal static extern unsafe byte* glfwGetGamepadName( + int jid ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowCloseCallback")] internal static extern unsafe GLFWwindowclosefun glfwSetWindowCloseCallback(IntPtr window, GLFWwindowclosefun callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetGamepadState" )] internal static extern unsafe int glfwGetGamepadState( + int jid, + GLFWgamepadstate* state ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowRefreshCallback")] internal static extern unsafe GLFWwindowrefreshfun glfwSetWindowRefreshCallback(IntPtr window, GLFWwindowrefreshfun callback); + [DllImport( SSC_libName, EntryPoint = "glfwSetClipboardString" )] internal static extern unsafe void glfwSetClipboardString( + IntPtr window, + byte* str ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowFocusCallback")] internal static extern unsafe GLFWwindowfocusfun glfwSetWindowFocusCallback(IntPtr window, GLFWwindowfocusfun callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetClipboardString" )] internal static extern unsafe byte* glfwGetClipboardString( + IntPtr window ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowIconifyCallback")] internal static extern unsafe GLFWwindowiconifyfun glfwSetWindowIconifyCallback(IntPtr window, GLFWwindowiconifyfun callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetTime" )] internal static extern unsafe double glfwGetTime( + ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowMaximizeCallback")] internal static extern unsafe GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(IntPtr window, GLFWwindowmaximizefun callback); + [DllImport( SSC_libName, EntryPoint = "glfwSetTime" )] internal static extern unsafe void glfwSetTime( + double time ); - [DllImport(SSC_libName, EntryPoint = "glfwSetFramebufferSizeCallback")] internal static extern unsafe FrameBufferSizeHandler glfwSetFramebufferSizeCallback(IntPtr window, IntPtr callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetTimerValue" )] internal static extern unsafe ulong* glfwGetTimerValue( + ); - [DllImport(SSC_libName, EntryPoint = "glfwSetWindowContentScaleCallback")] internal static extern unsafe GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(IntPtr window, GLFWwindowcontentscalefun callback); + [DllImport( SSC_libName, EntryPoint = "glfwGetTimerFrequency" )] internal static extern unsafe ulong* glfwGetTimerFrequency( + ); - [DllImport(SSC_libName, EntryPoint = "glfwPollEvents")] internal static extern unsafe void glfwPollEvents(); + [DllImport( SSC_libName, EntryPoint = "glfwMakeContextCurrent" )] internal static extern unsafe void glfwMakeContextCurrent( + IntPtr window ); - [DllImport(SSC_libName, EntryPoint = "glfwWaitEvents")] internal static extern unsafe void glfwWaitEvents(); + [DllImport( SSC_libName, EntryPoint = "glfwGetCurrentContext" )] internal static extern unsafe IntPtr glfwGetCurrentContext( + ); - [DllImport(SSC_libName, EntryPoint = "glfwWaitEventsTimeout")] internal static extern unsafe void glfwWaitEventsTimeout(double timeout); + [DllImport( SSC_libName, EntryPoint = "glfwSwapBuffers" )] internal static extern unsafe void glfwSwapBuffers( + IntPtr window ); - [DllImport(SSC_libName, EntryPoint = "glfwPostEmptyEvent")] internal static extern unsafe void glfwPostEmptyEvent(); + [DllImport( SSC_libName, EntryPoint = "glfwSwapInterval" )] internal static extern unsafe void glfwSwapInterval( + int interval ); - [DllImport(SSC_libName, EntryPoint = "glfwGetInputMode")] internal static extern unsafe int glfwGetInputMode(IntPtr window, int mode); + [DllImport( SSC_libName, EntryPoint = "glfwExtensionSupported" )] internal static extern unsafe int glfwExtensionSupported( + byte* extension ); - [DllImport(SSC_libName, EntryPoint = "glfwSetInputMode")] internal static extern unsafe void glfwSetInputMode(IntPtr window, int mode, int value); + [DllImport( + SSC_libName, + EntryPoint = "glfwGetProcAddress", + CharSet = CharSet.Ansi )] internal static extern unsafe IntPtr glfwGetProcAddress( + string procname ); - [DllImport(SSC_libName, EntryPoint = "glfwRawMouseMotionSupported")] internal static extern unsafe int glfwRawMouseMotionSupported(); + [DllImport( SSC_libName, EntryPoint = "glfwVulkanSupported" )] internal static extern unsafe int glfwVulkanSupported( + ); - [DllImport(SSC_libName, EntryPoint = "glfwGetKeyName")] internal static extern unsafe byte* glfwGetKeyName(int key, int scancode); - - [DllImport(SSC_libName, EntryPoint = "glfwGetKeyScancode")] internal static extern unsafe int glfwGetKeyScancode(int key); - - [DllImport(SSC_libName, EntryPoint = "glfwGetKey")] internal static extern unsafe KeyStatus glfwGetKey(IntPtr window, int key); - - [DllImport(SSC_libName, EntryPoint = "glfwGetMouseButton")] internal static extern unsafe int glfwGetMouseButton(IntPtr window, int button); - - [DllImport(SSC_libName, EntryPoint = "glfwGetCursorPos")] internal static extern unsafe void glfwGetCursorPos(IntPtr window, double* xpos, double* ypos); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCursorPos")] internal static extern unsafe void glfwSetCursorPos(IntPtr window, double xpos, double ypos); - - [DllImport(SSC_libName, EntryPoint = "glfwCreateCursor")] internal static extern unsafe GLFWcursor* glfwCreateCursor(GLFWimage* image, int xhot, int yhot); - - [DllImport(SSC_libName, EntryPoint = "glfwCreateStandardCursor")] internal static extern unsafe GLFWcursor* glfwCreateStandardCursor(int shape); - - [DllImport(SSC_libName, EntryPoint = "glfwDestroyCursor")] internal static extern unsafe void glfwDestroyCursor(GLFWcursor* cursor); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCursor")] internal static extern unsafe void glfwSetCursor(IntPtr window, GLFWcursor* cursor); - - [DllImport(SSC_libName, EntryPoint = "glfwSetKeyCallback")] internal static extern unsafe GLFWkeyfun glfwSetKeyCallback(IntPtr window, GLFWkeyfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCharCallback")] internal static extern unsafe GLFWcharfun glfwSetCharCallback(IntPtr window, GLFWcharfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCharModsCallback")] internal static extern unsafe GLFWcharmodsfun glfwSetCharModsCallback(IntPtr window, GLFWcharmodsfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetMouseButtonCallback")] internal static extern unsafe GLFWmousebuttonfun glfwSetMouseButtonCallback(IntPtr window, GLFWmousebuttonfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCursorPosCallback")] internal static extern unsafe GLFWcursorposfun glfwSetCursorPosCallback(IntPtr window, GLFWcursorposfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetCursorEnterCallback")] internal static extern unsafe GLFWcursorenterfun glfwSetCursorEnterCallback(IntPtr window, GLFWcursorenterfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetScrollCallback")] internal static extern unsafe GLFWscrollfun glfwSetScrollCallback(IntPtr window, GLFWscrollfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwSetDropCallback")] internal static extern unsafe GLFWdropfun glfwSetDropCallback(IntPtr window, GLFWdropfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwJoystickPresent")] internal static extern unsafe int glfwJoystickPresent(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickAxes")] internal static extern unsafe float* glfwGetJoystickAxes(int jid, int* count); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickButtons")] internal static extern unsafe byte* glfwGetJoystickButtons(int jid, int* count); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickHats")] internal static extern unsafe byte* glfwGetJoystickHats(int jid, int* count); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickName")] internal static extern unsafe byte* glfwGetJoystickName(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickGUID")] internal static extern unsafe byte* glfwGetJoystickGUID(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwSetJoystickUserPointer")] internal static extern unsafe void glfwSetJoystickUserPointer(int jid, void* pointer); - - [DllImport(SSC_libName, EntryPoint = "glfwGetJoystickUserPointer")] internal static extern unsafe void* glfwGetJoystickUserPointer(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwJoystickIsGamepad")] internal static extern unsafe int glfwJoystickIsGamepad(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwSetJoystickCallback")] internal static extern unsafe GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); - - [DllImport(SSC_libName, EntryPoint = "glfwUpdateGamepadMappings")] internal static extern unsafe int glfwUpdateGamepadMappings(byte* str); - - [DllImport(SSC_libName, EntryPoint = "glfwGetGamepadName")] internal static extern unsafe byte* glfwGetGamepadName(int jid); - - [DllImport(SSC_libName, EntryPoint = "glfwGetGamepadState")] internal static extern unsafe int glfwGetGamepadState(int jid, GLFWgamepadstate* state); - - [DllImport(SSC_libName, EntryPoint = "glfwSetClipboardString")] internal static extern unsafe void glfwSetClipboardString(IntPtr window, byte* str); - - [DllImport(SSC_libName, EntryPoint = "glfwGetClipboardString")] internal static extern unsafe byte* glfwGetClipboardString(IntPtr window); - - [DllImport(SSC_libName, EntryPoint = "glfwGetTime")] internal static extern unsafe double glfwGetTime(); - - [DllImport(SSC_libName, EntryPoint = "glfwSetTime")] internal static extern unsafe void glfwSetTime(double time); - - [DllImport(SSC_libName, EntryPoint = "glfwGetTimerValue")] internal static extern unsafe ulong* glfwGetTimerValue(); - - [DllImport(SSC_libName, EntryPoint = "glfwGetTimerFrequency")] internal static extern unsafe ulong* glfwGetTimerFrequency(); - - [DllImport(SSC_libName, EntryPoint = "glfwMakeContextCurrent")] internal static extern unsafe void glfwMakeContextCurrent(IntPtr window); - - [DllImport(SSC_libName, EntryPoint = "glfwGetCurrentContext")] internal static extern unsafe IntPtr glfwGetCurrentContext(); - - [DllImport(SSC_libName, EntryPoint = "glfwSwapBuffers")] internal static extern unsafe void glfwSwapBuffers(IntPtr window); - - [DllImport(SSC_libName, EntryPoint = "glfwSwapInterval")] internal static extern unsafe void glfwSwapInterval(int interval); - - [DllImport(SSC_libName, EntryPoint = "glfwExtensionSupported")] internal static extern unsafe int glfwExtensionSupported(byte* extension); - - [DllImport(SSC_libName, EntryPoint = "glfwGetProcAddress", CharSet = CharSet.Ansi)] internal static extern unsafe IntPtr glfwGetProcAddress(string procname); - - [DllImport(SSC_libName, EntryPoint = "glfwVulkanSupported")] internal static extern unsafe int glfwVulkanSupported(); - - [DllImport(SSC_libName, EntryPoint = "glfwGetRequiredInstanceExtensions")] internal static extern unsafe byte** glfwGetRequiredInstanceExtensions(uint* count); + [DllImport( + SSC_libName, + EntryPoint = "glfwGetRequiredInstanceExtensions" )] internal static extern unsafe byte** glfwGetRequiredInstanceExtensions( + uint* count ); //[DllImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal extern unsafe static GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, byte* procname); //[DllImport(InternalIO.SSC_libname, EntryPoint = "glfwGetPhysicalDevicePresentationSupport")] internal extern unsafe static int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint* queuefamily); diff --git a/源代码/StgSharp/Graphics/frameworkSyncContext.cs b/源代码/StgSharp/Graphics/frameworkSyncContext.cs new file mode 100644 index 00000000..661b20d1 --- /dev/null +++ b/源代码/StgSharp/Graphics/frameworkSyncContext.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="frameworkSyncContext.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public class FrameworkSyncContext : SynchronizationContext + { + + private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext( + ); + + private readonly BlockingCollection _syncContexts = new BlockingCollection( + ); + private readonly Thread _mainThread = Thread.CurrentThread; + + public FrameworkSyncContext() + { + _syncContexts = new BlockingCollection(); + _mainThread = Thread.CurrentThread; + } + + public static FrameworkSyncContext MainThreadContext + { + get => _mainThreadContext; + } + + public override void Post( SendOrPostCallback d, object state ) + { + _syncContexts.Add( d ); + } + + public override void Send( SendOrPostCallback d, object state ) + { + if( Thread.CurrentThread == _mainThread ) { + d( state ); + } else { + Post( d, state ); + } + } + + } +} diff --git a/源代码/StgSharp/Logic/Blueprint/Blueprint.cs b/源代码/StgSharp/Logic/Blueprint/Blueprint.cs index 2f763dce..a8211062 100644 --- a/源代码/StgSharp/Logic/Blueprint/Blueprint.cs +++ b/源代码/StgSharp/Logic/Blueprint/Blueprint.cs @@ -30,7 +30,6 @@ //----------------------------------------------------------------------- using StgSharp; - using System; using System.Collections.Generic; using System.Linq; @@ -46,9 +45,8 @@ using System.Xml.Serialization; namespace StgSharp.BluePrint { /// - /// A sets of complex logic designed for running in multi threads environment. - /// Warning: do not run a instance in multi threads more than once. - /// + /// A sets of complex logic designed for running in multi threads environment. Warning: do not + /// run a instance in multi threads more than once. /// public partial class Blueprint : IConvertableToBlueprintNode { @@ -71,12 +69,13 @@ namespace StgSharp.BluePrint allNode = new Dictionary(); globalNodeList = new List(); nativeNodeList = new List(); - runningStat = new SemaphoreSlim(1, 1); - beginNode = new BeginningNode(this); - endNode = new EndingNode(this); + runningStat = new SemaphoreSlim( 1, 1 ); + beginNode = new BeginningNode( this ); + endNode = new EndingNode( this ); } public BlueprintNode BeginLayer => beginNode; + public BlueprintNode EndLayer => endNode; public bool IsRunning @@ -97,20 +96,21 @@ namespace StgSharp.BluePrint } /**/ - public void AddNode(BlueprintNode node, bool isNative) + public void AddNode( BlueprintNode node, bool isNative ) { - _ = node ?? throw new ArgumentNullException(nameof(node)); + _ = node ?? throw new ArgumentNullException( nameof( node ) ); node.IsNative = isNative; - allNode.Add(node.Name, node); + allNode.Add( node.Name, node ); } - public void ExecuteMain(in Dictionary input, - in Dictionary output) + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) { - BlueprintRunner.Run(this, () => true); + BlueprintRunner.Run( this, () => true ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public (string name, BlueprintPipelineArgs arg)[] GetOutput() { return endNode.OutputData; @@ -118,52 +118,46 @@ namespace StgSharp.BluePrint public void Init() { - foreach (KeyValuePair item in allNode) - { - if (item.Value.IsNative) - { - nativeNodeList.Add(item.Value); - } - else - { - globalNodeList.Add(item.Value); + foreach( KeyValuePair item in allNode ) { + if( item.Value.IsNative ) { + nativeNodeList.Add( item.Value ); + } else { + globalNodeList.Add( item.Value ); } } nativeNodeList.Sort(); globalNodeList.Sort(); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetInput(params (string name, BlueprintPipelineArgs arg)[] parameters) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetInput( + params (string name, BlueprintPipelineArgs arg)[] parameters ) { beginNode.InputData = parameters; } public void Terminate() { - Interlocked.Exchange(ref currentGlobalNodeIndex, int.MaxValue); - Interlocked.Exchange(ref currentNativeNodeIndex, int.MaxValue); + Interlocked.Exchange( ref currentGlobalNodeIndex, int.MaxValue ); + Interlocked.Exchange( ref currentNativeNodeIndex, int.MaxValue ); } - internal bool RequestNexGlobalNode(out BlueprintNode node) + internal bool RequestNexGlobalNode( out BlueprintNode node ) { - if (currentGlobalNodeIndex < globalNodeList.Count) - { - node = globalNodeList[currentGlobalNodeIndex]; - Interlocked.Increment(ref currentGlobalNodeIndex); + if( currentGlobalNodeIndex < globalNodeList.Count ) { + node = globalNodeList[ currentGlobalNodeIndex ]; + Interlocked.Increment( ref currentGlobalNodeIndex ); return true; } node = default!; return false; } - internal bool RequestNextNativeNode(out BlueprintNode node) + internal bool RequestNextNativeNode( out BlueprintNode node ) { - - if (currentNativeNodeIndex < nativeNodeList.Count) - { - node = nativeNodeList[currentNativeNodeIndex]; - Interlocked.Increment(ref currentNativeNodeIndex); + if( currentNativeNodeIndex < nativeNodeList.Count ) { + node = nativeNodeList[ currentNativeNodeIndex ]; + Interlocked.Increment( ref currentNativeNodeIndex ); return true; } node = default!; @@ -172,14 +166,17 @@ namespace StgSharp.BluePrint string[] IConvertableToBlueprintNode.InputInterfacesName { - get { return beginNode.OutputInterfaces.Select(p => p.Key).ToArray(); } + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } } string[] IConvertableToBlueprintNode.OutputInterfacesName { - get { return beginNode.OutputInterfaces.Select(p => p.Key).ToArray(); } + get { return beginNode.OutputInterfaces + .Select( p => p.Key ) + .ToArray(); } } } - } diff --git a/源代码/StgSharp/Logic/Blueprint/BlueprintActionNode.cs b/源代码/StgSharp/Logic/Blueprint/BlueprintActionNode.cs index e8004707..ae04557e 100644 --- a/源代码/StgSharp/Logic/Blueprint/BlueprintActionNode.cs +++ b/源代码/StgSharp/Logic/Blueprint/BlueprintActionNode.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Linq; @@ -45,18 +44,17 @@ namespace StgSharp.BluePrint private string[] outPorts; private Action, Dictionary> mainAction; - internal BlueprintActionNode() - { - - } + internal BlueprintActionNode() { } public string[] InputInterfacesName => inPorts; public string[] OutputInterfacesName => outPorts; - public void ExecuteMain(in Dictionary input, in Dictionary output) + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) { - mainAction?.Invoke(input, output); + mainAction?.Invoke( input, output ); } } diff --git a/源代码/StgSharp/Logic/Blueprint/BlueprintNode.cs b/源代码/StgSharp/Logic/Blueprint/BlueprintNode.cs index aab06cbe..c32b1129 100644 --- a/源代码/StgSharp/Logic/Blueprint/BlueprintNode.cs +++ b/源代码/StgSharp/Logic/Blueprint/BlueprintNode.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Entities; using System; @@ -44,17 +43,16 @@ using System.Threading.Tasks; namespace StgSharp.BluePrint { - /// - /// + /// /// /// - /// Reset pipeline has risk, this operation is a direct operation to port - /// in current node, the port on the other node cannot get the change. + /// Reset pipeline has risk, this operation is a direct operation to port in current node, the + /// port on the other node cannot get the change. /// #pragma warning disable CA1036 public class BlueprintNode : IComparable -#pragma warning restore CA1036 + #pragma warning restore CA1036 { private protected bool levelAvailable, nativeRequested; @@ -64,8 +62,10 @@ namespace StgSharp.BluePrint private IConvertableToBlueprintNode mainOperation; private string name; - internal BlueprintNode(string name, - IConvertableToBlueprintNode node, bool isNative) + internal BlueprintNode( + string name, + IConvertableToBlueprintNode node, + bool isNative ) { this.levelAvailable = false; this.name = name; @@ -73,45 +73,39 @@ namespace StgSharp.BluePrint mainOperation = node; _inputInterfaces = new Dictionary(); _outputInterfaces = new Dictionary(); - foreach (string portName in node.InputInterfacesName) - { - _inputInterfaces.Add(portName, null!); + foreach( string portName in node.InputInterfacesName ) { + _inputInterfaces.Add( portName, null! ); } - foreach (string portName in node.OutputInterfacesName) - { - _outputInterfaces.Add(portName, null!); + foreach( string portName in node.OutputInterfacesName ) { + _outputInterfaces.Add( portName, null! ); } } - -#pragma warning disable CS8618 - internal BlueprintNode(string name, bool isNative, + #pragma warning disable CS8618 + internal BlueprintNode( + string name, + bool isNative, string[] inputPorts, - string[] outputPorts - ) -#pragma warning restore CS8618 + string[] outputPorts ) + #pragma warning restore CS8618 { - if ((inputPorts == null) || (inputPorts.Length == 0)) - { - throw new ArgumentNullException(nameof(inputPorts)); + if( ( inputPorts == null ) || ( inputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( inputPorts ) ); } - if ((outputPorts == null) || (outputPorts.Length == 0)) - { - throw new ArgumentNullException(nameof(outputPorts)); + if( ( outputPorts == null ) || ( outputPorts.Length == 0 ) ) { + throw new ArgumentNullException( nameof( outputPorts ) ); } levelAvailable = false; this.name = name; IsNative = isNative; _inputInterfaces = new Dictionary(); _outputInterfaces = new Dictionary(); - foreach (string portName in inputPorts) - { - _inputInterfaces.Add(portName, null!); + foreach( string portName in inputPorts ) { + _inputInterfaces.Add( portName, null! ); } - foreach (string portName in outputPorts) - { - _outputInterfaces.Add(portName, null!); + foreach( string portName in outputPorts ) { + _outputInterfaces.Add( portName, null! ); } } @@ -125,19 +119,15 @@ namespace StgSharp.BluePrint { get { - if (levelAvailable) - { + if( levelAvailable ) { return _level; } _level = 0; - foreach (KeyValuePair item in _inputInterfaces) - { - if (item.Value == null) - { + foreach( KeyValuePair item in _inputInterfaces ) { + if( item.Value == null ) { continue; } - if (_level <= item.Value.Level) - { + if( _level <= item.Value.Level ) { _level = item.Value.Level; } } @@ -149,6 +139,7 @@ namespace StgSharp.BluePrint public string Name => name; internal Dictionary InputInterfaces => _inputInterfaces; + internal Dictionary OutputInterfaces => _outputInterfaces; internal IConvertableToBlueprintNode Value @@ -156,140 +147,124 @@ namespace StgSharp.BluePrint get => mainOperation; } - public void AddAfter( BlueprintNode former, string formerOutputPortName, - string thisInputPortName) + string thisInputPortName ) { this.levelAvailable = false; - BlueprintPipeline pipeline = new BlueprintPipeline(former, this); - if (former is BeginningNode bnode) - { - bnode.SetCertainOutputPort(formerOutputPortName, pipeline); + BlueprintPipeline pipeline = new BlueprintPipeline( former, this ); + if( former is BeginningNode bnode ) { + bnode.SetCertainOutputPort( formerOutputPortName, pipeline ); + } else { + former.SetCertainOutputPort( formerOutputPortName, pipeline ); } - else - { - former.SetCertainOutputPort(formerOutputPortName, pipeline); - } - SetCertainInputPort(thisInputPortName, pipeline); + SetCertainInputPort( thisInputPortName, pipeline ); } - public void AddBefore( BlueprintNode after, string thisOutputPortName, - string afterInputPortName) + string afterInputPortName ) { this.levelAvailable = false; - BlueprintPipeline pipeline = new BlueprintPipeline(this, after); - if (after is EndingNode enode) - { - enode.SetCertainInputPort(afterInputPortName, pipeline); + BlueprintPipeline pipeline = new BlueprintPipeline( this, after ); + if( after is EndingNode enode ) { + enode.SetCertainInputPort( afterInputPortName, pipeline ); + } else { + after.SetCertainInputPort( afterInputPortName, pipeline ); } - else - { - after.SetCertainInputPort(afterInputPortName, pipeline); - } - SetCertainOutputPort(thisOutputPortName, pipeline); + SetCertainOutputPort( thisOutputPortName, pipeline ); } - public int CompareTo(BlueprintNode other) + public int CompareTo( BlueprintNode other ) { -#pragma warning disable CA1062 - return this.Level.CompareTo(other.Level); -#pragma warning restore CA1062 + #pragma warning disable CA1062 + return this.Level.CompareTo( other.Level ); + #pragma warning restore CA1062 } - public virtual void Run() { - try - { + try { //Console.WriteLine(name); - BlueprintPipeline.WaitAll(_inputInterfaces); - if (mainOperation != null) - { - mainOperation.ExecuteMain(in _inputInterfaces, in _outputInterfaces); + BlueprintPipeline.WaitAll( _inputInterfaces ); + if( mainOperation != null ) { + mainOperation.ExecuteMain( + in _inputInterfaces, in _outputInterfaces ); } } - catch (Exception) - { + catch( Exception ) { throw; } } #region port operation - public BlueprintPipeline GetCertainInputPort(string name) + public BlueprintPipeline GetCertainInputPort( string name ) { BlueprintPipeline ret; - if (!_inputInterfaces.TryGetValue(name, out ret)) - { - throw new Exception($"Cannot find the interface named {name} in node {Name}."); + if( !_inputInterfaces.TryGetValue( name, out ret ) ) { + throw new Exception( + $"Cannot find the interface named {name} in node {Name}." ); } return ret; } - - public BlueprintPipeline GetCertainOutputPort(string name) + public BlueprintPipeline GetCertainOutputPort( string name ) { BlueprintPipeline ret; - if (!_outputInterfaces.TryGetValue(name, out ret)) - { - throw new Exception($"Cannot find the interface named {name} in node {Name}."); + if( !_outputInterfaces.TryGetValue( name, out ret ) ) { + throw new Exception( + $"Cannot find the interface named {name} in node {Name}." ); } return ret; } - public void SetCertainInputPort(string name, BlueprintPipeline pipeline) + public void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) { - if (!_inputInterfaces.ContainsKey(name)) - { - throw new Exception($"Cannot find the interface named {name} in node {Name}."); + if( !_inputInterfaces.ContainsKey( name ) ) { + throw new Exception( + $"Cannot find the interface named {name} in node {Name}." ); } - _inputInterfaces[name] = pipeline; + _inputInterfaces[ name ] = pipeline; } - public void SetCertainOutputPort(string name, BlueprintPipeline pipeline) + public void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) { - if (!_outputInterfaces.ContainsKey(name)) - { - throw new Exception($"Cannot find the interface named {name} in node {Name}."); + if( !_outputInterfaces.ContainsKey( name ) ) { + throw new Exception( + $"Cannot find the interface named {name} in node {Name}." ); } - _outputInterfaces[name] = pipeline; + _outputInterfaces[ name ] = pipeline; } #endregion - - }//--------------------------------- end of class ----------------------------------- - - public class BlueprintNodeRunException : Exception { - protected BlueprintNodeRunException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } + protected BlueprintNodeRunException( + SerializationInfo info, + StreamingContext context ) + : base( info, context ) { } - public BlueprintNodeRunException() - { - } + public BlueprintNodeRunException() { } - public BlueprintNodeRunException(Exception ex) : base(string.Empty, ex) - { - } + public BlueprintNodeRunException( Exception ex ) + : base( string.Empty, ex ) { } - public BlueprintNodeRunException(string message) : base(message) - { - } + public BlueprintNodeRunException( string message ) : base( message ) { } - public BlueprintNodeRunException(string message, Exception innerException) : base(message, innerException) - { - } + public BlueprintNodeRunException( + string message, + Exception innerException ) + : base( message, innerException ) { } } - } diff --git a/源代码/StgSharp/Logic/Blueprint/BlueprintRunner.cs b/源代码/StgSharp/Logic/Blueprint/BlueprintRunner.cs index 9d26ca71..2ff43f7b 100644 --- a/源代码/StgSharp/Logic/Blueprint/BlueprintRunner.cs +++ b/源代码/StgSharp/Logic/Blueprint/BlueprintRunner.cs @@ -28,6 +28,9 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- + +using StgSharp.Threading; + using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -36,9 +39,8 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; -using System.Threading.Tasks; -using StgSharp.Threading; +using System.Threading.Tasks; namespace StgSharp.BluePrint { @@ -46,33 +48,32 @@ namespace StgSharp.BluePrint { private static NodeRunner[] allAvailableTask = new NodeRunner[1]; - private static CancellationTokenSource cts = new CancellationTokenSource(); - private static ConcurrentStack blueprintInWaiting = new ConcurrentStack(); + private static CancellationTokenSource cts = new CancellationTokenSource( + ); + private static ConcurrentStack blueprintInWaiting = new ConcurrentStack( + ); private static int _callingThread; - private static SemaphoreSlim bpLock = new SemaphoreSlim(0, 1); + private static SemaphoreSlim bpLock = new SemaphoreSlim( 0, 1 ); internal static bool IsValidCalling { get { - if ((NodeRunner.CurrentBlueprint == null) || //no bp running at all - ((blueprintInWaiting.Count == 0) && (NodeRunner.CurrentBlueprint.IsRunning == false))) // a bp is quiting + if( ( NodeRunner.CurrentBlueprint == null ) || //no bp running at all + ( ( blueprintInWaiting.Count == 0 ) && ( NodeRunner.CurrentBlueprint.IsRunning == false ) ) ) // a bp is quiting { //in case no bp is running return true; } int? id = Task.CurrentId; - if (id is null) - { + if( id is null ) { // in case calling from main thread and current running bp //Console.WriteLine($"\t{_callingThread}"); //Console.WriteLine($"\t{Thread.CurrentThread.ManagedThreadId}"); return _callingThread == Thread.CurrentThread.ManagedThreadId; } - foreach (NodeRunner item in allAvailableTask) - { - if (item.Id == id) - { + foreach( NodeRunner item in allAvailableTask ) { + if( item.Id == id ) { //if calling from any bp running task return true; } @@ -81,116 +82,105 @@ namespace StgSharp.BluePrint } } - public static void Run(Blueprint blueprint, Func terminateInstructor) + public static void Run( + Blueprint blueprint, + Func terminateInstructor ) { //Console.WriteLine(); - if (blueprint == null) - { + if( blueprint == null ) { return; } - if (terminateInstructor == null) - { - throw new ArgumentNullException(nameof(terminateInstructor)); + if( terminateInstructor == null ) { + throw new ArgumentNullException( nameof( terminateInstructor ) ); } - if (blueprint.IsRunning) - { - throw new InvalidOperationException("Attempt to run a blueprint instance twice."); + if( blueprint.IsRunning ) { + throw new InvalidOperationException( + "Attempt to run a blueprint instance twice." ); } blueprint.ShouldClose = terminateInstructor; - if (IsValidCalling) - { + if( IsValidCalling ) { //Console.WriteLine("valid and run"); - if (InterruptAndRunNewBp(blueprint)) - { - do { } while (InterruptAndRunNewBp(NodeRunner.CurrentBlueprint)); + if( InterruptAndRunNewBp( blueprint ) ) { + do { } while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint )); } - } - else - { + } else { bpLock.Wait(); - if (InterruptAndRunNewBp(blueprint)) - { - do { } while (InterruptAndRunNewBp(NodeRunner.CurrentBlueprint)); + if( InterruptAndRunNewBp( blueprint ) ) { + do { } while (InterruptAndRunNewBp( + NodeRunner.CurrentBlueprint )); } bpLock.Release(); } - Interlocked.Exchange(ref _callingThread, -1); + Interlocked.Exchange( ref _callingThread, -1 ); } - - public static void SetMaxTaskCount(int size) + public static void SetMaxTaskCount( int size ) { - if (size < 1) - { + if( size < 1 ) { size = 1; } - if (allAvailableTask.Length >= size) - { - for (int i = size; i < allAvailableTask.Length; i++) - { - if (allAvailableTask[i] != null) - { - allAvailableTask[i].Cancel(); + if( allAvailableTask.Length >= size ) { + for( int i = size; i < allAvailableTask.Length; i++ ) { + if( allAvailableTask[ i ] != null ) { + allAvailableTask[ i ].Cancel(); } } } - Array.Resize(ref allAvailableTask, size); + Array.Resize( ref allAvailableTask, size ); } public static void Terminate() { cts.Cancel(); NodeRunner.CurrentBlueprint.Terminate(); - foreach (NodeRunner task in allAvailableTask) - { + foreach( NodeRunner task in allAvailableTask ) { task.Cts.Cancel(); } - foreach (Blueprint bp in blueprintInWaiting) - { + foreach( Blueprint bp in blueprintInWaiting ) { bp.Terminate(); } blueprintInWaiting.Clear(); } - internal static bool InterruptAndRunNewBp(Blueprint newBp) + internal static bool InterruptAndRunNewBp( Blueprint newBp ) { - Debug.Assert(newBp != null); - if ((newBp != NodeRunner.CurrentBlueprint) && (NodeRunner.CurrentBlueprint != null)) - { + Debug.Assert( newBp != null ); + if( ( newBp != NodeRunner.CurrentBlueprint ) && ( NodeRunner.CurrentBlueprint != null ) ) { //if a running bp exists - blueprintInWaiting.Push(NodeRunner.CurrentBlueprint); + blueprintInWaiting.Push( NodeRunner.CurrentBlueprint ); } + //load new bp to current bp - Interlocked.Exchange(ref NodeRunner.CurrentBlueprint!, newBp); - Interlocked.Exchange(ref _callingThread, Thread.CurrentThread.ManagedThreadId); + Interlocked.Exchange( ref NodeRunner.CurrentBlueprint!, newBp ); + Interlocked.Exchange( + ref _callingThread, Thread.CurrentThread.ManagedThreadId ); + //run beginning node to init it first. - if (!NodeRunner.CurrentBlueprint.IsRunning) - { - (NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode)!.Run(); + if( !NodeRunner.CurrentBlueprint.IsRunning ) { + ( NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode )!.Run( + ); } + //refresh all tasks - for (int i = 0; i < allAvailableTask.Length; i++) - { - NodeRunner item = allAvailableTask[i]; - if ((item is null) || item.IsCompleted) - { - allAvailableTask[i] = NodeRunner.Run(); + for( int i = 0; i < allAvailableTask.Length; i++ ) { + NodeRunner item = allAvailableTask[ i ]; + if( ( item is null ) || item.IsCompleted ) { + allAvailableTask[ i ] = NodeRunner.Run(); } } BlueprintNode node; - while (!cts.Token.IsCancellationRequested - && NodeRunner.CurrentBlueprint.RequestNextNativeNode(out node)) - { + while( !cts.Token.IsCancellationRequested && NodeRunner.CurrentBlueprint + .RequestNextNativeNode( out node ) ) { node.Run(); - if (!NodeRunner.CurrentBlueprint.IsRunning) - { + if( !NodeRunner.CurrentBlueprint.IsRunning ) { break; } } - (NodeRunner.CurrentBlueprint.EndLayer as EndingNode)!.Run(); - return blueprintInWaiting.TryPeek(out NodeRunner.CurrentBlueprint); + ( NodeRunner.CurrentBlueprint.EndLayer as EndingNode )!.Run(); + return blueprintInWaiting.TryPeek( out NodeRunner.CurrentBlueprint ); } } @@ -200,7 +190,8 @@ namespace StgSharp.BluePrint private static Blueprint _current; - internal NodeRunner() : base() + internal NodeRunner() + : base() { _startup = InternalRun; } @@ -213,20 +204,20 @@ namespace StgSharp.BluePrint internal static NodeRunner Run() { NodeRunner ret = new NodeRunner { _startup = InternalRun }; - ret.taskInternal = Task.Run(ret.InternalAction); + ret._internalTask = Task.Run( ret.InternalAction ); return ret; } - private static void InternalRun(CancellationToken token) + private static void InternalRun( CancellationToken token ) { //Console.WriteLine("Task Begin"); BlueprintNode item; - while ((CurrentBlueprint != null) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested - && CurrentBlueprint.RequestNexGlobalNode(out item)) - { + while( ( CurrentBlueprint != null ) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested && CurrentBlueprint.RequestNexGlobalNode( + out item ) ) { //Console.WriteLine($"Get node of {item.Name}, going to run."); item.Run(); } + //Console.WriteLine("Task Completed"); } diff --git a/源代码/StgSharp/Logic/Blueprint/BpNodeActionAttribute.cs b/源代码/StgSharp/Logic/Blueprint/BpNodeActionAttribute.cs index 0f7bedcf..3862f2a9 100644 --- a/源代码/StgSharp/Logic/Blueprint/BpNodeActionAttribute.cs +++ b/源代码/StgSharp/Logic/Blueprint/BpNodeActionAttribute.cs @@ -34,8 +34,7 @@ using System.Text; namespace StgSharp.BluePrint { - - [AttributeUsage(AttributeTargets.Method)] + [AttributeUsage( AttributeTargets.Method )] public sealed class BpNodeActionAttribute : Attribute { @@ -43,21 +42,24 @@ namespace StgSharp.BluePrint private string[] _output; private int _operationSpan; - public BpNodeActionAttribute(int operationSpan) + public BpNodeActionAttribute( int operationSpan ) { _input = Array.Empty(); _output = Array.Empty(); _operationSpan = operationSpan; } - public BpNodeActionAttribute(string[] inputPort, string[] outputPort) + public BpNodeActionAttribute( string[] inputPort, string[] outputPort ) { _input = inputPort; _output = outputPort; this._operationSpan = 1; } - public BpNodeActionAttribute(string[] inputPort, string[] outputPort, int operationSpan) + public BpNodeActionAttribute( + string[] inputPort, + string[] outputPort, + int operationSpan ) { _input = inputPort; _output = outputPort; @@ -65,7 +67,9 @@ namespace StgSharp.BluePrint } public string[] InputPort => _input; + public string[] OutputPort => _output; + public int OperationSpan => _operationSpan; } diff --git a/源代码/StgSharp/Logic/Blueprint/BpNodeBuilder.cs b/源代码/StgSharp/Logic/Blueprint/BpNodeBuilder.cs index 488d7edb..6d10d3ce 100644 --- a/源代码/StgSharp/Logic/Blueprint/BpNodeBuilder.cs +++ b/源代码/StgSharp/Logic/Blueprint/BpNodeBuilder.cs @@ -37,34 +37,39 @@ namespace StgSharp.BluePrint public static class BpNodeConverter { - public static IConvertableToBlueprintNode AsBlueprintNodeMainExecution(this BlueprintNodeOperation startUp) + public static IConvertableToBlueprintNode AsBlueprintNodeMainExecution( + this BlueprintNodeOperation startUp ) { - if (startUp == null) - { - throw new ArgumentNullException(nameof(startUp)); + if( startUp == null ) { + throw new ArgumentNullException( nameof( startUp ) ); } - object[] attributeArray = startUp.Method.GetCustomAttributes(typeof(BpNodeActionAttribute), false); - BpNodeActionAttribute attri = (BpNodeActionAttribute)attributeArray[0]; - if ((attributeArray.Length < 0) || (attri == null)) - { - throw new InvalidCastException($"Delegate {nameof(startUp)} is not marked by {typeof(BpNodeActionAttribute)}"); + object[] attributeArray = startUp.Method + .GetCustomAttributes( typeof( BpNodeActionAttribute ), false ); + BpNodeActionAttribute attri = ( BpNodeActionAttribute )attributeArray[ + 0 ]; + if( ( attributeArray.Length < 0 ) || ( attri == null ) ) { + throw new InvalidCastException( + $"Delegate {nameof(startUp)} is not marked by {typeof(BpNodeActionAttribute)}" ); } - return new DefaultConvertableToBlueprintNode(startUp, attri.InputPort, attri.OutputPort); + return new DefaultConvertableToBlueprintNode( + startUp, attri.InputPort, attri.OutputPort ); } - public static IConvertableToBlueprintNode AsBlueprintNodeMainExecution(this Action startUp) + public static IConvertableToBlueprintNode AsBlueprintNodeMainExecution( + this Action startUp ) { - if (startUp == null) - { - throw new ArgumentNullException(nameof(startUp)); + if( startUp == null ) { + throw new ArgumentNullException( nameof( startUp ) ); } - object[] attributeArray = startUp.Method.GetCustomAttributes(typeof(BpNodeActionAttribute), false); - BpNodeActionAttribute attri = (BpNodeActionAttribute)attributeArray[0]; - if ((attributeArray.Length < 0) || (attri == null)) - { - throw new InvalidCastException($"Delegate {nameof(startUp)} is not marked by {typeof(BpNodeActionAttribute)}"); + object[] attributeArray = startUp.Method + .GetCustomAttributes( typeof( BpNodeActionAttribute ), false ); + BpNodeActionAttribute attri = ( BpNodeActionAttribute )attributeArray[ + 0 ]; + if( ( attributeArray.Length < 0 ) || ( attri == null ) ) { + throw new InvalidCastException( + $"Delegate {nameof(startUp)} is not marked by {typeof(BpNodeActionAttribute)}" ); } - return new CrossFrameOperation(startUp, attri.OperationSpan); + return new CrossFrameOperation( startUp, attri.OperationSpan ); } } diff --git a/源代码/StgSharp/Logic/Blueprint/CrossFrameBlueprintNode.cs b/源代码/StgSharp/Logic/Blueprint/CrossFrameBlueprintNode.cs index 77c2085a..69fd1192 100644 --- a/源代码/StgSharp/Logic/Blueprint/CrossFrameBlueprintNode.cs +++ b/源代码/StgSharp/Logic/Blueprint/CrossFrameBlueprintNode.cs @@ -45,34 +45,39 @@ namespace StgSharp.BluePrint private readonly int cycleCount; - public CrossFrameOperation(Action startup, int cycleCount) + public CrossFrameOperation( Action startup, int cycleCount ) { MainExecution = startup; - this.cycleCount = (cycleCount > 1) ? cycleCount : throw new ArgumentException( - $"{$"The {typeof(CrossFrameOperation).Name} crosses only one cycle, "}{$"please use a {typeof(BlueprintNode).Name} instead."}"); + this.cycleCount = ( cycleCount > 1 ) ? + cycleCount : throw new ArgumentException( + $"{$"The {typeof(CrossFrameOperation).Name} crosses only one cycle, "}{$"please use a {typeof(BlueprintNode).Name} instead."}" ); this.cycleCount = cycleCount; currentCount = cycleCount; } - public Action MainExecution { get; private protected set; } + public Action MainExecution + { + get; + private protected set; + } public static string InputInterfacesName => "TaskIn"; public static string OutputInterfacesName => "TaskOut"; - public void ExecuteMain(in Dictionary input, in Dictionary output) + public void ExecuteMain( + in Dictionary input, + in Dictionary output ) { - if (currentCount < cycleCount) - { - Interlocked.Increment(ref currentCount); - } - else - { - Interlocked.Exchange(ref currentCount, 0); - Task.Run(MainExecution); + if( currentCount < cycleCount ) { + Interlocked.Increment( ref currentCount ); + } else { + Interlocked.Exchange( ref currentCount, 0 ); + Task.Run( MainExecution ); } + //Console.WriteLine(currentCount); - BlueprintPipeline.SkipAll(output); + BlueprintPipeline.SkipAll( output ); } string[] IConvertableToBlueprintNode.InputInterfacesName => [InputInterfacesName]; diff --git a/源代码/StgSharp/Logic/Blueprint/IConvertableToBlueprintNode.cs b/源代码/StgSharp/Logic/Blueprint/IConvertableToBlueprintNode.cs index 0201d8a2..7a3575da 100644 --- a/源代码/StgSharp/Logic/Blueprint/IConvertableToBlueprintNode.cs +++ b/源代码/StgSharp/Logic/Blueprint/IConvertableToBlueprintNode.cs @@ -35,25 +35,30 @@ using System.Text; namespace StgSharp.BluePrint { - - public delegate void BlueprintNodeOperation(in Dictionary input, in Dictionary output); + public delegate void BlueprintNodeOperation( + in Dictionary input, + in Dictionary output ); public interface IConvertableToBlueprintNode { - #pragma warning disable CA1819 - public string[] InputInterfacesName { get; } -#pragma warning restore CA1819 + public string[] InputInterfacesName + { + get; + } + #pragma warning restore CA1819 -#pragma warning disable CA1819 - public string[] OutputInterfacesName { get; } -#pragma warning restore CA1819 + #pragma warning disable CA1819 + public string[] OutputInterfacesName + { + get; + } + #pragma warning restore CA1819 - - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void ExecuteMain( - in Dictionary input, - in Dictionary output); + in Dictionary input, + in Dictionary output ); } @@ -64,16 +69,21 @@ namespace StgSharp.BluePrint private string[] _output; private BlueprintNodeOperation _execution; - public DefaultConvertableToBlueprintNode(BlueprintNodeOperation execution, string[] input, string[] output) + public DefaultConvertableToBlueprintNode( + BlueprintNodeOperation execution, + string[] input, + string[] output ) { _input = input; _output = output; _execution = execution; } - void IConvertableToBlueprintNode.ExecuteMain(in Dictionary input, in Dictionary output) + void IConvertableToBlueprintNode.ExecuteMain( + in Dictionary input, + in Dictionary output ) { - _execution(in input, in output); + _execution( in input, in output ); } string[] IConvertableToBlueprintNode.InputInterfacesName => _input; diff --git a/源代码/StgSharp/Logic/Blueprint/PipeLine.cs b/源代码/StgSharp/Logic/Blueprint/PipeLine.cs index 4f32c541..c40da366 100644 --- a/源代码/StgSharp/Logic/Blueprint/PipeLine.cs +++ b/源代码/StgSharp/Logic/Blueprint/PipeLine.cs @@ -40,7 +40,6 @@ using System.Threading.Tasks; namespace StgSharp.BluePrint { - public class BlueprintPipeline { @@ -49,11 +48,12 @@ namespace StgSharp.BluePrint private BlueprintPipelineArgs args; private SemaphoreSlim formerCompleteSemaphore; - public BlueprintPipeline(BlueprintNode former, BlueprintNode after) + public BlueprintPipeline( BlueprintNode former, BlueprintNode after ) { this.former = former; this.after = after; - formerCompleteSemaphore = new SemaphoreSlim(initialCount: 0, maxCount: 1); + formerCompleteSemaphore = new SemaphoreSlim( + initialCount: 0, maxCount: 1 ); } public BlueprintNode After => after; @@ -68,31 +68,27 @@ namespace StgSharp.BluePrint public int Level => former.Level; - public static void SkipAll(Dictionary ports) + public static void SkipAll( + Dictionary ports ) { - if (ports == null) - { - throw new ArgumentNullException(nameof(ports)); + if( ports == null ) { + throw new ArgumentNullException( nameof( ports ) ); } - foreach (KeyValuePair item in ports) - { - if (item.Value != null) - { + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { item.Value.CompleteAndSkip(); } } } - public static void WaitAll(Dictionary ports) + public static void WaitAll( + Dictionary ports ) { - if (ports == null) - { - throw new ArgumentNullException(nameof(ports)); + if( ports == null ) { + throw new ArgumentNullException( nameof( ports ) ); } - foreach (KeyValuePair item in ports) - { - if (item.Value != null) - { + foreach( KeyValuePair item in ports ) { + if( item.Value != null ) { item.Value.WaitForStart(); } } @@ -111,30 +107,31 @@ namespace StgSharp.BluePrint #region pipline op - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void CompleteAndSkip() { //Console.WriteLine($"Complete\t{former.Name}\t->\t{after.Name}"); formerCompleteSemaphore.Release(); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void CompleteAndWriteData(BlueprintPipelineArgs args) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void CompleteAndWriteData( BlueprintPipelineArgs args ) { this.args = args; CompleteAndSkip(); } #endregion - - - } public abstract class BlueprintPipelineArgs { - public object? Value { get; set; } + public object? Value + { + get; + set; + } } } diff --git a/源代码/StgSharp/Logic/Blueprint/RouteSwitch.cs b/源代码/StgSharp/Logic/Blueprint/RouteSwitch.cs index 88edae4e..79fa1c90 100644 --- a/源代码/StgSharp/Logic/Blueprint/RouteSwitch.cs +++ b/源代码/StgSharp/Logic/Blueprint/RouteSwitch.cs @@ -42,28 +42,27 @@ namespace StgSharp.BluePrint private protected Dictionary openingRule)> outputDictionary; - public RouteSwitch(string name, bool isNative, string inputPorts) : - base(name, isNative, [inputPorts], [string.Empty]) + public RouteSwitch( string name, bool isNative, string inputPorts ) + : base( name, isNative, [inputPorts], [string.Empty] ) { - outputDictionary = new Dictionary openingRule)>(); + outputDictionary = new Dictionary openingRule)>( + ); } public new int Level { get { - if (levelAvailable) - { + if( levelAvailable ) { return _level; } _level = 0; - KeyValuePair item = _inputInterfaces.First(); - if (item.Value == null) - { + KeyValuePair item = _inputInterfaces.First( + ); + if( item.Value == null ) { throw new InvalidOperationException(); } - if (_level <= item.Value.Level) - { + if( _level <= item.Value.Level ) { _level = item.Value.Level; } return _level; @@ -73,43 +72,40 @@ namespace StgSharp.BluePrint public new void AddBefore( BlueprintNode after, string thisOutputPortName, - string afterInputPortName) + string afterInputPortName ) { - this.AppendNode(after, afterInputPortName, () => true); + this.AppendNode( after, afterInputPortName, () => true ); } - public void AppendNode(BlueprintNode node, string portName, Func openningRule) + public void AppendNode( + BlueprintNode node, + string portName, + Func openningRule ) { - if (node == null) - { - throw new ArgumentNullException(nameof(node)); + if( node == null ) { + throw new ArgumentNullException( nameof( node ) ); } string indexName = $"{node.Name}.{portName}"; - BlueprintPipeline p = new BlueprintPipeline(this, node); - node.InputInterfaces[portName] = p; - outputDictionary.Add(indexName, (p, openningRule)); + BlueprintPipeline p = new BlueprintPipeline( this, node ); + node.InputInterfaces[ portName ] = p; + outputDictionary.Add( indexName, (p, openningRule) ); } public new void Run() { - try - { + try { BlueprintPipeline input = InputInterfaces.First().Value; input.WaitForStart(); - foreach (KeyValuePair openingRule)> item in outputDictionary) - { - if (item.Value.openingRule()) - { - item.Value.pipeline.CompleteAndWriteData(input.Args); + foreach( KeyValuePair openingRule)> item in outputDictionary ) { + if( item.Value.openingRule() ) { + item.Value.pipeline.CompleteAndWriteData( input.Args ); } } } - catch (Exception) - { + catch( Exception ) { throw; } } } - } diff --git a/源代码/StgSharp/Logic/Blueprint/SideNode.cs b/源代码/StgSharp/Logic/Blueprint/SideNode.cs index 9e580b2c..e0d0238f 100644 --- a/源代码/StgSharp/Logic/Blueprint/SideNode.cs +++ b/源代码/StgSharp/Logic/Blueprint/SideNode.cs @@ -29,7 +29,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Globalization; @@ -45,8 +44,8 @@ namespace StgSharp.BluePrint private Blueprint _bp; - public BeginningNode(Blueprint bp) : base(name: "BeginningNode", true, ["default"], ["default"] - ) + public BeginningNode( Blueprint bp ) + : base( name: "BeginningNode", true, ["default"], ["default"] ) { _bp = bp; } @@ -55,13 +54,11 @@ namespace StgSharp.BluePrint { set { - if (value == null) - { + if( value == null ) { return; } - foreach ((string name, BlueprintPipelineArgs arg) parameter in value) - { - OutputInterfaces[parameter.name].Args = parameter.arg; + foreach( (string name, BlueprintPipelineArgs arg) parameter in value ) { + OutputInterfaces[ parameter.name ].Args = parameter.arg; } } } @@ -69,16 +66,17 @@ namespace StgSharp.BluePrint public override void Run() { _bp.RunningStat.Wait(); - BlueprintPipeline.SkipAll(_outputInterfaces); + BlueprintPipeline.SkipAll( _outputInterfaces ); } - public new void SetCertainOutputPort(string name, BlueprintPipeline pipeline) + public new void SetCertainOutputPort( + string name, + BlueprintPipeline pipeline ) { - if (_outputInterfaces.ContainsKey(name)) - { - _outputInterfaces[name] = pipeline; + if( _outputInterfaces.ContainsKey( name ) ) { + _outputInterfaces[ name ] = pipeline; } - _outputInterfaces.Add(name, pipeline); + _outputInterfaces.Add( name, pipeline ); } } @@ -88,32 +86,35 @@ namespace StgSharp.BluePrint private Blueprint _bp; - public EndingNode(Blueprint bp) : base(name: "EndingNode", true, ["default"], ["default"] - ) + public EndingNode( Blueprint bp ) + : base( name: "EndingNode", true, ["default"], ["default"] ) { _bp = bp; } internal (string name, BlueprintPipelineArgs arg)[] OutputData { - get { return InputInterfaces.Select(key => (key.Key, key.Value.Args)).ToArray(); } + get { return InputInterfaces.Select( + key => (key.Key, key.Value.Args) ) + .ToArray(); } } public override void Run() { - BlueprintPipeline.WaitAll(_inputInterfaces); - Interlocked.Exchange(ref _bp.currentGlobalNodeIndex, 0); - Interlocked.Exchange(ref _bp.currentNativeNodeIndex, 0); + BlueprintPipeline.WaitAll( _inputInterfaces ); + Interlocked.Exchange( ref _bp.currentGlobalNodeIndex, 0 ); + Interlocked.Exchange( ref _bp.currentNativeNodeIndex, 0 ); _bp.RunningStat.Release(); } - public new void SetCertainInputPort(string name, BlueprintPipeline pipeline) + public new void SetCertainInputPort( + string name, + BlueprintPipeline pipeline ) { - if (_inputInterfaces.ContainsKey(name)) - { - _inputInterfaces[name] = pipeline; + if( _inputInterfaces.ContainsKey( name ) ) { + _inputInterfaces[ name ] = pipeline; } - _inputInterfaces.Add(name, pipeline); + _inputInterfaces.Add( name, pipeline ); } } diff --git a/源代码/StgSharp/Logic/Collections/BidirectionalDictionary.cs b/源代码/StgSharp/Logic/Collections/BidirectionalDictionary.cs index 98846ba6..4bba9800 100644 --- a/源代码/StgSharp/Logic/Collections/BidirectionalDictionary.cs +++ b/源代码/StgSharp/Logic/Collections/BidirectionalDictionary.cs @@ -49,53 +49,47 @@ namespace StgSharp.Collections _reverse = new Dictionary(); } - public TFirst this[TSecond key] + public TFirst this[ TSecond key ] { get { - if (_reverse.TryGetValue(key,out TFirst value)) - { + if( _reverse.TryGetValue( key, out TFirst value ) ) { return value; } - throw new ArgumentException($"Cannot find key {key!.ToString()} in dictionary."); + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary." ); } set { - if (_reverse.TryGetValue(key,out TFirst origin)) - { - _reverse[key] = value; - _forward.Remove(origin); + if( _reverse.TryGetValue( key, out TFirst origin ) ) { + _reverse[ key ] = value; + _forward.Remove( origin ); + } else { + _reverse.Add( key, value ); } - else - { - _reverse.Add(key, value); - } - _forward.Add(value, key); + _forward.Add( value, key ); } } - public TSecond this[TFirst key] + public TSecond this[ TFirst key ] { get { - if (_forward.TryGetValue(key, out TSecond value)) - { + if( _forward.TryGetValue( key, out TSecond value ) ) { return value; } - throw new ArgumentException($"Cannot find key {key!.ToString()} in dictionary."); + throw new ArgumentException( + $"Cannot find key {key!.ToString()} in dictionary." ); } set { - if (_forward.TryGetValue(key, out TSecond origin)) - { - _forward[key] = value; - _reverse.Remove(origin); + if( _forward.TryGetValue( key, out TSecond origin ) ) { + _forward[ key ] = value; + _reverse.Remove( origin ); + } else { + _forward.Add( key, value ); } - else - { - _forward.Add(key, value); - } - _reverse.Add(value, key); + _reverse.Add( value, key ); } } @@ -107,28 +101,29 @@ namespace StgSharp.Collections public int Count => _forward.Count; - public IReadOnlyDictionary Forward => new ReadOnlyDictionary(_forward); + public IReadOnlyDictionary Forward => new ReadOnlyDictionary( + _forward ); - public IReadOnlyDictionary Reverse => new ReadOnlyDictionary(_reverse); + public IReadOnlyDictionary Reverse => new ReadOnlyDictionary( + _reverse ); public void Add( KeyValuePair item ) { - if (_forward.ContainsKey(item.Key) || _reverse.ContainsKey(item.Value)) - { - throw new ArgumentException("Duplicate key or value."); + if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( + item.Value ) ) { + throw new ArgumentException( "Duplicate key or value." ); } - _forward.Add(item.Key,item.Value); - _reverse.Add(item.Value, item.Key); + _forward.Add( item.Key, item.Value ); + _reverse.Add( item.Value, item.Key ); } - public void Add( TFirst key, TSecond value ) + public void Add( TFirst key, TSecond value ) { - if (_forward.ContainsKey(key) || _reverse.ContainsKey(value)) - { - throw new ArgumentException("Duplicate key or value."); + if( _forward.ContainsKey( key ) || _reverse.ContainsKey( value ) ) { + throw new ArgumentException( "Duplicate key or value." ); } - _forward.Add(key, value); - _reverse.Add(value, key); + _forward.Add( key, value ); + _reverse.Add( value, key ); } public void Clear() @@ -139,75 +134,74 @@ namespace StgSharp.Collections public bool Contains( KeyValuePair item ) { - return _forward.Contains(item) && _reverse.TryGetValue(item.Value, out TFirst var) && var!.Equals(item.Key) ; + return _forward.Contains( item ) && _reverse.TryGetValue( + item.Value, out TFirst var ) && var!.Equals( item.Key ); } - public bool Contains(TSecond key) + public bool Contains( TSecond key ) { - return _reverse.ContainsKey(key); + return _reverse.ContainsKey( key ); } - public bool Contains(TFirst key) + public bool Contains( TFirst key ) { - return _forward.ContainsKey(key); + return _forward.ContainsKey( key ); } - public void CopyTo( KeyValuePair[] array, int arrayIndex ) + public void CopyTo( + KeyValuePair[] array, + int arrayIndex ) { - if (array == null) - { - throw new ArgumentNullException(nameof(array)); + if( array == null ) { + throw new ArgumentNullException( nameof( array ) ); } - if (arrayIndex < 0 || arrayIndex > array.Length) - { - throw new ArgumentOutOfRangeException(nameof(arrayIndex)); + if( arrayIndex < 0 || arrayIndex > array.Length ) { + throw new ArgumentOutOfRangeException( nameof( arrayIndex ) ); } - if (array.Length - arrayIndex < _forward.Count) - { - throw new ArgumentException("The array is too small to copy the elements."); + if( array.Length - arrayIndex < _forward.Count ) { + throw new ArgumentException( + "The array is too small to copy the elements." ); } - foreach (var pair in _forward) - { - array[arrayIndex ++] = pair; + foreach( KeyValuePair pair in _forward ) { + array[ arrayIndex++ ] = pair; } } public IEnumerator> GetEnumerator() { - foreach (var pair in _forward) - { + foreach( KeyValuePair pair in _forward ) { yield return pair; } } - public bool Remove( TFirst key ) { throw new NotImplementedException(); } + public bool Remove( TFirst key ) + { + throw new NotImplementedException(); + } public bool Remove( KeyValuePair item ) { - if (_forward.Remove(item.Key)) - { - return _reverse.Remove(item.Value); + if( _forward.Remove( item.Key ) ) { + return _reverse.Remove( item.Value ); } return false; - } public bool TryGetValue( TFirst key, out TSecond value ) { - return _forward.TryGetValue(key, out value); + return _forward.TryGetValue( key, out value ); } - public bool TryGetValue(TSecond key, out TFirst value) + public bool TryGetValue( TSecond key, out TFirst value ) { - return _reverse.TryGetValue(key, out value); + return _reverse.TryGetValue( key, out value ); } - IEnumerator IEnumerable.GetEnumerator() + IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } } - } \ No newline at end of file diff --git a/源代码/StgSharp/Logic/Collections/IBidrirectionalDictionary.cs b/源代码/StgSharp/Logic/Collections/IBidrirectionalDictionary.cs index 418497c0..94b59c1e 100644 --- a/源代码/StgSharp/Logic/Collections/IBidrirectionalDictionary.cs +++ b/源代码/StgSharp/Logic/Collections/IBidrirectionalDictionary.cs @@ -1,3 +1,33 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IBidrirectionalDictionary.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the ¡°Software¡±), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED ¡°AS IS¡±, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; @@ -5,46 +35,66 @@ using System.Threading.Tasks; namespace StgSharp.Collections { - public interface IBidirectionalDictionary : - IDictionary + public interface IBidirectionalDictionary : IDictionary { -#pragma warning disable CA1033 + + public TFirst this[ TSecond key ] + { + get; + set; + } + + public ICollection FirstIndex + { + get; + } + + public ICollection SecondIndex + { + get; + } + + public IReadOnlyDictionary Forward + { + get; + } + + public IReadOnlyDictionary Reverse + { + get; + } + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains( TSecond key ); + + /// + /// Determines whether the contains + /// the specified key. + /// + /// The value to locate in the . + /// + /// true if the contains an element + /// with the specified key; otherwise, false. + /// + public bool Contains( TFirst key ); + + public bool TryGetValue( TSecond key, out TFirst value ); + + #pragma warning disable CA1033 ICollection IDictionary.Keys => FirstIndex; + ICollection IDictionary.Values => SecondIndex; - bool IDictionary.ContainsKey(TFirst key) => Contains(key); + + bool IDictionary.ContainsKey( TFirst key ) => Contains( + key ); #pragma warning restore CA1033 - - public IReadOnlyDictionary Forward { get; } - public IReadOnlyDictionary Reverse { get; } - - public ICollection FirstIndex { get;} - - public ICollection SecondIndex { get; } - - public TFirst this[TSecond key] { get;set; } - - /// - /// Determines whether the contains the - /// specified key. - /// - /// The value to locate in the . - /// - /// true if the contains an element with the - /// specified key; otherwise, false. - /// - public bool Contains(TSecond key); - - /// - /// Determines whether the contains the - /// specified key. - /// - /// The value to locate in the . - /// - /// true if the contains an element with the - /// specified key; otherwise, false. - /// - public bool Contains(TFirst key); - - public bool TryGetValue(TSecond key, out TFirst value); } } \ No newline at end of file diff --git a/源代码/StgSharp/Logic/Collections/SizeFixedList.cs b/源代码/StgSharp/Logic/Collections/SizeFixedList.cs index fd53c866..71fe7037 100644 --- a/源代码/StgSharp/Logic/Collections/SizeFixedList.cs +++ b/源代码/StgSharp/Logic/Collections/SizeFixedList.cs @@ -42,23 +42,22 @@ namespace StgSharp.Collections private T[] values; private int capacity, _index; - public SizeFixedList(int size) + public SizeFixedList( int size ) { values = new T[size]; } - public T this[int index] + public T this[ int index ] { - get => (index < _index) ? values[index] : throw new ArgumentOutOfRangeException(nameof(index)); + get => ( index < _index ) ? + values[ index ] : throw new ArgumentOutOfRangeException( + nameof( index ) ); set { - if (index < _index) - { - values[index] = value; - } - else - { - throw new ArgumentOutOfRangeException(nameof(index)); + if( index < _index ) { + values[ index ] = value; + } else { + throw new ArgumentOutOfRangeException( nameof( index ) ); } } } @@ -67,12 +66,11 @@ namespace StgSharp.Collections public int Count => _index + 1; - public void Add(T item) + public void Add( T item ) { - if (_index < capacity - 1) - { + if( _index < capacity - 1 ) { _index++; - this[_index] = item; + this[ _index ] = item; } } @@ -82,56 +80,43 @@ namespace StgSharp.Collections _index = 0; } - public bool Contains(T item) + public bool Contains( T item ) { - for (int i = 0; i <= _index; i++) - { - if (item.Equals(values[i])) - { + for( int i = 0; i <= _index; i++ ) { + if( item.Equals( values[ i ] ) ) { return true; } } return false; } - public void CopyTo(T[] array, int arrayIndex) + public void CopyTo( T[] array, int arrayIndex ) { throw new NotImplementedException(); } public IEnumerator GetEnumerator() { - for (int i = 0; i <= _index; i++) - { - yield return values[i]; + for( int i = 0; i <= _index; i++ ) { + yield return values[ i ]; } } - public int IndexOf(T item) + public int IndexOf( T item ) { - for (int i = 0; i <= _index; i++) - { - if (values[i].Equals(item)) - { + for( int i = 0; i <= _index; i++ ) { + if( values[ i ].Equals( item ) ) { return i; } } return -1; } - void IList.Insert(int index, T item) + public bool Remove( T item ) { - throw new NotSupportedException(); - } - - public bool Remove(T item) - { - - for (int i = 0; i <= _index; i++) - { - if (values[i].Equals(item)) - { - values[i] = values[_index]; + for( int i = 0; i <= _index; i++ ) { + if( values[ i ].Equals( item ) ) { + values[ i ] = values[ _index ]; _index--; return true; } @@ -139,30 +124,27 @@ namespace StgSharp.Collections return false; } - public void RemoveAll(Predicate predicate) + public void RemoveAll( Predicate predicate ) { - for (int i = _index; i > 0; i--) - { - if (predicate(values[i])) - { - values[i] = values[_index]; + for( int i = _index; i > 0; i-- ) { + if( predicate( values[ i ] ) ) { + values[ i ] = values[ _index ]; _index--; } } } - public void RemoveAt(int index) + public void RemoveAt( int index ) { - if (index <= _index) - { - values[index] = values[_index]; + if( index <= _index ) { + values[ index ] = values[ _index ]; _index--; } } - public void Resize(int newSize) + public void Resize( int newSize ) { - Array.Resize(ref values, newSize); + Array.Resize( ref values, newSize ); } IEnumerator IEnumerable.GetEnumerator() @@ -170,5 +152,10 @@ namespace StgSharp.Collections yield return GetEnumerator(); } + void IList.Insert( int index, T item ) + { + throw new NotSupportedException(); + } + }//------------------------------------- End of Class ------------------------------------------ } diff --git a/源代码/StgSharp/Logic/Counter.cs b/源代码/StgSharp/Logic/Counter.cs index a70d5731..1cf42fa4 100644 --- a/源代码/StgSharp/Logic/Counter.cs +++ b/源代码/StgSharp/Logic/Counter.cs @@ -33,11 +33,11 @@ using System.Xml.Serialization; namespace StgSharp { - - public class Counter where T : struct, IConvertible, IFormattable, IComparable -#if NET8_OR_GREATER + public class Counter + where T: struct, IConvertible, IFormattable, IComparable + #if NET8_OR_GREATER ,INumber -#endif + #endif { @@ -47,11 +47,10 @@ namespace StgSharp internal readonly T _defualtSubValue; internal readonly T _defualtValue; - public Counter(T defualtValue, T defualtAddValue, T defualtSubValue) + public Counter( T defualtValue, T defualtAddValue, T defualtSubValue ) { - TypeCode type = Type.GetTypeCode(defualtValue.GetType()); - switch (type) - { + TypeCode type = Type.GetTypeCode( defualtValue.GetType() ); + switch( type ) { case TypeCode.Byte: break; @@ -83,7 +82,8 @@ namespace StgSharp break; default: - throw new ArgumentException("Input is not number value type"); + throw new ArgumentException( + "Input is not number value type" ); break; } _value = defualtValue; @@ -104,7 +104,7 @@ namespace StgSharp set => _value = value; } - public void Add(T value) + public void Add( T value ) { _value += value; } @@ -124,7 +124,7 @@ namespace StgSharp _value = _defualtValue; } - public void Sub(T value) + public void Sub( T value ) { _value -= value; } @@ -134,19 +134,19 @@ namespace StgSharp return Value.ToString(); } - public static Counter operator --(Counter counter) + public static Counter operator --( Counter counter ) { counter.QuickSub(); return counter; } - public static Counter operator ++(Counter counter) + public static Counter operator ++( Counter counter ) { counter.QuickAdd(); return counter; } - public static implicit operator T(Counter counter) + public static implicit operator T( Counter counter ) { return counter.Value; } diff --git a/源代码/StgSharp/Logic/Sensor.cs b/源代码/StgSharp/Logic/Sensor.cs index e247f31f..085656ab 100644 --- a/源代码/StgSharp/Logic/Sensor.cs +++ b/源代码/StgSharp/Logic/Sensor.cs @@ -32,8 +32,9 @@ using StgSharp.Geometries; namespace StgSharp { - - public delegate bool SensorRuleHandler(PlainGeometry target, PlainGeometry boarder); + public delegate bool SensorRuleHandler( + PlainGeometry target, + PlainGeometry boarder ); public class Sensor { @@ -42,7 +43,6 @@ namespace StgSharp internal PlainGeometry _target; internal SensorRuleHandler _rule; - public PlainGeometry boarder => _boarder; public PlainGeometry target @@ -57,13 +57,17 @@ namespace StgSharp set => _rule = value; } - public static Sensor operator -(Sensor sensor, SensorRuleHandler rule) + public static Sensor operator -( + Sensor sensor, + SensorRuleHandler rule ) { sensor._rule -= rule; return sensor; } - public static Sensor operator +(Sensor sensor, SensorRuleHandler rule) + public static Sensor operator +( + Sensor sensor, + SensorRuleHandler rule ) { sensor._rule += rule; return sensor; diff --git a/源代码/StgSharp/Logic/StateMachine.cs b/源代码/StgSharp/Logic/StateMachine.cs new file mode 100644 index 00000000..a3599e21 --- /dev/null +++ b/源代码/StgSharp/Logic/StateMachine.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StateMachine.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public interface IStateMachine where T: Enum + { + + public T LastStableState + { + get; + } + + public bool TryEnterState(); + + public bool TryExitState(); + + public bool TrySwitchState(); + + } + + public interface IStateMachineWithSwitchSpan : IStateMachine + where TState: Enum + { + + public bool IsInStabelState + { + get; + } + + public TState NextStableState + { + get; + } + + public bool TrySwitchState(); + + } +} diff --git a/源代码/StgSharp/Logic/Threading/CancellableTask.cs b/源代码/StgSharp/Logic/Threading/CancellableTask.cs new file mode 100644 index 00000000..092ba2c1 --- /dev/null +++ b/源代码/StgSharp/Logic/Threading/CancellableTask.cs @@ -0,0 +1,122 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="CancellableTask.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + internal class CancellableTask + { + + private protected Action _startup; + private protected Task _internalTask; + private CancellationTokenSource cts; + + private protected CancellableTask() + { + cts = new CancellationTokenSource(); + } + + private protected CancellableTask( Action action ) + { + _internalTask = new Task( InternalAction ); + cts = new CancellationTokenSource(); + } + + public bool IsCompleted + { + get => _internalTask.IsCompleted; + } + + public CancellationTokenSource Cts + { + get => cts; + } + + public int Id + { + get => _internalTask.Id; + } + + public void Cancel() + { + Cts.Cancel(); + } + + public void CancelAndWait() + { + Cts.Cancel(); + _internalTask.Wait(); + } + + public static CancellableTask Run( Action startup ) + { + CancellableTask ret = new CancellableTask { _startup = startup }; + ret._internalTask = Task.Run( ret.InternalAction ); + return ret; + } + + public void Wait() + { + _internalTask.Wait(); + } + + public static void WaitAll( IEnumerable tasks ) + { + IEnumerable convertedTasks = tasks.Select( + ct => ct._internalTask ); + Task.WaitAll( convertedTasks.ToArray() ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void InternalAction() + { + //Console.WriteLine($"Task {Task.CurrentId} is running."); + _startup( Cts.Token ); + } + + public static implicit operator Task( CancellableTask task ) + { + return task._internalTask; + } + + ~CancellableTask() + { + Cts.Dispose(); + } + + } +} diff --git a/源代码/StgSharp/Logic/Threading/EmptyThread.cs b/源代码/StgSharp/Logic/Threading/EmptyThread.cs new file mode 100644 index 00000000..1340b9f2 --- /dev/null +++ b/源代码/StgSharp/Logic/Threading/EmptyThread.cs @@ -0,0 +1,62 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="EmptyThread.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly Thread _emptyThreadCache = new Thread( + () => { } ); + + static ThreadHelper() + { + _emptyThreadCache.Start(); + } + + /// + /// An individual thread doing nothing, and its always returns false. + /// + public static Thread EmptyThread + { + get => _emptyThreadCache; + } + + } +} diff --git a/源代码/StgSharp/Logic/Threading/MainThreadAssert.cs b/源代码/StgSharp/Logic/Threading/MainThreadAssert.cs new file mode 100644 index 00000000..d15dd7d0 --- /dev/null +++ b/源代码/StgSharp/Logic/Threading/MainThreadAssert.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="MainThreadAssert.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Threading +{ + public static partial class ThreadHelper + { + + private static readonly int mainThreadId = Thread.CurrentThread.ManagedThreadId; + private static readonly ThreadLocal isNotMainThread = new ThreadLocal( + () => Thread.CurrentThread.ManagedThreadId != mainThreadId ); + + [Conditional( "DEBUG" )] + internal static void MainThreadAssert() + { + if( isNotMainThread.Value ) { + throw new InvalidOperationException( + $"Attempt to call sensitive operation which can be only called from main thread " + $"from thread {Thread.CurrentThread.ManagedThreadId}." ); + } + } + + } +} diff --git a/源代码/StgSharp/Logic/Threading/frameworkSyncContext.cs b/源代码/StgSharp/Logic/Threading/frameworkSyncContext.cs new file mode 100644 index 00000000..369ebd05 --- /dev/null +++ b/源代码/StgSharp/Logic/Threading/frameworkSyncContext.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="frameworkSyncContext.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Graphics +{ + public class FrameworkSyncContext : SynchronizationContext + { + + private ConcurrentQueue _syncContexts = new ConcurrentQueue( + ); + private readonly Thread _mainThread = Thread.CurrentThread; + + public override void Post( SendOrPostCallback d, object state ) + { + base.Post( d, state ); + } + + } +} diff --git a/源代码/StgSharp/Logic/Timing/TimeFunction.cs b/源代码/StgSharp/Logic/Timing/TimeFunction.cs index d96fb40d..388f07c3 100644 --- a/源代码/StgSharp/Logic/Timing/TimeFunction.cs +++ b/源代码/StgSharp/Logic/Timing/TimeFunction.cs @@ -46,12 +46,11 @@ namespace StgSharp.Timing public TimeFunction( TimeSpanProvider timeSpanProvider, Func timeRelatedCalculation, - float range) + float range ) { _timeProvider = timeSpanProvider; _timeRelatedCalculation = timeRelatedCalculation; - if (timeSpanProvider == null) - { + if( timeSpanProvider == null ) { return; } _beginning = _timeProvider.CurrentSecond; @@ -82,28 +81,33 @@ namespace StgSharp.Timing public virtual float Calculate() { - if (_timeProvider.CurrentSecond < _ending) - { + if( _timeProvider.CurrentSecond < _ending ) { return 0; } - return _timeRelatedCalculation(_timeProvider.CurrentSecond - _beginning); + return _timeRelatedCalculation( + _timeProvider.CurrentSecond - _beginning ); } - public static TimeFunction Proportional(TimeSpanProvider time, float begin, float range) + public static TimeFunction Proportional( + TimeSpanProvider time, + float begin, + float range ) + { + return new TimeFunction( time, ( float t ) => t + begin, range ); + } + + public virtual TimeFunction Renew( + (Func func, float range) funcPair ) { return new TimeFunction( - time, (float t) => t + begin, range - ); + _timeProvider, funcPair.func, funcPair.range ); } - public virtual TimeFunction Renew((Func func, float range) funcPair) + public virtual TimeFunction Renew( + Func func, + float range ) { - return new TimeFunction(_timeProvider, funcPair.func, funcPair.range); - } - - public virtual TimeFunction Renew(Func func, float range) - { - return new TimeFunction(_timeProvider, func, range); + return new TimeFunction( _timeProvider, func, range ); } public void Reset() @@ -116,18 +120,17 @@ namespace StgSharp.Timing public virtual TimeFunction Reverse() { float range = _ending - _beginning; - return new TimeFunction(_timeProvider, p => _timeRelatedCalculation(range - p), range); + return new TimeFunction( + _timeProvider, p => _timeRelatedCalculation( range - p ), + range ); } } - public sealed class TimeFunctionOne : TimeFunction { - internal TimeFunctionOne() : base() - { - } + internal TimeFunctionOne() : base() { } public override bool IsComplete { @@ -139,22 +142,23 @@ namespace StgSharp.Timing return 1; } - public override TimeFunction Renew((Func func, float range) funcPair) + public override TimeFunction Renew( + (Func func, float range) funcPair ) { throw new NotSupportedException(); } - public override TimeFunction Renew(Func func, float range) + public override TimeFunction Renew( + Func func, + float range ) { throw new NotSupportedException(); } -#pragma warning disable CA1822 + #pragma warning disable CA1822 public new void Reset() -#pragma warning restore CA1822 - { - - } + #pragma warning restore CA1822 + { } } } diff --git a/源代码/StgSharp/Logic/Timing/TimeProvider.cs b/源代码/StgSharp/Logic/Timing/TimeProvider.cs new file mode 100644 index 00000000..f045b73c --- /dev/null +++ b/源代码/StgSharp/Logic/Timing/TimeProvider.cs @@ -0,0 +1,152 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeProvider.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace StgSharp +{ + public static partial class StgSharp + { + + internal static StgSharpTime mainTimeProvider = new StgSharpTime(); + + internal static TimeSourceProviderBase MainTimeProvider => mainTimeProvider; + + } + + public sealed class StgSharpTime : TimeSourceProviderBase + { + + private static List subscriberList = new List( + ); + private static long accuracy; + private static Stopwatch mainProvider = new Stopwatch(); + private static Thread timeProvideThread; + + internal StgSharpTime() { } + + public static TimeSourceProviderBase OnlyInstance => StgSharp.MainTimeProvider; + + public override sealed void StartProvidingTime() + { + if( mainProvider.IsRunning ) { + return; + } + mainProvider.Start(); + + //speed test + long totalMS, internalFrequncy = Stopwatch.Frequency; + for( int i = 0; i < 100; i++ ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + for( int t = 0; t < 10; t++ ) { + if( totalMS < 1000 ) { + subscriberList.Add( + new TimeSpanProvider( + 100L, TimeSpanProvider.DefaultProvider ) ); + } + } + } + mainProvider.Stop(); + subscriberList.Clear(); + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ) / 100L; + accuracy = ( totalMS * 2 ) / 3; + mainProvider.Reset(); + timeProvideThread = new Thread( new ThreadStart( ProvideTime ) ); + timeProvideThread.Start(); + } + + public override void StopProvidingTime() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + public void Terminate() + { + lock( mainProvider ) { + mainProvider.Stop(); + } + } + + protected override sealed void AddSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Add( subscriber ); + } + + protected override sealed void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ) + { + subscriberList.Remove( subscriber ); + } + + private void ProvideTime() + { + long totalMS, internalFrequncy = Stopwatch.Frequency; + lock( mainProvider ) { + mainProvider.Restart(); + } + while( mainProvider.IsRunning ) { + totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); + if( subscriberList.Count == 0 ) { + continue; + } + CheckSubscriberSemaphore.Wait(); + List toRemoveList = new List( + ); + foreach( TimeSpanProvider subscriber in subscriberList ) { + if( !subscriber.CheckTime( totalMS ) ) { + toRemoveList.Add( subscriber ); + InternalIO.InternalWriteLog( + $"Time subscriber {subscriber} is to be removed.", + LogType.Info ); + } + ; + } + if( toRemoveList.Count != 0 ) { + foreach( TimeSpanProvider subscriber in toRemoveList ) { + subscriberList.Remove( subscriber ); + } + } + CheckSubscriberSemaphore.Release(); + } + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Logic/Timing/TimeSourceProvider.cs b/源代码/StgSharp/Logic/Timing/TimeSourceProvider.cs index a8ba8b56..ea1fdacc 100644 --- a/源代码/StgSharp/Logic/Timing/TimeSourceProvider.cs +++ b/源代码/StgSharp/Logic/Timing/TimeSourceProvider.cs @@ -39,54 +39,51 @@ namespace StgSharp.Timing public abstract class TimeSourceProviderBase { - private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim(1, 1); + private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( + 1, 1 ); protected SemaphoreSlim CheckSubscriberSemaphore { get => _addSubscriberSemaphore; } - public void AddSubscriber(TimeSpanProvider subscriber) + public void AddSubscriber( TimeSpanProvider subscriber ) { - _addSubscriberSemaphore.Wait(); - try - { - AddSubscriberUnsynced(subscriber); + try { + _addSubscriberSemaphore.Wait(); + AddSubscriberUnsynced( subscriber ); } - catch (Exception) - { + catch( Exception ) { throw; } - finally - { + finally { _addSubscriberSemaphore.Release(); } } - public void RemoveSubscriber(TimeSpanProvider subscriber) + public void RemoveSubscriber( TimeSpanProvider subscriber ) { _addSubscriberSemaphore.Wait(); - try - { - RemoveSubscriberUnsynced(subscriber); + try { + RemoveSubscriberUnsynced( subscriber ); } - catch (Exception) - { + catch( Exception ) { throw; } - finally - { + finally { _addSubscriberSemaphore.Release(); } } public abstract void StartProvidingTime(); + public abstract void StopProvidingTime(); + protected abstract void AddSubscriberUnsynced( + TimeSpanProvider subscriber ); - protected abstract void AddSubscriberUnsynced(TimeSpanProvider subscriber); - protected abstract void RemoveSubscriberUnsynced(TimeSpanProvider subscriber); + protected abstract void RemoveSubscriberUnsynced( + TimeSpanProvider subscriber ); } - } diff --git a/源代码/StgSharp/Logic/Timing/TimeSpanAwaitingToken.cs b/源代码/StgSharp/Logic/Timing/TimeSpanAwaitingToken.cs new file mode 100644 index 00000000..7621d81c --- /dev/null +++ b/源代码/StgSharp/Logic/Timing/TimeSpanAwaitingToken.cs @@ -0,0 +1,165 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TimeSpanAwaitingToken.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace StgSharp.Timing +{ + #nullable enable + + public sealed class TimeSpanAwaitingToken : IDisposable + { + + private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( + [0] ); + private static int s_maxID; + private static readonly object s_lock = new object(); + + private EventHandler? _refreshHandler,_missHandler; + private int _size, _id; + + private object _participantObject = new object(); + private SemaphoreSlim _awaitingSemaphore; + + private TimeSpanProvider _provider; + + internal TimeSpanAwaitingToken( TimeSpanProvider provider ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = 1; + _awaitingSemaphore = new SemaphoreSlim( 0, 1 ); + } + + internal TimeSpanAwaitingToken( TimeSpanProvider provider, int count ) + { + if( s_unusedID.Count == 1 ) { + lock( s_lock ) { + s_unusedID.TryPop( out int id ); + TokenID = id; + s_unusedID.Push( s_maxID++ ); + } + } else { + s_unusedID.TryPop( out int id ); + TokenID = id; + } + _provider = provider; + _size = count; + _awaitingSemaphore = new SemaphoreSlim( 0, _size ); + } + + public event EventHandler MissTimeSpanRefreshed + { + add { _missHandler += value; } + remove { _missHandler -= value; } + } + + public event EventHandler TimeSpanRefreshed + { + add { _refreshHandler += value; } + remove { _refreshHandler -= value; } + } + + public int TokenID + { + get => _id; + private set => _id = value; + } + + internal SemaphoreSlim AwaitingSemaphoreSlim + { + get => _awaitingSemaphore; + } + + public void Dispose() + { + _provider.QuitSpanAwaiting( this ); + s_unusedID.Push( TokenID ); + _awaitingSemaphore.Dispose(); + GC.SuppressFinalize( this ); + } + + public override int GetHashCode() + { + return _id; + } + + public void Participant() + { + lock( _participantObject ) { + _size++; + SemaphoreSlim newSemaphore = new SemaphoreSlim( + _awaitingSemaphore.CurrentCount, _size ); + Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ) + .Dispose(); + } + } + + public void WaitNextSpan() + { + _awaitingSemaphore.Wait(); + } + + internal void MissRefresh() + { + _missHandler?.Invoke( this, EventArgs.Empty ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + internal void Refresh() + { + _refreshHandler?.Invoke( this, EventArgs.Empty ); + } + + ~TimeSpanAwaitingToken() + { + Dispose(); + } + + } + #nullable restore +} diff --git a/源代码/StgSharp/Logic/Timing/TimeSpanProvider.cs b/源代码/StgSharp/Logic/Timing/TimeSpanProvider.cs index 96e57b9e..3c327842 100644 --- a/源代码/StgSharp/Logic/Timing/TimeSpanProvider.cs +++ b/源代码/StgSharp/Logic/Timing/TimeSpanProvider.cs @@ -29,104 +29,110 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Runtime.InteropServices; using System.Threading; namespace StgSharp.Timing { - /// /// A microsecond-accuracy timer. It will refresh every a certain time span. /// public class TimeSpanProvider { - private Action _frameUpdateMissCallback = () => { }; - private Action _refreshCallback; private bool _subscribed; - private Counter timeSpanCount = new Counter(-1, 1, 1); - private readonly int _maxSpanCount; + + private ConcurrentQueue _tokenToAdd = new ConcurrentQueue( + ); + private ConcurrentQueue _tokenToQuit; + private Counter timeSpanCount = new Counter( -1, 1, 1 ); + private HashSet _awaitingTokens; + private long _maxSpanCount; private long _spanBegin; private readonly long _spanLength; - private SemaphoreSlim _refreshSemaphore = new SemaphoreSlim(0, 1); private readonly TimeSourceProviderBase _timeSource; - - /// - /// Create a new and define the length of time span. Length of a single time span is defined in microseconds. + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. /// /// /// - public TimeSpanProvider(long spanMicroSeconds, TimeSourceProviderBase provider) + public TimeSpanProvider( + long spanMicroSeconds, + TimeSourceProviderBase provider ) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); } _timeSource = provider; _spanLength = spanMicroSeconds; _maxSpanCount = int.MaxValue; - provider.AddSubscriber(this); + provider.AddSubscriber( this ); _subscribed = true; - _refreshCallback = new Action(() => { }); + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); } /// - /// Create a new and define the length of time span. - /// Length of a single time span is defined in seconds. + /// Create a new and define the length of time span. Length + /// of a single time span is defined in seconds. /// /// /// - public TimeSpanProvider(double spanSeconds, TimeSourceProviderBase provider) + public TimeSpanProvider( + double spanSeconds, + TimeSourceProviderBase provider ) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); } - _spanLength = (long)(spanSeconds * 1000L * 1000L); + _timeSource = provider; + _spanLength = ( long )( spanSeconds * 1000L * 1000L ); _spanBegin = -_spanLength; - _maxSpanCount = int.MaxValue; - provider.AddSubscriber(this); + _maxSpanCount = long.MaxValue; + provider.AddSubscriber( this ); _subscribed = true; - _refreshCallback = new Action(() => { }); + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); } /// - /// Create a new and define the length of time span. Length of a single time span is defined in microseconds. + /// Create a new and define the length of time span. Length + /// of a single time span is defined in microseconds. /// /// /// /// - public TimeSpanProvider(long spanLength, int maxSpan, TimeSourceProviderBase provider) + public TimeSpanProvider( + long spanLength, + long maxSpan, + TimeSourceProviderBase provider ) { - if (provider == null) - { - throw new ArgumentNullException(nameof(provider)); + if( provider == null ) { + throw new ArgumentNullException( nameof( provider ) ); } - if (maxSpan <= 0) - { - maxSpan = int.MaxValue; + if( maxSpan <= 0 ) { + throw new ArgumentException( + "Sapn count cannot be smaller than zero" ); } - _spanLength = spanLength; _spanBegin = -_spanLength; - provider.AddSubscriber(this); + _timeSource = provider; + _spanLength = spanLength; + _spanBegin = -_spanLength; + provider.AddSubscriber( this ); _subscribed = true; - } - - /// - /// The method this will call every time a new time span started. - /// - public Action SpanRefreshCallback - { - get => _refreshCallback; - set => _refreshCallback = value; + _awaitingTokens = new HashSet(); + _tokenToQuit = new ConcurrentQueue(); } public double SpanLength { - get => (_spanLength * 1.0) / (1000L * 1000L); + get => ( _spanLength * 1.0 ) / ( 1000L * 1000L ); } public float CurrentSecond @@ -136,7 +142,7 @@ namespace StgSharp.Timing public float SpanLengthLowPrecession { - get => (_spanLength * 1.0f) / (1000 * 1000); + get => ( _spanLength * 1.0f ) / ( 1000 * 1000 ); } public int CurrentSpan @@ -145,22 +151,39 @@ namespace StgSharp.Timing } /// - /// Time source provider provided in internal framework. + /// Time source provider provided in internal framework. /// public static TimeSourceProviderBase DefaultProvider => StgSharpTime.OnlyInstance; - public void SubscribeToTimeSource(TimeSourceProviderBase serviceHandler) + public TimeSpanAwaitingToken ParticipantSpanAwaiting( int count ) { - if (serviceHandler == null) - { - throw new ArgumentNullException(nameof(serviceHandler)); + TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( + this, count ); + _tokenToAdd.Enqueue( token ); + return token; + } + + public void QuitSpanAwaiting( TimeSpanAwaitingToken token ) + { + _tokenToQuit.Enqueue( token ); + } + + public void StopSpanProviding() + { + Interlocked.Exchange( ref _maxSpanCount, 0 ); + } + + public void SubscribeToTimeSource( + TimeSourceProviderBase serviceHandler ) + { + if( serviceHandler == null ) { + throw new ArgumentNullException( nameof( serviceHandler ) ); } - if (_subscribed) - { + if( _subscribed ) { return; } _subscribed = true; - serviceHandler.AddSubscriber(this); + serviceHandler.AddSubscriber( this ); } public int ToInt32() @@ -168,49 +191,41 @@ namespace StgSharp.Timing return timeSpanCount.Value; } - public void WaitNextSpan() + internal bool CheckTime( long microseconds ) { - _refreshSemaphore.Wait(); - } - - internal bool CheckTime(long microseconds) - { - //Console.Write("1 "); - if (microseconds - _spanBegin < _spanLength) - { + if( microseconds - _spanBegin < _spanLength ) { return true; } - //Console.Write("2 "); + while( !_tokenToAdd.IsEmpty ) { + _tokenToAdd.TryDequeue( out TimeSpanAwaitingToken tokenAdd ); + _awaitingTokens.Add( tokenAdd ); + } + while( !_tokenToQuit.IsEmpty ) { + _tokenToQuit.TryDequeue( out TimeSpanAwaitingToken tokenQuit ); + _awaitingTokens.Remove( tokenQuit ); + InternalIO.InternalWriteLog( + $"Awaiting token {tokenQuit!.TokenID} has been removed.", + LogType.Info ); + } + _spanBegin = microseconds; timeSpanCount++; - //Console.Write("3 "); - if (_refreshCallback != null) - { - _refreshCallback(); - } - //Console.Write("4 "); - if (_refreshSemaphore.CurrentCount == 0) - { - _refreshSemaphore.Release(); - } - else - { - if (_frameUpdateMissCallback != null) - { - _frameUpdateMissCallback(); + + foreach( TimeSpanAwaitingToken item in _awaitingTokens ) { + if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) { + item.AwaitingSemaphoreSlim.Release(); + item.Refresh(); + } else { + item.MissRefresh(); } } - //Console.Write("5 "); - //Console.WriteLine( $"{timeSpanCount}\n" ); + return timeSpanCount < _maxSpanCount; } - public static implicit operator int(TimeSpanProvider provider) + public static explicit operator int( + [NotNull]TimeSpanProvider provider ) { - if (provider == null) - { - return 0; - } return provider.ToInt32(); } diff --git a/源代码/StgSharp/MVVM/OpenGLControllingItemRender.cs b/源代码/StgSharp/MVVM/OpenGLControllingItemRender.cs index 28c0cf08..79f6649e 100644 --- a/源代码/StgSharp/MVVM/OpenGLControllingItemRender.cs +++ b/源代码/StgSharp/MVVM/OpenGLControllingItemRender.cs @@ -53,10 +53,5 @@ namespace StgSharp.MVVM throw new NotImplementedException(); } - protected override void Main() - { - throw new NotImplementedException(); - } - } } diff --git a/源代码/StgSharp/MVVM/View/ViewBase.cs b/源代码/StgSharp/MVVM/View/ViewBase.cs index 617dfe71..ac76c765 100644 --- a/源代码/StgSharp/MVVM/View/ViewBase.cs +++ b/源代码/StgSharp/MVVM/View/ViewBase.cs @@ -29,13 +29,14 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Graphics; -using StgSharp.Timing; using StgSharp.Math; using StgSharp.MVVM.ViewModel; +using StgSharp.Timing; using System; using System.Collections.Generic; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; using System.Reflection; @@ -44,15 +45,16 @@ using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading; -using System.Diagnostics.CodeAnalysis; namespace StgSharp.MVVM.View { /// - /// ViewBase is the base type for all view types, providing context binding and control element binding. - /// A complete view should contain one complete , , and , - /// which provide layout descriptions of control elements, user responses, and rendering implementations in the view. - /// Data between instances of , , and is shared through . + /// ViewBase is the base type for all view types, providing context binding and control element + /// binding. A complete view should contain one complete , , and , which provide layout + /// descriptions of control elements, user responses, and rendering implementations in the view. + /// Data between instances of , , + /// and is shared through . /// public abstract unsafe partial class ViewBase @@ -70,46 +72,43 @@ namespace StgSharp.MVVM.View private ViewPort context; - private delegate bool GetDataBindingEntryDelegate(string name, out DataBindingEntry entry); + private delegate bool GetDataBindingEntryDelegate( + string name, + out DataBindingEntry entry ); - public DataBindingEntry this[string name] + public DataBindingEntry this[ string name ] { get { - if (TryGetObjectReference(name, out DataBindingEntry entry)) - { + if( getDataBindingEntry( name, out DataBindingEntry entry ) ) { return entry; } - if (getDataBindingEntry(name, out entry)) - { + if( TryGetObjectReference( name, out entry ) ) { return entry; } throw new KeyNotFoundException(); } } - internal bool IsWaitingWindowEvent - { - get => context.IsWaitingEvent; - } - public (int x, int y, int z) UnitCubeSize { get => unitCubeSize; } - public bool Activated { get; internal set; } + public bool Activated + { + get; + internal set; + } public int Height { get => context.Height; - private set { context.Height = value; } } public int Width { get => context.Width; - private set { context.Width = value; } } public IntPtr Monitor => context.Monitor; @@ -124,7 +123,11 @@ namespace StgSharp.MVVM.View public string ContextName => context.Name; - public string SelfName { get; set; } + public string SelfName + { + get; + set; + } public ViewPort Port { @@ -136,7 +139,7 @@ namespace StgSharp.MVVM.View get => time; } - protected IViewRender Render + protected internal IViewRender Render { get => _render; set => _render = value; @@ -148,20 +151,24 @@ namespace StgSharp.MVVM.View set => _responder = value; } - public abstract void CustomizedInitialize([NotNull]ViewModelBase viewModelBinding); + public abstract void CustomizedInitialize( + [NotNull]ViewModelBase viewModelBinding ); /// /// Get the status of a certain key on the keyboard. /// /// - /// representing if a key is pressed or released. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public KeyStatus GetKeyStatus(KeyboardKey key) + /// representing if a key is pressed or released. + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public KeyStatus GetKeyStatus( KeyboardKey key ) { - return InternalIO.glfwGetKey(context.ViewPortID, (int)key); + return InternalIO.glfwGetKey( context.ViewPortID, ( int )key ); } - public void InternalInitialize(string name, (int, int, int) cubeSize, [NotNull]ViewModelBase viewModelBinding) + public void InternalInitialize( + string name, + (int, int, int) cubeSize, + [NotNull]ViewModelBase viewModelBinding ) { SelfName = name; unitCubeSize = cubeSize; @@ -169,32 +176,33 @@ namespace StgSharp.MVVM.View context = viewModelBinding.ViewPortBinding; time = viewModelBinding.frameTimeProvider; - CustomizedInitialize(viewModelBinding); + CustomizedInitialize( viewModelBinding ); } - public abstract bool TryGetObjectReference(string name, out DataBindingEntry entry); + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry ); public void Use() { - if (usedFrame == 0) - { - if (!ValidateInitialization()) - { - throw new InvalidOperationException("This view is not correctly initialized before rendering."); + if( usedFrame == 0 ) { + if( !ValidateInitialization() ) { + throw new InvalidOperationException( + "This view is not correctly initialized before rendering." ); } } Show(); + usedFrame++; } public bool ValidateInitialization() { - return (_design != null) && (_render != null) && (getDataBindingEntry != null) && (_responder != null) - && _design.ValidateInitializing() && _responder.ValidateInitializing() && _render.ValidateInitializing() - ; + return ( _design != null ) && ( _render != null ) && ( getDataBindingEntry != null ) && ( _responder != null ) && _design.ValidateInitializing( + ) && _responder.ValidateInitializing() && _render.ValidateInitializing( + ); } protected internal abstract void Show(); } - } \ No newline at end of file diff --git a/源代码/StgSharp/MVVM/View/ViewDesigner.cs b/源代码/StgSharp/MVVM/View/ViewDesigner.cs index 6e681253..c0d1cb9f 100644 --- a/源代码/StgSharp/MVVM/View/ViewDesigner.cs +++ b/源代码/StgSharp/MVVM/View/ViewDesigner.cs @@ -44,10 +44,12 @@ namespace StgSharp.MVVM.View { public abstract partial class ViewBase { - public interface IViewDesigner where TView : ViewBase + + public interface IViewDesigner where TView: ViewBase { abstract void CustomizedInitialize(); + abstract void Initialize(); abstract bool ValidateInitializing(); @@ -55,11 +57,12 @@ namespace StgSharp.MVVM.View } /// - /// ViewDesigner provides descriptions of various controls in the view, - /// binds the controls to specific user actions and behaviors, - /// and describes the layout and interactions of each control. + /// ViewDesigner provides descriptions of various controls in the view, binds the controls + /// to specific user actions and behaviors, and describes the layout and interactions of + /// each control. /// - public abstract class ViewDesigner : IViewDesigner where TView : ViewBase + public abstract class ViewDesigner : IViewDesigner + where TView: ViewBase { private KeyboardButtonGroup currentButtonGroup; @@ -67,7 +70,7 @@ namespace StgSharp.MVVM.View private List _controlList; protected TView _binding; - public ViewDesigner(TView binding) + public ViewDesigner( TView binding ) { _binding = binding; _controlList = new List(); @@ -79,52 +82,52 @@ namespace StgSharp.MVVM.View } public CharacterLineIndexImage CreateCharacterLine( - int length, char blankFilling, PlainGeometryMesh tittle, IEnumerable<(char, PlainGeometryMesh)> charList - ) + int length, + char blankFilling, + PlainGeometryMesh tittle, + IEnumerable<(char, PlainGeometryMesh)> charList ) { - CharacterLineIndexImage ret = new CharacterLineIndexImage(length, blankFilling, tittle, charList); - _controlList.Add(ret); + CharacterLineIndexImage ret = new CharacterLineIndexImage( + length, blankFilling, tittle, charList ); + _controlList.Add( ret ); return ret; } public TriggerButton CreateKeyboardButton( - Rectangle bonding, TextureProvider defaultAnimation, bool isEnable - ) + Rectangle bonding, + TextureProvider defaultAnimation, + bool isEnable ) { TriggerButton ret = new TriggerButton(); ret.BoundingBox = bonding; ret.Texture = defaultAnimation; - if (isEnable) - { + if( isEnable ) { ret.IsDisabled = false; ret.Enable(); - } - else - { + } else { ret.IsDisabled = true; ret.Disable(); } - currentButtonGroup.AddButton(ret); + currentButtonGroup.AddButton( ret ); return ret; } public TButtonGroup CreateKeyboardButtonGroup( - ITrigger leftBidning, - ITrigger rightBinding, - ITrigger upBinding, - ITrigger downBinding, - ITrigger confirmBinding - ) - where TButtonGroup : KeyboardButtonGroup, new() + IClickTrigger leftBidning, + IClickTrigger rightBinding, + IClickTrigger upBinding, + IClickTrigger downBinding, + IClickTrigger confirmBinding ) + where TButtonGroup: KeyboardButtonGroup, new() { TButtonGroup ret = new TButtonGroup(); - _controlList.Add(ret); + _controlList.Add( ret ); currentButtonGroup = ret; - _binding.Responder[leftBidning] = ret.MoveLeft; - _binding.Responder[rightBinding] = ret.MoveRight; - _binding.Responder[upBinding] = ret.MoveUp; - _binding.Responder[downBinding] = ret.MoveDown; - _binding.Responder[confirmBinding] = ret.Confirm; + _binding.Responder[ leftBidning ] = ret.MoveLeft; + _binding.Responder[ rightBinding ] = ret.MoveRight; + _binding.Responder[ upBinding ] = ret.MoveUp; + _binding.Responder[ downBinding ] = ret.MoveDown; + _binding.Responder[ confirmBinding ] = ret.Confirm; return ret; } diff --git a/源代码/StgSharp/MVVM/View/ViewRender.cs b/源代码/StgSharp/MVVM/View/ViewRender.cs index 0e44093b..a2816551 100644 --- a/源代码/StgSharp/MVVM/View/ViewRender.cs +++ b/源代码/StgSharp/MVVM/View/ViewRender.cs @@ -28,9 +28,9 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data; using StgSharp.Graphics; - using StgSharp.Math; using StgSharp.MVVM.ViewModel; @@ -48,13 +48,20 @@ namespace StgSharp.MVVM.View { public abstract partial class ViewBase { - protected interface IViewRender where TView : ViewBase + + protected internal interface IViewRender + where TView: ViewBase { - RenderStream this[string renderName] { get; } + RenderStream this[ DataLabel renderName ] + { + get; + } void CustomizedInitialize(); + IEnumerator GetEnumerator(); + void Initialize(); bool ValidateInitializing(); @@ -62,27 +69,26 @@ namespace StgSharp.MVVM.View } protected abstract class ViewRender : IViewRender - where TView : ViewBase + where TView: ViewBase { - protected ViewRender(TView binding) + protected ViewRender( TView binding ) { _binding = binding; + _render = new Dictionary(); } - public RenderStream this[string renderName] + public RenderStream this[ DataLabel renderName ] { - get => _render.TryGetValue(renderName, out RenderStream stream) ? stream : (null!); + get => _render.TryGetValue( + renderName, out RenderStream stream ) ? + stream : ( null! ); protected set { - - if (_render.ContainsKey(renderName)) - { - _render[renderName] = value; - } - else - { - _render.Add(renderName, value); + if( _render.ContainsKey( renderName ) ) { + _render[ renderName ] = value; + } else { + _render.Add( renderName, value ); } } } @@ -91,31 +97,43 @@ namespace StgSharp.MVVM.View protected ViewPort ContextBinding => _binding.context; - protected ViewDesigner Design => (_binding.Designer as ViewDesigner)!; + protected ViewDesigner Design => ( _binding.Designer as ViewDesigner )!; - protected Dictionary Render + protected Dictionary Render { get => _render; } - protected ViewResponder Responder => (_binding.Responder as ViewResponder)!; + protected ViewResponder Responder => ( _binding.Responder as ViewResponder )!; - public T CreateRenderStream((int x, int y, int z) unitCubeSize) where T : RenderStream, new() + public T CreateRenderStream( (int x, int y, int z) unitCubeSize ) + where T: RenderStream, new() { T ret = new T(); - ret.Initialize(_binding.context, unitCubeSize, Binding.TimeProvider); + ret.Initialize( + _binding.context, unitCubeSize, Binding.TimeProvider ); return ret; } - public T CreateRenderStream(ViewPort vp, (int x, int y, int z) unitCubeSize) where T : RenderStream, new() + public T CreateRenderStream( + ViewPort vp, + (int x, int y, int z) unitCubeSize ) + where T: RenderStream, new() { T ret = new T(); - ret.Initialize(vp, unitCubeSize, Binding.TimeProvider); + ret.Initialize( vp, unitCubeSize, Binding.TimeProvider ); return ret; } public abstract void CustomizedInitialize(); + public IEnumerator GetEnumerator() + { + foreach( RenderStream item in Render.Values ) { + yield return item.BindedViewPortContext; + } + } + public void Initialize() { CustomizedInitialize(); @@ -123,12 +141,11 @@ namespace StgSharp.MVVM.View public abstract bool ValidateInitializing(); -#pragma warning disable CS8618 - private Dictionary _render; + #pragma warning disable CS8618 + private Dictionary _render; private TView _binding; #pragma warning restore CS8618 - - } + } } diff --git a/源代码/StgSharp/MVVM/View/ViewResponder.cs b/源代码/StgSharp/MVVM/View/ViewResponder.cs index 19c1f0de..d7719d27 100644 --- a/源代码/StgSharp/MVVM/View/ViewResponder.cs +++ b/源代码/StgSharp/MVVM/View/ViewResponder.cs @@ -29,6 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Controlling.UsrActivity; +using StgSharp.MVVM.ViewModel; using System; using System.Collections.Generic; @@ -40,14 +41,20 @@ namespace StgSharp.MVVM.View { public partial class ViewBase { - protected interface IViewResponder where TVIew : ViewBase + + protected interface IViewResponder where TVIew: ViewBase { - Action? this[ITrigger trigger] { get; set; } + Action? this[ IClickTrigger trigger ] + { + get; + set; + } - void CustomizedInitialize(Func keyRegister); + void CustomizedInitialize( + Func keyRegister ); - void Initialize(Func keyGetter); + void Initialize( MethodLookUpDelegate methodGetter ); void ProcessUserInput(); @@ -55,67 +62,75 @@ namespace StgSharp.MVVM.View } - protected abstract class ViewResponder : IViewResponder where TView : ViewBase + protected abstract class ViewResponder : IViewResponder + where TView: ViewBase { private bool _isInitialized; - private Dictionary keyCallbackIndex; + private Dictionary keyCallbackIndex; private Dictionary nameToCallbackMap; private TView _binding; - protected ViewResponder(TView binding) + protected ViewResponder( TView binding ) { - keyCallbackIndex = new Dictionary(); + keyCallbackIndex = new Dictionary(); nameToCallbackMap = new Dictionary(); _binding = binding; } - public Action? this[ITrigger trigger] + #pragma warning disable CA1043 + public Action? this[ IClickTrigger trigger ] + #pragma warning restore CA1043 { - get => keyCallbackIndex.TryGetValue(trigger, out Action callback) ? callback : null; + get => keyCallbackIndex.TryGetValue( + trigger, out Action callback ) ? + callback : null; set { - if (keyCallbackIndex.TryGetValue(trigger, out Action callback)) - { + if( keyCallbackIndex.TryGetValue( + trigger, out Action callback ) ) { callback += value; - } - else - { - keyCallbackIndex.Add(trigger, value ?? throw new ArgumentNullException(nameof(value))); + } else { + keyCallbackIndex.Add( + trigger, + value ?? + throw new ArgumentNullException( + nameof( value ) ) ); } } } protected TView Binding => _binding; - public abstract void CustomizedInitialize(Func keyRegister); + public abstract void CustomizedInitialize( + Func keyRegister ); - public void Initialize(Func keyGetter) + public void Initialize( MethodLookUpDelegate methodGetter ) { - if (_isInitialized) - { + if( _isInitialized ) { return; } CustomizedInitialize( - (trigger, name) => - { - if (!nameToCallbackMap.TryGetValue(name, out Action ret)) - { - ret = keyGetter.Invoke(name) ?? - throw new InvalidOperationException($"Cannot find method named {name} in binded view model"); + ( trigger, name ) => { + if( !nameToCallbackMap.TryGetValue( + name, out Action ret ) ) { + if( methodGetter( name, out Action lookup ) ) { + this[ trigger ] = lookup; + } else { + throw new InvalidOperationException( + $"Cannot find method named {name} in binded view model" ); + } } - this[trigger] = ret; return ret; - } - ); + } ); } public void ProcessUserInput() { - foreach (KeyValuePair pair in keyCallbackIndex) - { - if (InternalIO.glfwGetKey(_binding.ViewHandle, pair.Key.TargetKeyOrButtonID) == pair.Key.TriggeredStatus) - { + foreach( KeyValuePair pair in keyCallbackIndex ) { + if( InternalIO.glfwGetKey( + _binding.ViewHandle, + pair.Key.TargetKeyOrButtonID ) == pair.Key.TriggeredStatus ) { pair.Value(); } } diff --git a/源代码/StgSharp/MVVM/ViewModel/DataBinding.cs b/源代码/StgSharp/MVVM/ViewModel/DataBinding.cs index eadf576d..57329dec 100644 --- a/源代码/StgSharp/MVVM/ViewModel/DataBinding.cs +++ b/源代码/StgSharp/MVVM/ViewModel/DataBinding.cs @@ -28,8 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Data; - +using StgSharp.Data.Intrinsic; using System; using System.Collections.Generic; using System.Data.Common; @@ -45,50 +44,59 @@ namespace StgSharp.MVVM.ViewModel { #nullable enable - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate ref object BindingDataGetter(); - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] public delegate void BindingDataSetter(ref object value); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate ref object BindingDataGetter(); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate void BindingDataSetter( ref object value ); +[UnmanagedFunctionPointer( CallingConvention.Cdecl )] + public delegate bool MethodLookUpDelegate( + string name, + out Action callback ); public abstract partial class ViewModelBase { - public bool MethodLookup(string methodName, out Action callback) + + public bool MethodLookup( string methodName, out Action callback ) { - MethodInfo method = GetType().GetMethod(methodName); - try - { - callback = (Action)Delegate.CreateDelegate(typeof(Action), this, methodName); + MethodInfo method = GetType().GetMethod( methodName )!; + if( method == null ) { + callback = null!; + return false; + } + try { + callback = ( Action )Delegate.CreateDelegate( + typeof( Action ), this, methodName ); return true; } - catch (MissingMethodException) - { + catch( MissingMethodException ) { callback = null!; return false; } - catch (MethodAccessException) - { + catch( MethodAccessException ) { callback = null!; return false; } - catch (Exception) - { + catch( Exception ) { throw; } - } + } - [StructLayout(LayoutKind.Explicit)] + [StructLayout( LayoutKind.Explicit )] public unsafe struct DataBindingEntry { - [FieldOffset(0)] private M128 _mask; - [FieldOffset(0)] private IntPtr getterPtr; - [FieldOffset(8)] private IntPtr setterPtr; + + [FieldOffset( 0 )] private IntPtr getterPtr; + [FieldOffset( 8 )] private IntPtr setterPtr; + [FieldOffset( 0 )] private M128 _mask; public DataBindingEntry( [NotNull] BindingDataGetter gettingCallback, - [NotNull] BindingDataSetter settingCallback) + [NotNull] BindingDataSetter settingCallback ) { - getterPtr = Marshal.GetFunctionPointerForDelegate(gettingCallback); - setterPtr = Marshal.GetFunctionPointerForDelegate(settingCallback); + getterPtr = Marshal.GetFunctionPointerForDelegate( gettingCallback ); + setterPtr = Marshal.GetFunctionPointerForDelegate( settingCallback ); } public static DataBindingEntry NullBinding @@ -96,49 +104,54 @@ namespace StgSharp.MVVM.ViewModel get => new DataBindingEntry(); } - public bool ExactEqual(DataBindingEntry other) + public bool Equals( DataBindingEntry other ) { - return (getterPtr == other.getterPtr) && (setterPtr == other.setterPtr); + return ( _mask == other._mask ); } - public ref object GetValue() + public override bool Equals( object obj ) { - return ref ((delegate* unmanaged[Cdecl])getterPtr)(); - } - - public void SetValue(ref object value) - { - ((delegate* unmanaged[Cdecl])setterPtr)(ref value); - } - - public static bool operator ==(DataBindingEntry left, DataBindingEntry right) - { - return left._mask == right._mask; - } - - public static bool operator !=(DataBindingEntry left, DataBindingEntry right) - { - return left._mask != right._mask; - } - - public bool Equals(DataBindingEntry other) - { - return (_mask == other._mask); - } - - public override bool Equals(object obj) - { - if (obj is not DataBindingEntry other) - { + if( obj is not DataBindingEntry other ) { return false; } - return Equals(other); + return Equals( other ); + } + + public bool ExactEqual( DataBindingEntry other ) + { + return ( getterPtr == other.getterPtr ) && ( setterPtr == other.setterPtr ); } public override int GetHashCode() { return _mask.GetHashCode(); } + + public ref object GetValue() + { + return ref ( ( delegate* unmanaged[Cdecl] )getterPtr )(); + } + + public void SetValue( ref object value ) + { + ( ( delegate* unmanaged[Cdecl] )setterPtr )( + ref value ); + } + + public static bool operator !=( + DataBindingEntry left, + DataBindingEntry right ) + { + return left._mask != right._mask; + } + + public static bool operator ==( + DataBindingEntry left, + DataBindingEntry right ) + { + return left._mask == right._mask; + } + } #nullable restore diff --git a/源代码/StgSharp/MVVM/ViewModel/ShowViewPort.cs b/源代码/StgSharp/MVVM/ViewModel/ShowViewPort.cs index a53a729d..e4a30aba 100644 --- a/源代码/StgSharp/MVVM/ViewModel/ShowViewPort.cs +++ b/源代码/StgSharp/MVVM/ViewModel/ShowViewPort.cs @@ -28,8 +28,11 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Controls; using StgSharp.Graphics; using StgSharp.MVVM.View; +using StgSharp.Threading; +using StgSharp.Timing; using System; using System.Collections.Generic; @@ -40,6 +43,8 @@ namespace StgSharp.MVVM.ViewModel { public abstract partial class ViewModelBase { + + private volatile bool _closed = true; private ViewBase _nextView, _currentView; protected ViewBase CurrentView @@ -51,46 +56,91 @@ namespace StgSharp.MVVM.ViewModel /// /// CustomizeInit this form and render it on screen, and respond with operation /// - public unsafe void UseViewModel(string viewEntryName) + public unsafe void UseViewModel( string viewEntryName ) { CustomizeInitialize(); - //BuildGlobalKeyControl(); - UseViewInNextFrame(viewEntryName); - while (0 == InternalIO.glfwWindowShouldClose(this.viewPortDisplay.ViewPortID)) - { - ShowFrameOnce(); + UseViewInNextFrame( viewEntryName ); + TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( + 1 ); + fpsCountingToken.TimeSpanRefreshed += CountFps; + fpsCountingToken.MissTimeSpanRefreshed += CountFps; + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); } + Thread renderThread = new Thread( + ( token ) => { + try { + ProcessFrameWithoutEvent(); + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( + $"Critical error when rendering:\n" + $"{ex}", + LogType.Error ); + ShouldClose = true; + } + } ); + renderThread.Start(); + /**/ + using( TimeSpanAwaitingToken eventAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + while( _closed ) { + if( _nextView != _currentView ) { + Interlocked.Exchange( ref _currentView, _nextView ); + } + InternalIO.glfwPollEvents(); + eventAwaitingToken.WaitNextSpan(); + _closed = !ShouldClose; + } + } + /**/ + renderThread.Join(); + fpsCountingToken.Dispose(); + fpsCountProvider.StopSpanProviding(); + frameTimeProvider.StopSpanProviding(); } - protected void UseViewInNextFrame(string name) + protected void UseViewInNextFrame( string name ) { - if (!allView.TryGetValue(name, out ViewBase v)) - { - throw new KeyNotFoundException($"{$"Cannot find View named {name} "}{$"in current View Model of {GetType().FullName}"}"); + if( !allView.TryGetValue( name, out ViewBase v ) ) { + throw new KeyNotFoundException( + $"{$"Cannot find View named {name} "}{$"in current View Model of {GetType().FullName}"}" ); } CurrentView = v; } + private void CountFps( object sender, EventArgs e ) + { + Interlocked.Exchange( ref _frameSpeed, _frameCount ); + Interlocked.Exchange( ref _frameCount, 0 ); + /**/ + Console.Clear(); + Console.WriteLine( FrameSpeed ); + /**/ + } + private unsafe void PrivateShow() { - if (0 == InternalIO.glfwWindowShouldClose(this.viewPortDisplay.ViewPortID)) - { + if( 0 == InternalIO.glfwWindowShouldClose( + this.viewPortDisplay.ViewPortID ) ) { CurrentView.Use(); RenderStream.PollEvents(); } } - private void ShowFrameOnce() + private void ProcessFrameWithoutEvent() { - viewPortDisplay.FlushSize(); - if (_nextView != _currentView) - { - Interlocked.Exchange(ref _currentView, _nextView); + using( TimeSpanAwaitingToken renderAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( + 1 ) ) { + renderAwaitingToken.TimeSpanRefreshed += ( _, _ ) => { }; + while( _closed ) { + foreach( ViewPort context in CurrentView.Render ) { + context.FlushSize(); + } + CurrentView.Use(); + renderAwaitingToken.WaitNextSpan(); + Interlocked.Add( ref _frameCount, 1 ); + } } - CurrentView.Use(); - RenderStream.PollEvents(); - frameTimeProvider.WaitNextSpan(); - Interlocked.Add(ref _frameCount, 1); } } diff --git a/源代码/StgSharp/MVVM/ViewModel/ViewManage.cs b/源代码/StgSharp/MVVM/ViewModel/ViewManage.cs index dc77d997..a8959655 100644 --- a/源代码/StgSharp/MVVM/ViewModel/ViewManage.cs +++ b/源代码/StgSharp/MVVM/ViewModel/ViewManage.cs @@ -44,13 +44,15 @@ namespace StgSharp.MVVM.ViewModel private Dictionary allView; - public T CreateAndBindView(string name, (int x, int y, int z) unitCubeSize) - where T : ViewBase, new() + public T CreateAndBindView( + string name, + (int x, int y, int z) unitCubeSize ) + where T: ViewBase, new() { T ret = new T(); ret.SelfName = name; - ret.InternalInitialize(name, unitCubeSize, this); - allView.Add(name, ret); + ret.InternalInitialize( name, unitCubeSize, this ); + allView.Add( name, ret ); return ret; } diff --git a/源代码/StgSharp/MVVM/ViewModel/ViewModel.cs b/源代码/StgSharp/MVVM/ViewModel/ViewModel.cs index 455a8c63..16249f86 100644 --- a/源代码/StgSharp/MVVM/ViewModel/ViewModel.cs +++ b/源代码/StgSharp/MVVM/ViewModel/ViewModel.cs @@ -34,6 +34,7 @@ using StgSharp.Graphics.OpenGL; using StgSharp.Math; using StgSharp.MVVM.View; using StgSharp.MVVM.ViewModel; +using StgSharp.Threading; using StgSharp.Timing; using System; @@ -51,6 +52,7 @@ namespace StgSharp.MVVM.ViewModel public abstract partial class ViewModelBase { + private FrameBufferSizeHandler _resizeCallback; private int _frameCount; private int _frameSpeed; private ViewPort viewPortDisplay; @@ -61,135 +63,72 @@ namespace StgSharp.MVVM.ViewModel internal TimeSpanProvider frameTimeProvider; internal Vector4 backgroundColor; - protected ViewModelBase(int frameSpeed) + protected ViewModelBase( int frameSpeed ) { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - fpsCountProvider.SpanRefreshCallback = CountFps; - long frameLength = (FrameSpeed > 0) ? ((1000L * 1000L) / FrameSpeed) : 0; + long frameLength = ( FrameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / FrameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( - frameLength, TimeSpanProvider.DefaultProvider - ); - frameTimeProvider.SpanRefreshCallback = - () => - { - }; - - viewPortDisplay.FrameSizeCallback = (handle, width, height) - => - { - InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); - OpenGLFunction.CurrentGL.Viewport(0, 0, width, height); - PrivateShow(); - }; - viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) - => - { - PrivateShow(); - }; + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; } - protected ViewModelBase(float frameLength) + protected ViewModelBase( float frameLength ) { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - fpsCountProvider.SpanRefreshCallback = CountFps; - long _frameLength = (FrameSpeed > 0) ? ((long)(1000 * frameLength)) : 0; + long _frameLength = ( FrameSpeed > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( - _frameLength, TimeSpanProvider.DefaultProvider - ); - frameTimeProvider.SpanRefreshCallback = - () => - { - }; - - viewPortDisplay.FrameSizeCallback = (handle, width, height) - => - { - InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); - OpenGLFunction.CurrentGL.Viewport(0, 0, width, height); - PrivateShow(); - }; - viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) - => - { - PrivateShow(); - }; + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; } - public ViewModelBase(ViewPort vBinding, int frameSpeed) + public ViewModelBase( ViewPort vBinding, int frameSpeed ) { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - fpsCountProvider.SpanRefreshCallback = CountFps; - long frameLength = (frameSpeed > 0) ? ((1000L * 1000L) / frameSpeed) : 0; + long frameLength = ( frameSpeed > 0 ) ? + ( ( 1000L * 1000L ) / frameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( - frameLength, TimeSpanProvider.DefaultProvider - ); - frameTimeProvider.SpanRefreshCallback = - () => - { - }; - viewPortDisplay.FrameSizeCallback = (handle, width, height) - => - { - InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); - OpenGLFunction.CurrentGL.Viewport(0, 0, width, height); - PrivateShow(); - }; - viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) - => - { - PrivateShow(); - }; + frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; } - public ViewModelBase(ViewPort vBinding, float frameLength) + public ViewModelBase( ViewPort vBinding, float frameLength ) { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider(1.0, TimeSpanProvider.DefaultProvider); + fpsCountProvider = new TimeSpanProvider( + 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - fpsCountProvider.SpanRefreshCallback = CountFps; - long _frameLength = (frameLength > 0) ? ((long)(1000 * frameLength)) : 0; + long _frameLength = ( frameLength > 0 ) ? + ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( - _frameLength, TimeSpanProvider.DefaultProvider - ); - frameTimeProvider.SpanRefreshCallback = - () => - { - }; - - viewPortDisplay.FrameSizeCallback = (handle, width, height) - => - { - InternalIO.glfwMakeContextCurrent(viewPortDisplay.ViewPortID); - OpenGLFunction.CurrentGL.Viewport(0, 0, width, height); - PrivateShow(); - }; - viewPortDisplay.FramePostionCallback = (handle, xpos, ypos) - => - { - PrivateShow(); - }; + _frameLength, TimeSpanProvider.DefaultProvider ); + FrameSizeCallback = DefaultFrameRewsizeCallback; } - public DataBindingEntry this[string name] + public DataBindingEntry this[ string name ] { get { - if (this.TryGetObjectReference(name, out DataBindingEntry entry)) - { + if( this.TryGetObjectReference( + name, out DataBindingEntry entry ) ) { return entry; } throw new KeyNotFoundException(); @@ -198,8 +137,10 @@ namespace StgSharp.MVVM.ViewModel public bool ShouldClose { - get => InternalIO.glfwWindowShouldClose(viewPortDisplay.ViewPortID) != 0; - set => InternalIO.glfwSetWindowShouldClose(viewPortDisplay.ViewPortID, value ? 1 : 0); + get => InternalIO.glfwWindowShouldClose( + viewPortDisplay.ViewPortID ) != 0; + set => InternalIO.glfwSetWindowShouldClose( + viewPortDisplay.ViewPortID, value ? 1 : 0 ); } public int CurrentFrameCount => frameTimeProvider.CurrentSpan; @@ -207,28 +148,19 @@ namespace StgSharp.MVVM.ViewModel public int FrameSpeed => _frameSpeed; /// - /// Height of this form, represent in + /// Height of this form, represent in /// public int Height { get => viewPortDisplay.Height; - set { viewPortDisplay.Height = value; } } /// - /// Width of this form, represent in + /// Width of this form, represent in /// public int Width { get => viewPortDisplay.Width; - set - { - viewPortDisplay.Width = value; - if (WindowID != IntPtr.Zero) - { - InternalIO.glfwSetWindowSize(viewPortDisplay.ViewPortID, Width, Height); - } - } } public unsafe IntPtr WindowID @@ -242,20 +174,11 @@ namespace StgSharp.MVVM.ViewModel } /// - /// Width of this form, represent in + /// Width of this form, represent in /// - public vec2d Size + public Vec2 Size { - get => new vec2d(Width, Height); - set - { - Width = (int)value.X; - Height = (int)value.Y; - if (WindowID != IntPtr.Zero) - { - InternalIO.glfwSetWindowSize(viewPortDisplay.ViewPortID, Width, Height); - } - } + get => new Vec2( Width, Height ); } public ViewPort ViewPortBinding @@ -263,79 +186,74 @@ namespace StgSharp.MVVM.ViewModel get => viewPortDisplay; } -#pragma warning disable CA1044 + #pragma warning disable CA1044 protected FrameBufferSizeHandler FrameSizeCallback { set { - IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate(value); - InternalIO.glfwSetFramebufferSizeCallback(viewPortDisplay.ViewPortID, handlerPtr); + _resizeCallback = value; + IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( + value ); + InternalIO.glfwSetFramebufferSizeCallback( + viewPortDisplay.ViewPortID, handlerPtr ); } } -#pragma warning restore CA1044 - + #pragma warning restore CA1044 public abstract void CustomizeInitialize(); - /// - /// Resize the current form - /// - /// - /// A (width,height) representing the new size of current form - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSize(vec2d size) - { - this.Size = size; - InternalIO.glfwSetWindowSize(this.viewPortDisplay.ViewPortID, (int)size.X, (int)size.Y); - } - /// /// Set the size limit of current form /// /// - /// Minimum size of current form. In form of a of (width,height) + /// Minimum size of current form. In form of a of (width,height) /// /// - /// Maximum size of current form. In form of a of (width,height) + /// Maximum size of current form. In form of a of (width,height) /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSizeLimit(vec2d minSize, vec2d maxSize) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetSizeLimit( Vec2 minSize, Vec2 maxSize ) { + ThreadHelper.MainThreadAssert(); InternalIO.glfwSetWindowSizeLimits( - this.viewPortDisplay.ViewPortID, - (int)minSize.X, - (int)minSize.Y, - (int)maxSize.X, - (int)maxSize.Y); + this.viewPortDisplay.ViewPortID, ( int )minSize.X, + ( int )minSize.Y, ( int )maxSize.X, ( int )maxSize.Y ); } /// /// Set the size limit of current form /// - /// Minimum width of current form - /// Minimum height of current form - /// Maximum width of current form - /// Maximum height of current form - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void SetSizeLimit(int minWidth, int minHeight, int maxWidth, int maxHeight) + /// Minimum width of current form + /// Minimum height of current form + /// Maximum width of current form + /// Maximum height of current form + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void SetSizeLimit( + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) { - //TODO 重做form的尺寸极限控制 - InternalIO.glfwSetWindowSizeLimits(this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, maxHeight); + ThreadHelper.MainThreadAssert(); + InternalIO.glfwSetWindowSizeLimits( + this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, + maxHeight ); } - public abstract bool TryGetObjectReference(string name, out DataBindingEntry entry); + public abstract bool TryGetObjectReference( + string name, + out DataBindingEntry entry ); - private void CountFps() + private void DefaultFrameRewsizeCallback( + IntPtr windowHandle, + int width, + int height ) { - /**/ - Console.Clear(); - Console.WriteLine(FrameSpeed); - /**/ - Interlocked.Exchange(ref _frameSpeed, _frameCount); - Interlocked.Exchange(ref _frameCount, 0); + ViewPort.GetExistedViewPort( windowHandle, out ViewPort vp ); + vp.RequestFlushSizeInNextFrame( width, height ); + + //Console.WriteLine($"{width} {height}"); } } - } diff --git a/源代码/StgSharp/MVVM/ViewPort.cs b/源代码/StgSharp/MVVM/ViewPort.cs index 742b9969..e10ae33b 100644 --- a/源代码/StgSharp/MVVM/ViewPort.cs +++ b/源代码/StgSharp/MVVM/ViewPort.cs @@ -30,11 +30,14 @@ //----------------------------------------------------------------------- using StgSharp.Graphics; using StgSharp.Math; +using StgSharp.Threading; using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; +using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; using System.Threading; @@ -43,106 +46,101 @@ namespace StgSharp.MVVM { public class ViewPort { - private FrameBufferSizeHandler _sizeHandler; - private FramePositionHandler _positionHandler; - private int _width, _height; + + private static ConcurrentDictionary _handleToViewPortIndex = new ConcurrentDictionary( + ); + private int _shouldCloseMask, _closeRequestedMask; + private int _width, _height, _newWidth, _newHeight; internal ViewPort() { - _height = 600; - _width = 800; - Name = new StackFrame(1, false). + _newHeight = 600; + _newWidth = 800; + FlushSize(); + Name = new StackFrame( 1, false ). GetMethod()!.DeclaringType!.Name; Monitor = IntPtr.Zero; - ViewPortID = InternalIO.glfwCreateWindow(_width, _height, - Encoding.UTF8.GetBytes(Name), Monitor, IntPtr.Zero - ); - if (ViewPortID == IntPtr.Zero) - { - throw new InvalidOperationException("Unable to create viewport handle."); + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); } - public ViewPort(vec2d size, string name, IntPtr monitor) + internal ViewPort( Vec2 size, string name, IntPtr monitor ) { - _width = (int)size.X; - _height = (int)size.Y; + _newWidth = ( int )size.X; + _newHeight = ( int )size.Y; + FlushSize(); Name = name; Monitor = monitor; - ViewPortID = InternalIO.glfwCreateWindow(_width, _height, - Encoding.UTF8.GetBytes(Name), Monitor, IntPtr.Zero - ); - if (ViewPortID == IntPtr.Zero) - { - throw new InvalidOperationException("Unable to create viewport handle."); - } - } - - public FrameBufferSizeHandler FrameSizeCallback - { - set - { - _sizeHandler = value; - IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate(_sizeHandler); - InternalIO.glfwSetFramebufferSizeCallback(ViewPortID, handlerPtr); - } - } - - public FramePositionHandler FramePostionCallback - { - set - { - _positionHandler = value; - IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate(_positionHandler); - InternalIO.glfwSetWindowPosCallback(ViewPortID, handlerPtr); + ViewPortID = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, + IntPtr.Zero ); + if( ViewPortID == IntPtr.Zero ) { + throw new InvalidOperationException( + "Unable to create viewport handle." ); } + _handleToViewPortIndex.TryAdd( ViewPortID, this ); } public unsafe int Height { get { return _height; } - set { InternalIO.glfwSetWindowSize(ViewPortID, _width, value); } + internal set { Interlocked.Exchange( ref _height, value ); } } public unsafe int Width { get { return _width; } - set { InternalIO.glfwSetWindowSize(ViewPortID, value, _height); } + internal set { Interlocked .Exchange( ref _width, value ); } } - public IntPtr GraphicHandle { get; internal set; } - - public IntPtr Monitor { get; internal set; } - - public IntPtr ViewPortID { get; private set; } - - public string Name { get; set; } - - public void Close() + public IntPtr GraphicHandle { - InternalIO.glfwSetWindowShouldClose(ViewPortID, 1); + get; + internal set; + } + + public IntPtr Monitor + { + get; + internal set; + } + + public IntPtr ViewPortID + { + get; + private set; + } + + public string Name + { + get; + set; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool GetExistedViewPort( + IntPtr handle, + out ViewPort port ) + { + return _handleToViewPortIndex.TryGetValue( handle, out port ); } internal unsafe void FlushSize() { - fixed (int* wptr = &_width, hptr = &_height) - { - InternalIO.glfwGetWindowSize(ViewPortID, wptr, hptr); - } + Interlocked.Exchange( ref _height, _newHeight ); + Interlocked.Exchange( ref _width, _newWidth ); } - private int _eventWaitingMask; - - internal bool IsWaitingEvent + internal void RequestFlushSizeInNextFrame( int width, int height ) { - get => _eventWaitingMask == 1; - } - - internal unsafe void InternalShowViewModelMain() - { - Interlocked.Exchange(ref _eventWaitingMask, 1); - InternalIO.glfwWaitEvents(); - Interlocked.Exchange(ref _eventWaitingMask, 0); + Interlocked.Exchange( ref _newHeight, height ); + Interlocked .Exchange( ref _newWidth, width ); } } diff --git a/源代码/StgSharp/Math/GLfixed.cs b/源代码/StgSharp/Math/GLfixed.cs index dd4984c0..7d0abd62 100644 --- a/源代码/StgSharp/Math/GLfixed.cs +++ b/源代码/StgSharp/Math/GLfixed.cs @@ -37,13 +37,13 @@ using System.Threading.Tasks; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = 8)] + [StructLayout( LayoutKind.Explicit, Size = 8 )] public struct GLfixed { - [FieldOffset(0)] public int All; - [FieldOffset(0)] public short Decimals; - [FieldOffset(4)] public short Inertger; + [FieldOffset( 0 )] public int All; + [FieldOffset( 0 )] public short Decimals; + [FieldOffset( 4 )] public short Inertger; } } diff --git a/源代码/StgSharp/Math/Graphic/Camera.cs b/源代码/StgSharp/Math/Graphic/Camera.cs index c4277b90..309fda64 100644 --- a/源代码/StgSharp/Math/Graphic/Camera.cs +++ b/源代码/StgSharp/Math/Graphic/Camera.cs @@ -55,39 +55,37 @@ namespace StgSharp.Graphics internal Radius _row; internal Radius _yaw; internal Uniform convertedUniform; - internal vec3d _target, up; - + internal Vec3 _target, up; public Camera() { cameraAtt = Matrix44.Unit; - _target = Vec3d.Zero; - up = Vec3d.Zero; + _target = Vec3.Zero; + up = Vec3.Zero; _isLookAtAvailable = false; _lookAt = Matrix44.Unit; rotationAtt = Matrix44.Unit; _projection = new Matrix44(); } - public Camera(vec3d position, vec3d target, vec3d up) : this() + public Camera( Vec3 position, Vec3 target, Vec3 up ) + : this() { rotationAtt = Matrix44.Unit; cameraAtt = new Matrix44(); - SetViewDirection(position, target, up); + SetViewDirection( position, target, up ); _pitch = Radius.Zero; _row = Radius.Zero; _yaw = Radius.Zero; } - public Matrix44 Projection -=> _projection; + public Matrix44 Projection => _projection; public Matrix44 View { get { - if (_isLookAtAvailable) - { + if( _isLookAtAvailable ) { return _lookAt; } Matrix44 move = Matrix44.Unit; @@ -100,67 +98,66 @@ namespace StgSharp.Graphics public void DisplayGLtypeDefinition() { - Console.WriteLine("uniform matrix4x4 cameraName;"); + Console.WriteLine( "uniform matrix4x4 cameraName;" ); } /// - /// Get all uniform related to this . + /// Get all uniform related to this . /// - /// Shader program requires this camera. + /// Shader program requires this camera. /// - /// ContextName of all related uniforms. - /// If you fallow form from + /// ContextName of all related uniforms. If you fallow form from /// /// - public unsafe void GainAllUniforms(ShaderProgram source, params string[] uniformName) + public unsafe void GainAllUniforms( + ShaderProgram source, + params string[] uniformName ) { - if (uniformName.Length != 1) - { - throw new ArgumentException("Camera needs only one uniform.", nameof(uniformName)); + if( uniformName.Length != 1 ) { + throw new ArgumentException( + "Camera needs only one uniform.", nameof( uniformName ) ); } - convertedUniform = source.GetUniform(uniformName[0]); + convertedUniform = source.GetUniform( uniformName[ 0 ] ); } - public void MoveNear(float distance) + public void MoveNear( float distance ) { cameraAtt.colum3.Z -= distance; _isLookAtAvailable = false; } - public void MoveRight(float distance) + public void MoveRight( float distance ) { cameraAtt.colum3.X -= distance; _isLookAtAvailable = false; } - public void MoveUp(float distance) + public void MoveUp( float distance ) { cameraAtt.colum3.Y -= distance; _isLookAtAvailable = false; } - public unsafe void SetAllUniforms() { //Console.WriteLine(Projection * ViewBase); - OpenGL.OpenGLFunction.CurrentGL.SetUniformValue(convertedUniform, Projection * View); + OpenGL.OpenGLFunction.CurrentGL + .SetUniformValue( convertedUniform, Projection * View ); } - public void SetViewDirection(vec3d position, vec3d target, vec3d up) + public void SetViewDirection( Vec3 position, Vec3 target, Vec3 up ) { - vec3d direction = position - target; - if ((position.vec == cameraAtt.colum3.vec) && (this.up == up) && (cameraAtt.colum2.vec == direction.vec)) - { + Vec3 direction = position - target; + if( ( position.vec == cameraAtt.colum3.vec ) && ( this.up == up ) && ( cameraAtt.colum2.vec == direction.vec ) ) { //no difference with precious value return; } - if (direction.GetLength() == 0) - { + if( direction.GetLength() == 0 ) { //deadlock throw new ArgumentException(); } - if (Vec3d.IsParallel(direction, up)) - { + if( Vec3.IsParallel( direction, up ) ) { throw new ArgumentException(); } _target = direction; @@ -168,9 +165,9 @@ namespace StgSharp.Graphics _isLookAtAvailable = false; - Linear.Orthogonalize(ref direction, ref up); + Linear.Orthogonalize( ref direction, ref up ); - vec3d right = Linear.Orthogonalize(Linear.Cross(up, direction)); + Vec3 right = Linear.Orthogonalize( Linear.Cross( up, direction ) ); cameraAtt.colum0.vec = right.vec; cameraAtt.colum1.vec = up.vec; @@ -180,10 +177,13 @@ namespace StgSharp.Graphics InternalPitch(); InternalRow(); InternalYaw(); - } - public void SetViewRange(Radius fovRadius, vec2d size, vec2d offset, (float front, float back) dephRange) + public void SetViewRange( + Radius fovRadius, + Vec2 size, + Vec2 offset, + (float front, float back) dephRange ) { float distance = _target.GetLength(), @@ -191,28 +191,27 @@ namespace StgSharp.Graphics far = distance + dephRange.back, offsetX = offset.X, offsetY = offset.Y, - width = Scaler.Abs(GeometryScaler.Tan(fovRadius / 2) * near * 2), - height = (width * size.Y) / size.X; + width = Scaler.Abs( + GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), + height = ( width * size.Y ) / size.X; - _projection.colum0.X = (2 * near) / width; - _projection.colum1.Y = (2 * near) / height; - _projection.colum2.X = (2 * offsetX) / width; - _projection.colum2.Y = (2 * offsetY) / height; - _projection.colum2.Z = (far + near) / (near - far); + _projection.colum0.X = ( 2 * near ) / width; + _projection.colum1.Y = ( 2 * near ) / height; + _projection.colum2.X = ( 2 * offsetX ) / width; + _projection.colum2.Y = ( 2 * offsetY ) / height; + _projection.colum2.Z = ( far + near ) / ( near - far ); _projection.colum2.W = -1; - _projection.colum3.Z = (2 * near * far) / (near - far); - + _projection.colum3.Z = ( 2 * near * far ) / ( near - far ); } - public void Test(params vec4d[] vec) + public void Test( params Vec4[] vec ) { - Console.WriteLine(View); - Console.WriteLine(Projection); - Console.WriteLine(Projection * View); - Console.WriteLine(View); - foreach (vec4d item in vec) - { - Console.Write($"{Projection * View * item};"); + Console.WriteLine( View ); + Console.WriteLine( Projection ); + Console.WriteLine( Projection * View ); + Console.WriteLine( View ); + foreach( Vec4 item in vec ) { + Console.Write( $"{Projection * View * item};" ); } } @@ -221,31 +220,32 @@ namespace StgSharp.Graphics throw new NotImplementedException(); } - ~Camera() - { - } + ~Camera() { } #region rotation - public void Yaw(Radius r) + public void Yaw( Radius r ) { _yaw -= r; + //Console.WriteLine(_yaw._radius); //Console.WriteLine(rotationAtt); InternalYaw(); } - public void Pitch(Radius r) + public void Pitch( Radius r ) { _pitch -= r; + //Console.WriteLine(_pitch._radius); //Console.WriteLine(rotationAtt); InternalPitch(); } - public void Row(Radius r) + public void Row( Radius r ) { _row -= r; + //Console.WriteLine(_row._radius); //Console.WriteLine(rotationAtt); InternalRow(); @@ -256,15 +256,12 @@ namespace StgSharp.Graphics _isLookAtAvailable = false; Matrix32 partialCoord = new Matrix32( - cameraAtt.colum1.vec, - cameraAtt.colum2.vec - ); + cameraAtt.colum1.vec, cameraAtt.colum2.vec ); float angle = _pitch._radius; Matrix22 rotation = new Matrix22( - Scaler.Cos(angle), -Scaler.Sin(angle), - Scaler.Sin(angle), Scaler.Cos(angle) - ); + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); partialCoord *= rotation; rotationAtt.colum1.vec = partialCoord.colum0.vec; @@ -277,15 +274,12 @@ namespace StgSharp.Graphics _isLookAtAvailable = false; Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, - cameraAtt.colum1.vec - ); + cameraAtt.colum0.vec, cameraAtt.colum1.vec ); float angle = _row._radius; Matrix22 rotation = new Matrix22( - Scaler.Cos(angle), -Scaler.Sin(angle), - Scaler.Sin(angle), Scaler.Cos(angle) - ); + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); partialCoord *= rotation; rotationAtt.colum0.vec = partialCoord.colum0.vec; @@ -298,25 +292,18 @@ namespace StgSharp.Graphics _isLookAtAvailable = false; Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, - cameraAtt.colum2.vec - ); + cameraAtt.colum0.vec, cameraAtt.colum2.vec ); float angle = _yaw._radius; Matrix22 rotation = new Matrix22( - Scaler.Cos(angle), -Scaler.Sin(angle), - Scaler.Sin(angle), Scaler.Cos(angle) - ); + Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), + Scaler.Cos( angle ) ); partialCoord *= rotation; rotationAtt.colum0.vec = partialCoord.colum0.vec; rotationAtt.colum2.vec = partialCoord.colum1.vec; rotationAtt.isTransposed = false; - } - #endregion - - } } diff --git a/源代码/StgSharp/Math/Linear/Cordination.cs b/源代码/StgSharp/Math/Linear/Cordination.cs index a444628e..225ceb3f 100644 --- a/源代码/StgSharp/Math/Linear/Cordination.cs +++ b/源代码/StgSharp/Math/Linear/Cordination.cs @@ -30,11 +30,12 @@ //----------------------------------------------------------------------- namespace StgSharp.Math { - public enum CoordinatePlain { + XY, YZ, XZ, + } } diff --git a/源代码/StgSharp/Math/Linear/IVector.cs b/源代码/StgSharp/Math/Linear/IVector.cs index a97cf3de..3b65e829 100644 --- a/源代码/StgSharp/Math/Linear/IVector.cs +++ b/源代码/StgSharp/Math/Linear/IVector.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Numerics; using System.Text; using System.Threading.Tasks; @@ -38,5 +39,12 @@ namespace StgSharp.Math { public interface IVector { + /* + public static T Create(Vector4 source) where T : IVector + { + return T + } + /**/ + } } diff --git a/源代码/StgSharp/Math/Linear/MatInterface.cs b/源代码/StgSharp/Math/Linear/MatInterface.cs index 8e0ba0d3..bc5fdd44 100644 --- a/源代码/StgSharp/Math/Linear/MatInterface.cs +++ b/源代码/StgSharp/Math/Linear/MatInterface.cs @@ -34,7 +34,5 @@ using System.Text; namespace StgSharp.Math { - public interface IMat - { - } + public interface IMat { } } diff --git a/源代码/StgSharp/Math/Linear/Matrix22.cs b/源代码/StgSharp/Math/Linear/Matrix22.cs index 6f3e3d53..df23f724 100644 --- a/源代码/StgSharp/Math/Linear/Matrix22.cs +++ b/源代码/StgSharp/Math/Linear/Matrix22.cs @@ -28,47 +28,44 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = (2 * 2 * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 2 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix22 : IMat { - [FieldOffset(2 * 2 * 4 * sizeof(float))] + [FieldOffset( 2 * 2 * 4 * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] - internal Mat2 mat; - [FieldOffset(2 * 4 * sizeof(float))] - internal Mat2 transpose; + [FieldOffset( 0 )] + internal ColumnSet2 mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] + internal ColumnSet2 transpose; - internal Matrix22( - Mat2 mat - ) + internal Matrix22( ColumnSet2 mat ) { this.mat = mat; } - internal Matrix22( - Vector4 c0, - Vector4 c1 - ) + internal Matrix22( Vector4 c0, Vector4 c1 ) { mat.colum0 = c0; mat.colum1 = c1; } - public Matrix22( - float a00, float a01, - float a10, float a11 - ) + public Matrix22( float a00, float a01, float a10, float a11 ) { - mat.colum0 = new Vector4(a00, a10, 0, 0); - mat.colum1 = new Vector4(a01, a11, 0, 0); + mat.colum0 = new Vector4( a00, a10, 0, 0 ); + mat.colum1 = new Vector4( a01, a11, 0, 0 ); } public Matrix22 Transpose @@ -76,21 +73,20 @@ namespace StgSharp.Math get { InternalTranspose(); - return new Matrix22(this.transpose); + return new Matrix22( this.transpose ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public float Det() { - return (mat.m00 * mat.m11) - (mat.m10 * mat.m01); + return ( mat.m00 * mat.m11 ) - ( mat.m10 * mat.m01 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal void InternalTranspose() { - if (!isTransposed) - { + if( !isTransposed ) { transpose = mat; float cache = transpose.m10; transpose.m10 = transpose.m01; @@ -100,89 +96,79 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator -(Matrix22 left, Matrix22 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator -( Matrix22 left, Matrix22 right ) { return new Matrix22( left.mat.colum0 + right.mat.colum0, - left.mat.colum1 + right.mat.colum1 - ); + left.mat.colum1 + right.mat.colum1 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator *(Matrix22 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 mat, float value ) { return new Matrix22( - mat.mat.colum0 * value, - mat.mat.colum1 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator *(Matrix22 left, Matrix22 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix22 left, Matrix22 right ) { left.InternalTranspose(); return new Matrix22( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator *(Matrix22 left, Matrix23 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix22 left, Matrix23 right ) { left.InternalTranspose(); return new Matrix23( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator *(Matrix22 left, Matrix24 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix22 left, Matrix24 right ) { left.InternalTranspose(); return new Matrix24( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator /(Matrix22 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator /( Matrix22 mat, float value ) { return new Matrix22( - mat.mat.colum0 / value, - mat.mat.colum1 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value ); } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix22 operator +(Matrix22 left, Matrix22 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix22 operator +( + Matrix22 left, + Matrix22 right ) { - Mat2* refmat = InternalIO.add_mat2(&left.mat, &right.mat); - Matrix22 ret = new Matrix22(*refmat); - InternalIO.deinit_mat2(refmat); - return ret; + return new Matrix22( + left.mat.colum0 + right.mat.colum0, + left.mat.colum1 + right.mat.colum1 ); } - - } } diff --git a/源代码/StgSharp/Math/Linear/Matrix23.cs b/源代码/StgSharp/Math/Linear/Matrix23.cs index bb9e4cd7..32970ff8 100644 --- a/源代码/StgSharp/Math/Linear/Matrix23.cs +++ b/源代码/StgSharp/Math/Linear/Matrix23.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Numerics; using System.Runtime.CompilerServices; @@ -35,20 +37,19 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = ((3 + 2) * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 3 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix23 : IMat { - [FieldOffset(5 * 4 * sizeof(float))] internal bool isTransposed; - [FieldOffset(3 * 4 * sizeof(float))] internal Mat2 transpose; + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet2 transpose; - [FieldOffset(0)] internal Mat3 mat; + [FieldOffset( 0 )] internal ColumnSet3 mat; - internal Matrix23( - Vector4 c0, - Vector4 c1, - Vector4 c2 - ) + internal Matrix23( Vector4 c0, Vector4 c1, Vector4 c2 ) { mat.colum0 = c0; mat.colum1 = c1; @@ -56,68 +57,58 @@ namespace StgSharp.Math } public Matrix23( - float a00, float a01, float a02, - float a10, float a11, float a12 - ) + float a00, + float a01, + float a02, + float a10, + float a11, + float a12 ) { - mat.colum0 = new Vector4(a00, a10, 0, 0); - mat.colum1 = new Vector4(a01, a11, 0, 0); - mat.colum2 = new Vector4(a02, a12, 0, 0); + mat.colum0 = new Vector4( a00, a10, 0, 0 ); + mat.colum1 = new Vector4( a01, a11, 0, 0 ); + mat.colum2 = new Vector4( a02, a12, 0, 0 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 1) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 1) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat3* source = &this.mat) - { - fixed (Mat2* target = &this.transpose) - { - InternalIO.Transpose3to2_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat ) { + fixed( ColumnSet2* target = &this.transpose ) { + InternalIO.Intrinsic.transpose32( source, target ); } } @@ -125,93 +116,81 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator -(Matrix23 left, Matrix23 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator -( Matrix23 left, Matrix23 right ) { return new Matrix23( left.mat.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, - left.mat.colum2 - right.mat.colum2 - ); + left.mat.colum2 - right.mat.colum2 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator *(Matrix23 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 mat, float value ) { return new Matrix23( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator *(Matrix23 left, Matrix32 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix23 left, Matrix32 right ) { left.InternalTranspose(); return new Matrix22( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator *(Matrix23 left, Matrix33 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix23 left, Matrix33 right ) { left.InternalTranspose(); return new Matrix23( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator *(Matrix23 left, Matrix34 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix23 left, Matrix34 right ) { left.InternalTranspose(); return new Matrix24( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator /(Matrix23 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator /( Matrix23 mat, float value ) { return new Matrix23( - mat.mat.colum0 / value, - mat.mat.colum1 / value, - mat.mat.colum2 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator +(Matrix23 left, Matrix23 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator +( Matrix23 left, Matrix23 right ) { return new Matrix23( left.mat.colum0 + right.mat.colum0, left.mat.colum1 + right.mat.colum1, - left.mat.colum2 + right.mat.colum2 - ); + left.mat.colum2 + right.mat.colum2 ); } - - } - } diff --git a/源代码/StgSharp/Math/Linear/Matrix24.cs b/源代码/StgSharp/Math/Linear/Matrix24.cs index 0c93bb23..87bd4123 100644 --- a/源代码/StgSharp/Math/Linear/Matrix24.cs +++ b/源代码/StgSharp/Math/Linear/Matrix24.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Numerics; using System.Runtime.CompilerServices; @@ -35,26 +37,24 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = ((4 + 2) * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 4 + 2 ) * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix24 : IMat { - [FieldOffset(6 * 4 * sizeof(float))] internal bool isTransposed; - [FieldOffset(4 * 4 * sizeof(float))] internal Mat2 transpose; + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet2 transpose; - [FieldOffset(0)] internal Mat4 mat; + [FieldOffset( 0 )] internal ColumnSet4 mat; - [FieldOffset(0)] public vec2d Colum0; - [FieldOffset(16)] public vec2d Colum1; - [FieldOffset(32)] public vec2d Colum2; - [FieldOffset(48)] public vec2d Colum3; + [FieldOffset( 0 )] public Vec2 Colum0; + [FieldOffset( 16 )] public Vec2 Colum1; + [FieldOffset( 32 )] public Vec2 Colum2; + [FieldOffset( 48 )] public Vec2 Colum3; - internal Matrix24( - Vector4 c0, - Vector4 c1, - Vector4 c2, - Vector4 c3 - ) + internal Matrix24( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) { mat.colum0 = c0; mat.colum1 = c1; @@ -62,56 +62,50 @@ namespace StgSharp.Math mat.colum3 = c3; } - public Matrix24( - float a00, float a01, float a02, float a03, - float a10, float a11, float a12, float a13 - ) + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13 ) { - mat.colum0 = new Vector4(a00, a10, 0, 0); - mat.colum1 = new Vector4(a01, a11, 0, 0); - mat.colum2 = new Vector4(a02, a12, 0, 0); - mat.colum3 = new Vector4(a03, a13, 0, 0); + mat.colum0 = new Vector4( a00, a10, 0, 0 ); + mat.colum1 = new Vector4( a01, a11, 0, 0 ); + mat.colum2 = new Vector4( a02, a12, 0, 0 ); + mat.colum3 = new Vector4( a03, a13, 0, 0 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 1) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 1) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 1 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } @@ -123,16 +117,13 @@ namespace StgSharp.Math return $"{$"[{mat.m00},{mat.m01},{mat.m02},{mat.m03}],"}{$"[{mat.m10},{mat.m11},{mat.m12},{mat.m13}]"}"; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat4* source = &this.mat) - { - fixed (Mat2* target = &this.transpose) - { - InternalIO.Transpose4to2_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet2* target = &this.transpose ) { + InternalIO.Intrinsic.transpose42( source, target ); } } @@ -140,98 +131,83 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator -(Matrix24 left, Matrix24 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator -( Matrix24 left, Matrix24 right ) { return new Matrix24( left.mat.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, left.mat.colum2 - right.mat.colum2, - left.mat.colum3 - right.mat.colum3 - ); + left.mat.colum3 - right.mat.colum3 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator *(Matrix24 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 mat, float value ) { return new Matrix24( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value, - mat.mat.colum3 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix22 operator *(Matrix24 left, Matrix42 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix22 operator *( Matrix24 left, Matrix42 right ) { left.InternalTranspose(); return new Matrix22( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix23 operator *(Matrix24 left, Matrix43 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix23 operator *( Matrix24 left, Matrix43 right ) { left.InternalTranspose(); return new Matrix23( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator *(Matrix24 left, Matrix44 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator *( Matrix24 left, Matrix44 right ) { left.InternalTranspose(); return new Matrix24( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator /(Matrix24 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator /( Matrix24 mat, float value ) { return new Matrix24( - mat.mat.colum0 / value, - mat.mat.colum1 / value, - mat.mat.colum2 / value, - mat.mat.colum3 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix24 operator +(Matrix24 left, Matrix24 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix24 operator +( Matrix24 left, Matrix24 right ) { return new Matrix24( left.mat.colum0 + right.mat.colum0, left.mat.colum1 + right.mat.colum1, left.mat.colum2 + right.mat.colum2, - left.mat.colum3 + right.mat.colum3 - ); + left.mat.colum3 + right.mat.colum3 ); } - - } - - } diff --git a/源代码/StgSharp/Math/Linear/Matrix32.cs b/源代码/StgSharp/Math/Linear/Matrix32.cs index 96643893..5bce7851 100644 --- a/源代码/StgSharp/Math/Linear/Matrix32.cs +++ b/源代码/StgSharp/Math/Linear/Matrix32.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Numerics; using System.Runtime.CompilerServices; @@ -35,101 +37,89 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = (5 * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 5 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix32 : IMat { - [FieldOffset(5 * 4 * sizeof(float))] internal bool isTransposed; + [FieldOffset( 5 * 4 * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] internal Mat2 mat; - [FieldOffset(2 * 4 * sizeof(float))] internal Mat3 transpose; + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 2 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; - [FieldOffset(0)] internal vec3d colum0; - [FieldOffset(4 * 4)] internal vec3d colum1; + [FieldOffset( 0 )] internal Vec3 colum0; + [FieldOffset( 4 * 4 )] internal Vec3 colum1; - internal Matrix32( - Vector4 c0, - Vector4 c1 - ) + internal Matrix32( Vector4 c0, Vector4 c1 ) { mat.colum0 = c0; mat.colum1 = c1; } - public unsafe Matrix32( - float a00, float a01, - float a10, float a11, - float a20, float a21 - ) + float a00, + float a01, + float a10, + float a11, + float a20, + float a21 ) { -#if NET5_0_OR_GREATER - Unsafe.SkipInit(out colum0); - Unsafe.SkipInit(out colum1); - Unsafe.SkipInit(out transpose); -#endif - mat.colum0 = new Vector4(a00, a10, a20, 0); - mat.colum1 = new Vector4(a01, a11, a21, 0); + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out colum0 ); + Unsafe.SkipInit( out colum1 ); + Unsafe.SkipInit( out transpose ); + #endif + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 1) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 1) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } } - public vec3d VerticalVecMultiply(vec2d vec) + public Vec3 VerticalVecMultiply( Vec2 vec ) { - return (colum0 * vec.X) + (colum1 * vec.Y); + return ( colum0 * vec.X ) + ( colum1 * vec.Y ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat2* source = &this.mat) - { - fixed (Mat3* target = &this.transpose) - { - InternalIO.Transpose2to3_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose23( source, target ); } } @@ -137,99 +127,89 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator -(Matrix32 left, Matrix32 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator -( Matrix32 left, Matrix32 right ) { return new Matrix32( left.mat.colum0 - right.mat.colum0, - left.mat.colum1 - right.mat.colum1 - ); + left.mat.colum1 - right.mat.colum1 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator *(Matrix32 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 mat, float value ) { return new Matrix32( - mat.mat.colum0 * value, - mat.mat.colum1 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator *(Matrix32 left, Matrix22 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix32 left, Matrix22 right ) { left.InternalTranspose(); return new Matrix32( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator *(Matrix32 left, Matrix23 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix32 left, Matrix23 right ) { left.InternalTranspose(); return new Matrix33( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator *(Matrix32 left, Matrix24 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix32 left, Matrix24 right ) { left.InternalTranspose(); return new Matrix34( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator /(Matrix32 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator /( Matrix32 mat, float value ) { return new Matrix32( - mat.mat.colum0 / value, - mat.mat.colum1 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator +(Matrix32 left, Matrix32 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator +( Matrix32 left, Matrix32 right ) { return new Matrix32( left.mat.colum0 + right.mat.colum0, - left.mat.colum1 + right.mat.colum1 - ); + left.mat.colum1 + right.mat.colum1 ); } - } } diff --git a/源代码/StgSharp/Math/Linear/Matrix33.cs b/源代码/StgSharp/Math/Linear/Matrix33.cs index fc7a548d..bd7dc4f0 100644 --- a/源代码/StgSharp/Math/Linear/Matrix33.cs +++ b/源代码/StgSharp/Math/Linear/Matrix33.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Numerics; using System.Runtime.CompilerServices; @@ -35,23 +37,22 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = (6 * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 6 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix33 : IMat { - [FieldOffset(6 * 4 * sizeof(float))] internal bool isTransposed; + [FieldOffset( 6 * 4 * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] internal Mat3 mat; - [FieldOffset(3 * 4 * sizeof(float))] internal Mat3 transpose; - [FieldOffset(0 * 4 * sizeof(float))] public vec3d Colum0; - [FieldOffset(1 * 4 * sizeof(float))] public vec3d Colum1; - [FieldOffset(2 * 4 * sizeof(float))] public vec3d Colum2; + [FieldOffset( 0 )] internal ColumnSet3 mat; + [FieldOffset( 3 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; - internal Matrix33( - Vector4 c0, - Vector4 c1, - Vector4 c2 - ) + internal Matrix33( Vector4 c0, Vector4 c1, Vector4 c2 ) { mat.colum0 = c0; mat.colum1 = c1; @@ -59,192 +60,172 @@ namespace StgSharp.Math } public Matrix33( - float a00, float a01, float a02, - float a10, float a11, float a12, - float a20, float a21, float a22 - ) + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22 ) { - mat.colum0 = new Vector4(a00, a10, a20, 0); - mat.colum1 = new Vector4(a01, a11, a21, 0); - mat.colum2 = new Vector4(a02, a12, a22, 0); + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum1 = new Vector4( a01, a11, a21, 0 ); + mat.colum2 = new Vector4( a02, a12, a22, 0 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { + if( ( columNum > 2 ) || ( columNum < 0 ) ) { InternalIO.InternalWriteLog( $"Attempt to write unused space in {GetType().Name} {nameof(mat)}", - LogType.Error - ); + LogType.Error ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe float Det() { - fixed (Mat3* mat = &this.mat) - { - return InternalIO.det_mat3(mat); + fixed( ColumnSet3* mat = &this.mat ) { + return InternalIO.Intrinsic.det_mat_3( mat, ( ColumnSet3* )0 ); } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat3* source = &this.mat, target = &this.transpose) - { - InternalIO.Transpose3to3_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat, target = &this.transpose ) { + InternalIO.Intrinsic.transpose33( source, target ); } isTransposed = true; } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator -(Matrix33 left, Matrix33 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator -( Matrix33 left, Matrix33 right ) { return new Matrix33( left.mat.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, - left.mat.colum2 + right.mat.colum2 - ); + left.mat.colum2 + right.mat.colum2 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator *(Matrix33 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 mat, float value ) { return new Matrix33( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static vec3d operator *(Matrix33 left, vec3d right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Matrix33 left, Vec3 right ) { left.InternalTranspose(); - return new vec3d( - Vector4.Dot(left.transpose.colum0, right.vec), - Vector4.Dot(left.transpose.colum1, right.vec), - Vector4.Dot(left.transpose.colum2, right.vec) - ); + return new Vec3( + Vector4.Dot( left.transpose.colum0, right.vec ), + Vector4.Dot( left.transpose.colum1, right.vec ), + Vector4.Dot( left.transpose.colum2, right.vec ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator *(Matrix33 left, Matrix32 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix33 left, Matrix32 right ) { left.InternalTranspose(); return new Matrix32( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator *(Matrix33 left, Matrix33 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix33 left, Matrix33 right ) { left.InternalTranspose(); return new Matrix33( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator *(Matrix33 left, Matrix34 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix33 left, Matrix34 right ) { left.InternalTranspose(); return new Matrix34( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator /(Matrix33 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator /( Matrix33 mat, float value ) { return new Matrix33( - mat.mat.colum0 / value, - mat.mat.colum1 / value, - mat.mat.colum2 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator +(Matrix33 left, Matrix33 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator +( Matrix33 left, Matrix33 right ) { return new Matrix33( left.mat.colum0 + right.mat.colum0, left.mat.colum1 + right.mat.colum1, - left.mat.colum2 + right.mat.colum2 - ); + left.mat.colum2 + right.mat.colum2 ); } - } } diff --git a/源代码/StgSharp/Math/Linear/Matrix34.cs b/源代码/StgSharp/Math/Linear/Matrix34.cs index a2c35e7e..e612effa 100644 --- a/源代码/StgSharp/Math/Linear/Matrix34.cs +++ b/源代码/StgSharp/Math/Linear/Matrix34.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Drawing; using System.Numerics; @@ -36,32 +38,29 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - - [StructLayout(LayoutKind.Explicit, Size = (7 * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix34 : IMat { - [FieldOffset(7 * 4 * sizeof(float))] internal bool isTransposed; - [FieldOffset(4 * 4 * sizeof(float))] internal Mat3 transpose; + [FieldOffset( 7 * 4 * sizeof( float ) )] internal bool isTransposed; + [FieldOffset( 4 * 4 * sizeof( float ) )] internal ColumnSet3 transpose; - [FieldOffset(0)] internal Mat4 mat; + [FieldOffset( 0 )] internal ColumnSet4 mat; - [FieldOffset(0 * 4 * sizeof(float))] public vec3d Colum0; - [FieldOffset(1 * 4 * sizeof(float))] public vec3d Colum1; - [FieldOffset(2 * 4 * sizeof(float))] public vec3d Colum2; - [FieldOffset(3 * 4 * sizeof(float))] public vec3d Colum3; + [FieldOffset( 0 * 4 * sizeof( float ) )] public Vec3 Colum0; + [FieldOffset( 1 * 4 * sizeof( float ) )] public Vec3 Colum1; + [FieldOffset( 2 * 4 * sizeof( float ) )] public Vec3 Colum2; + [FieldOffset( 3 * 4 * sizeof( float ) )] public Vec3 Colum3; - internal Matrix34(Mat4 mat) + internal Matrix34( ColumnSet4 mat ) { this.mat = mat; } - internal Matrix34( - Vector4 c0, - Vector4 c1, - Vector4 c2, - Vector4 c3 - ) + internal Matrix34( Vector4 c0, Vector4 c1, Vector4 c2, Vector4 c3 ) { mat.colum0 = c0; mat.colum1 = c1; @@ -70,55 +69,53 @@ namespace StgSharp.Math } public Matrix34( - float a00, float a01, float a02, float a03, - float a10, float a11, float a12, float a13, - float a20, float a21, float a22, float a23 - ) + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23 ) { - mat.colum0 = new Vector4(a00, a10, a20, 0); - mat.colum0 = new Vector4(a01, a11, a21, 0); - mat.colum0 = new Vector4(a02, a12, a22, 0); - mat.colum0 = new Vector4(a03, a13, a23, 0); + mat.colum0 = new Vector4( a00, a10, a20, 0 ); + mat.colum0 = new Vector4( a01, a11, a21, 0 ); + mat.colum0 = new Vector4( a02, a12, a22, 0 ); + mat.colum0 = new Vector4( a03, a13, a23, 0 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 2) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 2 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } @@ -126,13 +123,10 @@ namespace StgSharp.Math internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat4* source = &this.mat) - { - fixed (Mat3* target = &this.transpose) - { - InternalIO.Transpose4to3_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet4* source = &this.mat ) { + fixed( ColumnSet3* target = &this.transpose ) { + InternalIO.Intrinsic.transpose43( source, target ); } } @@ -140,109 +134,95 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator -(Matrix34 left, Matrix34 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator -( Matrix34 left, Matrix34 right ) { return new Matrix34( left.mat.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, left.mat.colum2 - right.mat.colum2, - left.mat.colum3 - right.mat.colum3 - ); + left.mat.colum3 - right.mat.colum3 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator *(Matrix34 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 mat, float value ) { return new Matrix34( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value, - mat.mat.colum3 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix32 operator *(Matrix34 left, Matrix42 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix32 operator *( Matrix34 left, Matrix42 right ) { left.InternalTranspose(); return new Matrix32( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix33 operator *(Matrix34 left, Matrix43 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix33 operator *( Matrix34 left, Matrix43 right ) { left.InternalTranspose(); return new Matrix33( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator *(Matrix34 left, Matrix44 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator *( Matrix34 left, Matrix44 right ) { left.InternalTranspose(); return new Matrix34( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator /(Matrix34 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator /( Matrix34 mat, float value ) { return new Matrix34( - mat.mat.colum0 / value, - mat.mat.colum1 / value, - mat.mat.colum2 / value, - mat.mat.colum3 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value, mat.mat.colum3 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix34 operator +(Matrix34 left, Matrix34 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix34 operator +( Matrix34 left, Matrix34 right ) { return new Matrix34( left.mat.colum0 + right.mat.colum0, left.mat.colum1 + right.mat.colum1, left.mat.colum2 + right.mat.colum2, - left.mat.colum3 + right.mat.colum3 - ); + left.mat.colum3 + right.mat.colum3 ); } - - - } } diff --git a/源代码/StgSharp/Math/Linear/Matrix42.cs b/源代码/StgSharp/Math/Linear/Matrix42.cs index bb0c16e4..bb9e4443 100644 --- a/源代码/StgSharp/Math/Linear/Matrix42.cs +++ b/源代码/StgSharp/Math/Linear/Matrix42.cs @@ -28,91 +28,80 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - namespace StgSharp.Math { - - - [StructLayout(LayoutKind.Explicit, Size = ((16 + 8) * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( ( 16 + 8 ) * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix42 : IMat { - [FieldOffset((16 + 8) * sizeof(float))] internal bool isTransposed; + [FieldOffset( ( 16 + 8 ) * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] internal Mat2 mat; - [FieldOffset(8 * sizeof(float))] internal Mat4 transpose; + [FieldOffset( 0 )] internal ColumnSet2 mat; + [FieldOffset( 8 * sizeof( float ) )] internal ColumnSet4 transpose; - internal Matrix42(Mat2 mat) + internal Matrix42( ColumnSet2 mat ) { this.mat = mat; } - internal Matrix42( - Vector4 c0, - Vector4 c1 - ) + internal Matrix42( Vector4 c0, Vector4 c1 ) { mat.colum0 = c0; mat.colum1 = c1; } - public Matrix42( - float a00, float a01, - float a10, float a11, - float a20, float a21, - float a30, float a31 - ) + float a00, + float a01, + float a10, + float a11, + float a20, + float a21, + float a30, + float a31 ) { - mat.colum0 = new Vector4(a00, a10, a20, a30); - mat.colum1 = new Vector4(a01, a11, a21, a31); + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); } - - - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 1) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 1) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 1 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } @@ -121,21 +110,16 @@ namespace StgSharp.Math public override int GetHashCode() { return HashCode.Combine( - mat.colum0.GetHashCode(), - mat.colum1.GetHashCode() - ); + mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat2* source = &this.mat) - { - fixed (Mat4* target = &this.transpose) - { - InternalIO.Transpose2to4_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet2* source = &this.mat ) { + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose24( source, target ); } } @@ -143,111 +127,105 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix42 operator -(Matrix42 left, Matrix42 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator -( + Matrix42 left, + Matrix42 right ) { return new Matrix42( left.mat.colum0 - right.mat.colum0, - left.mat.colum0 - right.mat.colum0 - ); + left.mat.colum0 - right.mat.colum0 ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix42 operator *(Matrix42 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 mat, float value ) { return new Matrix42( - mat.mat.colum0 * value, - mat.mat.colum1 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix42 operator *(Matrix42 left, Matrix22 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix42 left, Matrix22 right ) { left.InternalTranspose(); return new Matrix42( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator *(Matrix42 left, Matrix23 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix42 left, Matrix23 right ) { left.InternalTranspose(); return new Matrix43( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix44 operator *(Matrix42 left, Matrix24 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix42 left, Matrix24 right ) { left.InternalTranspose(); return new Matrix44( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2), - Vector4.Dot(left.transpose.colum3, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix42 operator /(Matrix42 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator /( Matrix42 mat, float value ) { return new Matrix42( - mat.mat.colum0 / value, - mat.mat.colum1 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix42 operator +(Matrix42 left, Matrix42 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator +( + Matrix42 left, + Matrix42 right ) { return new Matrix42( left.mat.colum0 + right.mat.colum0, - left.mat.colum0 + right.mat.colum0 - ); + left.mat.colum0 + right.mat.colum0 ); } - } } diff --git a/源代码/StgSharp/Math/Linear/Matrix43.cs b/源代码/StgSharp/Math/Linear/Matrix43.cs index dd530b5a..4e66fd87 100644 --- a/源代码/StgSharp/Math/Linear/Matrix43.cs +++ b/源代码/StgSharp/Math/Linear/Matrix43.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.Collections.Generic; using System.Numerics; @@ -36,24 +38,23 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - [StructLayout(LayoutKind.Explicit, Size = (7 * 4 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 7 * 4 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public struct Matrix43 : IEquatable, IMat { - [FieldOffset(7 * 4 * sizeof(float))] + [FieldOffset( 7 * 4 * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] - internal Mat3 mat; + [FieldOffset( 0 )] + internal ColumnSet3 mat; - [FieldOffset(3 * 4 * sizeof(float))] - internal Mat4 transpose; + [FieldOffset( 3 * 4 * sizeof( float ) )] + internal ColumnSet4 transpose; - internal Matrix43( - Vector4 c0, - Vector4 c1, - Vector4 c2 - ) + internal Matrix43( Vector4 c0, Vector4 c1, Vector4 c2 ) { mat.colum0 = c0; mat.colum1 = c1; @@ -61,89 +62,82 @@ namespace StgSharp.Math } public Matrix43( - float a00, float a01, float a02, - float a10, float a11, float a12, - float a20, float a21, float a22, - float a30, float a31, float a32 - ) + float a00, + float a01, + float a02, + float a10, + float a11, + float a12, + float a20, + float a21, + float a22, + float a30, + float a31, + float a32 ) { - mat.colum0 = new Vector4(a00, a10, a20, a30); - mat.colum1 = new Vector4(a01, a11, a21, a31); - mat.colum2 = new Vector4(a02, a12, a22, a32); + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 2) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 2 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } } - public override bool Equals(object? obj) + public override bool Equals( object? obj ) { - return (obj is Matrix43 x) && Equals(x); + return ( obj is Matrix43 x ) && Equals( x ); } - public bool Equals(Matrix43 other) + public bool Equals( Matrix43 other ) { - return EqualityComparer.Default.Equals(mat, other.mat); + return EqualityComparer.Default.Equals( mat, + other.mat ); } public override int GetHashCode() { return HashCode.Combine( - mat.colum0.GetHashCode(), - mat.colum1.GetHashCode(), - mat.colum2.GetHashCode() - ); + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode() ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat3* source = &this.mat) - { - fixed (Mat4* target = &this.transpose) - { - InternalIO.Transpose3to4_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet3* source = &this.mat ) { + fixed( ColumnSet4* target = &this.transpose ) { + InternalIO.Intrinsic.transpose34( source, target ); } } @@ -151,126 +145,114 @@ namespace StgSharp.Math } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator -(Matrix43 left, Matrix43 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator -( Matrix43 left, Matrix43 right ) { return new Matrix43( left.mat.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, - left.mat.colum2 - right.mat.colum2 - ); + left.mat.colum2 - right.mat.colum2 ); } - public static bool operator !=(Matrix43 left, Matrix43 right) + public static bool operator !=( Matrix43 left, Matrix43 right ) { - return !(left == right); + return !( left == right ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator *(Matrix43 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix43 mat, float value ) { return new Matrix43( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix42 operator *(Matrix43 left, Matrix32 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix42 operator *( Matrix43 left, Matrix32 right ) { left.InternalTranspose(); return new Matrix42( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1) - - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator *(Matrix43 left, Matrix33 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix43 left, Matrix33 right ) { left.InternalTranspose(); return new Matrix43( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2) - - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix44 operator *(Matrix43 left, Matrix34 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix43 left, Matrix34 right ) { left.InternalTranspose(); return new Matrix44( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum3), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2), - Vector4.Dot(left.transpose.colum3, right.mat.colum3) - - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator /(Matrix43 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator /( Matrix43 mat, float value ) { return new Matrix43( - mat.mat.colum0 / value, - mat.mat.colum1 / value, - mat.mat.colum2 / value - ); + mat.mat.colum0 / value, mat.mat.colum1 / value, + mat.mat.colum2 / value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator +(Matrix43 left, Matrix43 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator +( Matrix43 left, Matrix43 right ) { return new Matrix43( left.mat.colum0 + right.mat.colum0, left.mat.colum1 + right.mat.colum1, - left.mat.colum2 + right.mat.colum2 - ); + left.mat.colum2 + right.mat.colum2 ); } - public static bool operator ==(Matrix43 left, Matrix43 right) + public static bool operator ==( Matrix43 left, Matrix43 right ) { - return left.Equals(right); + return left.Equals( right ); } } diff --git a/源代码/StgSharp/Math/Linear/Matrix44.cs b/源代码/StgSharp/Math/Linear/Matrix44.cs index 280ef931..d0f885de 100644 --- a/源代码/StgSharp/Math/Linear/Matrix44.cs +++ b/源代码/StgSharp/Math/Linear/Matrix44.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; + using System; using System.ComponentModel; using System.Drawing; @@ -35,26 +37,25 @@ using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - - namespace StgSharp.Math { - - - [StructLayout(LayoutKind.Explicit, Size = (2 * 16 * sizeof(float)) + sizeof(bool), Pack = 16)] + [StructLayout( + LayoutKind.Explicit, + Size = ( 2 * 16 * sizeof( float ) ) + sizeof( bool ), + Pack = 16 )] public unsafe struct Matrix44 : IEquatable, IMat { - [FieldOffset(2 * 64 * sizeof(float))] internal bool isTransposed; + [FieldOffset( 2 * 64 * sizeof( float ) )] internal bool isTransposed; - [FieldOffset(0)] internal Mat4 mat; - [FieldOffset(16 * sizeof(float))] internal Mat4 transpose; - [FieldOffset(0 * sizeof(float))] internal vec4d colum0; - [FieldOffset(4 * sizeof(float))] internal vec4d colum1; - [FieldOffset(8 * sizeof(float))] internal vec4d colum2; - [FieldOffset(12 * sizeof(float))] internal vec4d colum3; + [FieldOffset( 0 )] internal ColumnSet4 mat; + [FieldOffset( 16 * sizeof( float ) )] internal ColumnSet4 transpose; + [FieldOffset( 0 * sizeof( float ) )] internal Vec4 colum0; + [FieldOffset( 4 * sizeof( float ) )] internal Vec4 colum1; + [FieldOffset( 8 * sizeof( float ) )] internal Vec4 colum2; + [FieldOffset( 12 * sizeof( float ) )] internal Vec4 colum3; - internal Matrix44(Mat4 mat) + internal Matrix44( ColumnSet4 mat ) { this.mat = mat; } @@ -63,8 +64,7 @@ namespace StgSharp.Math Vector4 vec0, Vector4 vec1, Vector4 vec2, - Vector4 vec3 - ) + Vector4 vec3 ) { mat.colum0 = vec0; mat.colum1 = vec1; @@ -72,67 +72,65 @@ namespace StgSharp.Math mat.colum3 = vec3; } - public unsafe Matrix44( - float a00, float a01, float a02, float a03, - float a10, float a11, float a12, float a13, - float a20, float a21, float a22, float a23, - float a30, float a31, float a32, float a33 - ) + float a00, + float a01, + float a02, + float a03, + float a10, + float a11, + float a12, + float a13, + float a20, + float a21, + float a22, + float a23, + float a30, + float a31, + float a32, + float a33 ) { - mat.colum0 = new Vector4(a00, a10, a20, a30); - mat.colum1 = new Vector4(a01, a11, a21, a31); - mat.colum2 = new Vector4(a02, a12, a22, a32); - mat.colum3 = new Vector4(a03, a13, a23, a33); - + mat.colum0 = new Vector4( a00, a10, a20, a30 ); + mat.colum1 = new Vector4( a01, a11, a21, a31 ); + mat.colum2 = new Vector4( a02, a12, a22, a32 ); + mat.colum3 = new Vector4( a03, a13, a23, a33 ); } - public unsafe float this[int rowNum, int columNum] + public unsafe float this[ int rowNum, int columNum ] { get { -#if DEBUG - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } -#endif + #endif InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - return *(float*)pbit; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + return *( float* )pbit; } } set { -#if DEBUG - if ((rowNum > 3) || (rowNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + #if DEBUG + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } - if ((columNum > 3) || (columNum < 0)) - { - throw new ArgumentOutOfRangeException(nameof(columNum)); + if( ( columNum > 3 ) || ( columNum < 0 ) ) { + throw new ArgumentOutOfRangeException( nameof( columNum ) ); } -#endif + #endif InternalTranspose(); - fixed (float* p = &this.transpose.m00) - { - ulong pbit = ((ulong)p) - + (((ulong)sizeof(Vector4)) * ((ulong)rowNum)) - + (((ulong)sizeof(float)) * ((ulong)columNum)); - *(float*)pbit = value; + fixed( float* p = &this.transpose.m00 ) { + ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); + *( float* )pbit = value; } isTransposed = false; } - } public Matrix44 Transpose @@ -140,76 +138,49 @@ namespace StgSharp.Math get { InternalTranspose(); - return new Matrix44(this.transpose); + return new Matrix44( this.transpose ); } } - public static Matrix44 Unit - => new Matrix44( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ); - public static Matrix44 WNegativeUnit - => new Matrix44( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, -1 - ); + public static Matrix44 Unit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); - public static Matrix44 XNegativeUnit - => new Matrix44( - -1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ); - public static Matrix44 YNegativeUnit - => new Matrix44( - 1, 0, 0, 0, - 0, -1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ); + public static Matrix44 WNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1 ); - public static Matrix44 ZNegativeUnit - => new Matrix44( - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, -1, 0, - 0, 0, 0, 1 - ); + public static Matrix44 XNegativeUnit => new Matrix44( + -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); - [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix44 YNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ); + + public static Matrix44 ZNegativeUnit => new Matrix44( + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe float Det() { InternalTranspose(); - fixed (Mat4* _this = &mat, _trans = &transpose) - { - return InternalIO.det_mat4(_this, _trans); + fixed( ColumnSet4* _this = &mat, _trans = &transpose ) { + return InternalIO.Intrinsic.det_mat_4( _this, _trans ); } } - public override bool Equals(object? obj) + public override bool Equals( object? obj ) { - return (obj is Matrix44 x) && Equals(x); + return ( obj is Matrix44 x ) && Equals( x ); } - public bool Equals(Matrix44 other) + public bool Equals( Matrix44 other ) { - return mat.Equals(other.mat); + return mat.Equals( other.mat ); } public override int GetHashCode() { return HashCode.Combine( - mat.colum0.GetHashCode(), - mat.colum1.GetHashCode(), - mat.colum2.GetHashCode(), - mat.colum3.GetHashCode() - ); + mat.colum0.GetHashCode(), mat.colum1.GetHashCode(), + mat.colum2.GetHashCode(), mat.colum3.GetHashCode() ); } public override string ToString() @@ -218,134 +189,127 @@ namespace StgSharp.Math return $"{transpose.colum0}{transpose.colum1}{transpose.colum2}{transpose.colum3}"; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if (!isTransposed) - { - fixed (Mat4* source = &mat, target = &transpose) - { - InternalIO.Transpose4to4_internal(source, target); + if( !isTransposed ) { + fixed( ColumnSet4* source = &mat, target = &transpose ) { + InternalIO.Intrinsic.transpose44( source, target ); } isTransposed = true; } } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator -(Matrix44 left, Matrix44 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator -( + Matrix44 left, + Matrix44 right ) { return new Matrix44( right.mat.colum0 - left.mat.colum0, right.mat.colum1 - left.mat.colum1, right.mat.colum2 - left.mat.colum2, - right.mat.colum3 - left.mat.colum3 - ); + right.mat.colum3 - left.mat.colum3 ); } - public static bool operator !=(Matrix44 left, Matrix44 right) + public static bool operator !=( Matrix44 left, Matrix44 right ) { - return !(left == right); + return !( left == right ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator *(Matrix44 mat, float value) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator *( Matrix44 mat, float value ) { return new Matrix44( - mat.mat.colum0 * value, - mat.mat.colum1 * value, - mat.mat.colum2 * value, - mat.mat.colum3 * value - ); + mat.mat.colum0 * value, mat.mat.colum1 * value, + mat.mat.colum2 * value, mat.mat.colum3 * value ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix42 operator *(Matrix44 left, Matrix42 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix42 operator *( + Matrix44 left, + Matrix42 right ) { left.InternalTranspose(); return new Matrix42( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix43 operator *(Matrix44 left, Matrix43 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix43 operator *( Matrix44 left, Matrix43 right ) { left.InternalTranspose(); return new Matrix43( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Matrix44 operator *(Matrix44 left, Matrix44 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Matrix44 operator *( Matrix44 left, Matrix44 right ) { left.InternalTranspose(); return new Matrix44( - Vector4.Dot(left.transpose.colum0, right.mat.colum0), - Vector4.Dot(left.transpose.colum0, right.mat.colum1), - Vector4.Dot(left.transpose.colum0, right.mat.colum2), - Vector4.Dot(left.transpose.colum0, right.mat.colum3), + Vector4.Dot( left.transpose.colum0, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum0, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum1, right.mat.colum0), - Vector4.Dot(left.transpose.colum1, right.mat.colum1), - Vector4.Dot(left.transpose.colum1, right.mat.colum2), - Vector4.Dot(left.transpose.colum1, right.mat.colum3), + Vector4.Dot( left.transpose.colum1, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum1, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum2, right.mat.colum0), - Vector4.Dot(left.transpose.colum2, right.mat.colum1), - Vector4.Dot(left.transpose.colum2, right.mat.colum2), - Vector4.Dot(left.transpose.colum2, right.mat.colum3), + Vector4.Dot( left.transpose.colum2, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum2, right.mat.colum3 ), - Vector4.Dot(left.transpose.colum3, right.mat.colum0), - Vector4.Dot(left.transpose.colum3, right.mat.colum1), - Vector4.Dot(left.transpose.colum3, right.mat.colum2), - Vector4.Dot(left.transpose.colum3, right.mat.colum3) - ); + Vector4.Dot( left.transpose.colum3, right.mat.colum0 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum1 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum2 ), + Vector4.Dot( left.transpose.colum3, right.mat.colum3 ) ); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe Matrix44 operator +(Matrix44 left, Matrix44 right) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe Matrix44 operator +( + Matrix44 left, + Matrix44 right ) { return new Matrix44( right.mat.colum0 + left.mat.colum0, right.mat.colum1 + left.mat.colum1, right.mat.colum2 + left.mat.colum2, - right.mat.colum3 + left.mat.colum3 - ); + right.mat.colum3 + left.mat.colum3 ); } - public static bool operator ==(Matrix44 left, Matrix44 right) + public static bool operator ==( Matrix44 left, Matrix44 right ) { - return left.Equals(right); + return left.Equals( right ); } } - - - } diff --git a/源代码/StgSharp/Math/Linear/Vec2.cs b/源代码/StgSharp/Math/Linear/Vec2.cs new file mode 100644 index 00000000..a7c7ea12 --- /dev/null +++ b/源代码/StgSharp/Math/Linear/Vec2.cs @@ -0,0 +1,133 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec2.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + /// + /// A two dimension vector defined by two elements. Vec2Ds in StgSharp are default used as colum + /// vector. + /// + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec2 : IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 2 ]; + + [FieldOffset( 0 )] + internal Vector2 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] + public float X; + [FieldOffset( 4 )] + public float Y; + + internal Vec2( Vector2 vec ) + { + v = vec; + } + + internal Vec2( Vector4 vec ) + { + this.vec = vec; + } + + public Vec2( float x, float y ) + { + v = new Vector2( x, y ); + } + + public static Vec2 Unit => new Vec2( 1, 1 ); + + public static Vec2 Zero => new Vec2( 0, 0 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Cross( Vec2 right ) + { + return ( X * right.Y ) - ( Y * right.X ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec2 vec ) + { + return Vector2.Dot( v, vec.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator -( Vec2 left, Vec2 right ) + { + return new Vec2( left.v - right.v ); + } + + public static bool operator !=( Vec2 left, Vec2 right ) + { + return !( left == right ); + } + + public static Vec2 operator *( Vec2 vec, float value ) + { + return new Vec2( vec.v * value ); + } + public static Vec2 operator *( float value, Vec2 vec ) + { + return new Vec2( vec.v * value ); + } + + public static Vec2 operator /( Vec2 vec, float value ) + { + return new Vec2( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec2 operator +( Vec2 left, Vec2 right ) + { + return new Vec2( left.v + right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec2 left, Vec2 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static implicit operator Vec2( (float, float) tuple ) + { + return new Vec2( tuple.Item1, tuple.Item2 ); + } + + } +} diff --git a/源代码/StgSharp/Math/Linear/Vec3.cs b/源代码/StgSharp/Math/Linear/Vec3.cs new file mode 100644 index 00000000..273f4919 --- /dev/null +++ b/源代码/StgSharp/Math/Linear/Vec3.cs @@ -0,0 +1,227 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec3.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Data.Intrinsic; +using System; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Security.AccessControl; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec3 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 3 ]; + [FieldOffset( 0 )] + internal M128 reg; + + [FieldOffset( 0 )] + internal Vector3 v; + + [FieldOffset( 0 )] + internal Vector4 vec; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec3( Vector4 vector ) + { + vec = vector; + } + + internal Vec3( Vector3 vector ) + { + v = vector; + } + + public Vec3( Vec2 xy, float z ) + { + vec = xy.vec; + Z = z; + } + + public Vec3( float x, float y, float z ) + { + #if NET5_0_OR_GREATER + Unsafe.SkipInit( out vec ); + #endif + v = new Vector3( x, y, z ); + } + + public unsafe Vec2 XY + { + get => new Vec2( this.vec ); + set + { + fixed( Vector3* vptr = &v ) { + *( Vector2* )vptr = value.v; + } + } + } + + public Vec3 XYZ + { + get { return new Vec3( v ); } + } + + public static Vec3 Zero + { + get => new Vec3( 0, 0, 0 ); + } + + public static Vec3 One => new Vec3( 1, 1, 1 ); + + public static Vec3 UnitX => new Vec3( 1, 0, 0 ); + + public static Vec3 UnitY => new Vec3( 0, 1, 0 ); + + public static Vec3 UnitZ => new Vec3( 0, 0, 1 ); + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 Cross( Vec3 left, Vec3 right ) + { + return Linear.Cross( left, right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float Dot( Vec3 right ) + { + return Vector3.Dot( v, right.v ); + } + + public bool Equals( Vec3 other ) + { + return this.vec == other.vec; + } + + public override bool Equals( object obj ) + { + if( obj is Vec3 ) { + return this == ( Vec3 )obj; + } else { + return false; + } + } + + public override unsafe int GetHashCode() + { + fixed( float* add = &X ) { + return HashCode.Combine( X, Y, Z, ( ulong )add ); + } + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public float GetMaxValue() + { + float ret = X; + ret = ( ret > Y ) ? ret : Y; + ret = ( ret > Z ) ? ret : Z; + return ret; + } + + public static bool IsParallel( Vec3 left, Vec3 right ) + { + return Cross( left, right ) == Zero; + } + + public override string ToString() + { + return $"[{X},{Y},{Z}]"; + } + + public string ToString( string sample ) + { + return $"[{X.ToString(sample)},{Y.ToString(sample)},{Z.ToString(sample)}]"; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 vec ) + { + return new Vec3( -vec.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator -( Vec3 left, Vec3 right ) + { + return new Vec3( left.v - right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator !=( Vec3 left, Vec3 right ) + { + return left.v != right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator *( Vec3 vec, float value ) + { + return new Vec3( vec.v * value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float operator *( Vec3 left, Vec3 right ) + { + return Vector3.Dot( left.v, right.v ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator /( Vec3 vec, float value ) + { + return new Vec3( vec.v / value ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec3 operator +( Vec3 left, Vec3 right ) + { + return new Vec3( left.vec + right.vec ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static bool operator ==( Vec3 left, Vec3 right ) + { + return left.v == right.v; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe implicit operator Vec3( + (float, float, float) tuple ) + { + Vec3 v = *( Vec3* )&tuple; + v.vec.W = 0.0f; + return v; + } + + } +} diff --git a/源代码/StgSharp/Math/Linear/Vec4.cs b/源代码/StgSharp/Math/Linear/Vec4.cs new file mode 100644 index 00000000..04c63c18 --- /dev/null +++ b/源代码/StgSharp/Math/Linear/Vec4.cs @@ -0,0 +1,175 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec4.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Data.Intrinsic; +using StgSharp.Math; + +using System; +using System.Data.Common; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +namespace StgSharp.Math +{ + [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] + public struct Vec4 : IEquatable, IVector + { + + [FieldOffset( 0 )] internal unsafe fixed float num[ 4 ]; + + [FieldOffset( 0 )] internal M128 reg; + + [FieldOffset( 0 )] internal Vector4 vec; + [FieldOffset( 12 )] public float W; + + [FieldOffset( 0 )] public float X; + [FieldOffset( 4 )] public float Y; + [FieldOffset( 8 )] public float Z; + + internal Vec4( Vector4 v ) + { + vec = v; + } + + public Vec4( Vec3 v, float w ) + { + vec = v.vec; + W = w; + } + + public Vec4( float x, float y, float z, float w ) + { + vec = new Vector4( x, y, z, w ); + } + + public unsafe Vec2 XY + { + get => new Vec2( vec ); + set + { + X = value.X; + Y = value.Y; + } + } + + public unsafe Vec3 XYZ + { + get => new Vec3( vec ); + set + { + float w = W; + vec = value.vec; + W = w; + } + } + + public static Vec4 One + { + get => new Vec4( Vector4.One ); + } + + public static Vec4 Zero + { + get => new Vec4( Vector4.Zero ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Add( Vec4 left, Vec4 right ) + { + return left + right; + } + + public override bool Equals( object obj ) + { + return ( obj is Vec4 v ) ? ( v == this ) : false; + } + + public override int GetHashCode() + { + return vec.GetHashCode(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 Subtract( Vec4 left, Vec4 right ) + { + return left - right; + } + + public override string ToString() + { + return vec.ToString(); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator -( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec - right.vec ); + } + + public static bool operator !=( Vec4 left, Vec4 right ) + { + return !( left == right ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator *( Matrix44 mat, Vec4 vec ) + { + mat.InternalTranspose(); + return new Vec4( + Vector4.Dot( mat.transpose.colum0, vec.vec ), + Vector4.Dot( mat.transpose.colum1, vec.vec ), + Vector4.Dot( mat.transpose.colum2, vec.vec ), + Vector4.Dot( mat.transpose.colum3, vec.vec ) ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static Vec4 operator +( Vec4 left, Vec4 right ) + { + return new Vec4( left.vec + right.vec ); + } + + public static bool operator ==( Vec4 left, Vec4 right ) + { + return left.vec == right.vec; + } + + public static implicit operator M128( Vec4 vec ) + { + return vec.reg; + } + + bool IEquatable.Equals( Vec4 other ) + { + return vec == other.vec; + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharp/Math/Linear/Vector.Cross.cs b/源代码/StgSharp/Math/Linear/Vector.Cross.cs index 6ddd9db7..1f1866e0 100644 --- a/源代码/StgSharp/Math/Linear/Vector.Cross.cs +++ b/源代码/StgSharp/Math/Linear/Vector.Cross.cs @@ -33,18 +33,17 @@ namespace StgSharp.Math public static unsafe partial class Linear { - public static float Cross(vec2d vec1, vec2d vec2) + public static float Cross( Vec2 vec1, Vec2 vec2 ) { - return (vec1.X * vec2.Y) - (vec1.Y * vec2.X); + return ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ); } - public static vec3d Cross(vec3d vec1, vec3d vec2) + public static Vec3 Cross( Vec3 vec1, Vec3 vec2 ) { - return new vec3d( - (vec1.Y * vec2.Z) - (vec1.Z * vec2.Y), - (vec1.X * vec2.Z) - (vec1.Z * vec2.X), - (vec1.X * vec2.Y) - (vec1.Y * vec2.X) - ); + return new Vec3( + ( vec1.Y * vec2.Z ) - ( vec1.Z * vec2.Y ), + ( vec1.X * vec2.Z ) - ( vec1.Z * vec2.X ), + ( vec1.X * vec2.Y ) - ( vec1.Y * vec2.X ) ); } } diff --git a/源代码/StgSharp/Math/Linear/Vector.GetAngle.cs b/源代码/StgSharp/Math/Linear/Vector.GetAngle.cs index 7530102c..81144fe6 100644 --- a/源代码/StgSharp/Math/Linear/Vector.GetAngle.cs +++ b/源代码/StgSharp/Math/Linear/Vector.GetAngle.cs @@ -33,20 +33,18 @@ namespace StgSharp.Math public static unsafe partial class Linear { - public static float GetAngle(vec2d vec1, vec2d vec2) - { - return Scaler.ACos(1 - //vec1.multiple(vec2) - / (vec1.GetLength() * vec2.GetLength()) - ); - } - - public static float GetAngle(vec3d vec1, vec3d vec2) + public static float GetAngle( Vec2 vec1, Vec2 vec2 ) { return Scaler.ACos( - (vec1 * vec2) - / (vec1.GetLength() * vec2.GetLength()) - ); + 1 + //vec1.multiple(vec2) + / ( vec1.GetLength() * vec2.GetLength() ) ); + } + + public static float GetAngle( Vec3 vec1, Vec3 vec2 ) + { + return Scaler.ACos( + ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); } } diff --git a/源代码/StgSharp/Math/Linear/Vector.GetLength.cs b/源代码/StgSharp/Math/Linear/Vector.GetLength.cs index 6c8fa9d2..4a6ab6a6 100644 --- a/源代码/StgSharp/Math/Linear/Vector.GetLength.cs +++ b/源代码/StgSharp/Math/Linear/Vector.GetLength.cs @@ -33,14 +33,14 @@ namespace StgSharp.Math public static unsafe partial class Linear { - public static float GetLength(this vec3d vec) + public static float GetLength( this Vec3 vec ) { - return Scaler.Sqrt(vec.Dot(vec)); + return Scaler.Sqrt( vec.Dot( vec ) ); } - public static float GetLength(this vec2d vec) + public static float GetLength( this Vec2 vec ) { - return Scaler.Sqrt(vec.Dot(vec)); + return Scaler.Sqrt( vec.Dot( vec ) ); } } diff --git a/源代码/StgSharp/Math/Linear/Vector.Normalize.cs b/源代码/StgSharp/Math/Linear/Vector.Normalize.cs index 0b5c7599..7ab1444d 100644 --- a/源代码/StgSharp/Math/Linear/Vector.Normalize.cs +++ b/源代码/StgSharp/Math/Linear/Vector.Normalize.cs @@ -44,23 +44,25 @@ namespace StgSharp.Math public static partial class Linear { - public static vec4d Normalize(vec4d vec) + public static Vec4 Normalize( Vec4 vec ) { - return new vec4d { vec = Vector4.Normalize(vec.vec) }; + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; } - public static vec3d Normalize(vec3d vec) + + public static Vec3 Normalize( Vec3 vec ) { - return new vec3d { vec = Vector4.Normalize(vec.vec) }; + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; } - public static unsafe void Normalize(ref vec4d source, ref vec4d target) + + public static unsafe void Normalize( ref Vec4 source, ref Vec4 target ) { Vector4 s = source.vec; Vector4 t = target.vec; - s = Vector4.Normalize(s); + s = Vector4.Normalize( s ); - float dotProduct = Vector4.Dot(s, t); - Vector4 projection = Vector4.Multiply(s, t); + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); t -= projection; @@ -68,15 +70,16 @@ namespace StgSharp.Math target.vec = t; } - public static unsafe void Normalize(ref vec3d source, ref vec3d target) + public static unsafe void Normalize( ref Vec3 source, ref Vec3 target ) { Vector3 s = source.v; Vector3 t = target.v; - s = Vector3.Normalize(s); - Vector3 projection = (Vector3.Dot(t, s) / Vector3.Dot(s, s)) * s; + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; t -= projection; - t = Vector3.Normalize(t); + t = Vector3.Normalize( t ); source.v = s; target.v = t; diff --git a/源代码/StgSharp/Math/Linear/Vector.Orthogonalize.cs b/源代码/StgSharp/Math/Linear/Vector.Orthogonalize.cs index a6c7cce7..7f573028 100644 --- a/源代码/StgSharp/Math/Linear/Vector.Orthogonalize.cs +++ b/源代码/StgSharp/Math/Linear/Vector.Orthogonalize.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Data; +using StgSharp.Data.Intrinsic; using StgSharp.Math; using System; @@ -41,16 +41,18 @@ using System.Threading.Tasks; namespace StgSharp { - internal static partial class InternalIO { - [DllImport(SSC_libName, EntryPoint = "normalize", - CallingConvention = CallingConvention.Cdecl)] - internal static extern unsafe void Normalize(M128* source, M128* target); + [DllImport( + SSC_libName, + EntryPoint = "normalize", + CallingConvention = CallingConvention.Cdecl )] + internal static extern unsafe void Normalize( + M128* source, + M128* target ); } - } namespace StgSharp.Math @@ -58,23 +60,27 @@ namespace StgSharp.Math public static partial class Linear { - public static vec4d Orthogonalize(vec4d vec) + public static Vec4 Orthogonalize( Vec4 vec ) { - return new vec4d { vec = Vector4.Normalize(vec.vec) }; + return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; } - public static vec3d Orthogonalize(vec3d vec) + + public static Vec3 Orthogonalize( Vec3 vec ) { - return new vec3d { vec = Vector4.Normalize(vec.vec) }; + return new Vec3 { vec = Vector4.Normalize( vec.vec ) }; } - public static unsafe void Orthogonalize(ref vec4d source, ref vec4d target) + + public static unsafe void Orthogonalize( + ref Vec4 source, + ref Vec4 target ) { Vector4 s = source.vec; Vector4 t = target.vec; - s = Vector4.Normalize(s); + s = Vector4.Normalize( s ); - float dotProduct = Vector4.Dot(s, t); - Vector4 projection = Vector4.Multiply(s, t); + float dotProduct = Vector4.Dot( s, t ); + Vector4 projection = Vector4.Multiply( s, t ); t -= projection; @@ -83,20 +89,23 @@ namespace StgSharp.Math } /// - /// Orthogonalize two s, let their length be 1 - /// and perpendicular to each other. + /// Orthogonalize two s, let their length be 1 and perpendicular to each + /// other. /// /// /// - public static unsafe void Orthogonalize(ref vec3d source, ref vec3d target) + public static unsafe void Orthogonalize( + ref Vec3 source, + ref Vec3 target ) { Vector3 s = source.v; Vector3 t = target.v; - s = Vector3.Normalize(s); - Vector3 projection = (Vector3.Dot(t, s) / Vector3.Dot(s, s)) * s; + s = Vector3.Normalize( s ); + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, + s ) ) * s; t -= projection; - t = Vector3.Normalize(t); + t = Vector3.Normalize( t ); source.v = s; target.v = t; diff --git a/源代码/StgSharp/Math/Scalar/ACos.cs b/源代码/StgSharp/Math/Scalar/ACos.cs index dcbd5983..90e8744d 100644 --- a/源代码/StgSharp/Math/Scalar/ACos.cs +++ b/源代码/StgSharp/Math/Scalar/ACos.cs @@ -36,10 +36,10 @@ namespace StgSharp.Math public static unsafe partial class Scaler { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe float ACos(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ACos( float x ) { - return MathF.Acos(x); + return MathF.Acos( x ); /* int sign = 1; diff --git a/源代码/StgSharp/Math/Scalar/ASin.cs b/源代码/StgSharp/Math/Scalar/ASin.cs index 535ee61f..8f23541c 100644 --- a/源代码/StgSharp/Math/Scalar/ASin.cs +++ b/源代码/StgSharp/Math/Scalar/ASin.cs @@ -30,7 +30,6 @@ //----------------------------------------------------------------------- using System; - namespace StgSharp.Math { public static unsafe partial class Scaler @@ -41,16 +40,15 @@ namespace StgSharp.Math hpiby2_head = 7.8539812565e-01f, /* 0x3f490fda */ piby2 = 1.5707963705e+00f; /* 0x3fc90fdb */ - /// /// Reurns the value of ArcSin(x) /// - /// The sine value of the angle + /// The sine value of the angle /// /// - public static float ASin(float x) + public static float ASin( float x ) { - return MathF.Asin(x); + return MathF.Asin( x ); /* int sign = 1; float y; diff --git a/源代码/StgSharp/Math/Scalar/ATan.cs b/源代码/StgSharp/Math/Scalar/ATan.cs index 0939826e..e9068cd2 100644 --- a/源代码/StgSharp/Math/Scalar/ATan.cs +++ b/源代码/StgSharp/Math/Scalar/ATan.cs @@ -36,10 +36,10 @@ namespace StgSharp.Math public static unsafe partial class Scaler { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe float ATan(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float ATan( float x ) { - return MathF.Atan(x); + return MathF.Atan( x ); /* float sign = 1, angle = 0; if (x < 0) diff --git a/源代码/StgSharp/Math/Scalar/BasicOps.cs b/源代码/StgSharp/Math/Scalar/BasicOps.cs index ad0c66ac..e211a3d3 100644 --- a/源代码/StgSharp/Math/Scalar/BasicOps.cs +++ b/源代码/StgSharp/Math/Scalar/BasicOps.cs @@ -37,31 +37,30 @@ namespace StgSharp.Math public static unsafe partial class Scaler { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe float Abs(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Abs( float x ) { - uint* a = (uint*)&x; + uint* a = ( uint* )&x; *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; - return *(float*)a; + return *( float* )a; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe int Abs(int x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int Abs( int x ) { - uint* a = (uint*)&x; + uint* a = ( uint* )&x; *a &= 0b_0111_1111_1111_1111_1111_1111_1111_1111; - return *(int*)a; + return *( int* )a; } - internal static string GetListSeparator(IFormatProvider formatProvider) + internal static string GetListSeparator( + IFormatProvider formatProvider ) { - if (formatProvider is CultureInfo cultureInfo) - { + if( formatProvider is CultureInfo cultureInfo ) { return cultureInfo.TextInfo.ListSeparator; } - if (formatProvider?.GetFormat(typeof(TextInfo)) is TextInfo textInfo) - { + if( formatProvider?.GetFormat( typeof( TextInfo ) ) is TextInfo textInfo ) { return textInfo.ListSeparator; } diff --git a/源代码/StgSharp/Math/Scalar/Compare.cs b/源代码/StgSharp/Math/Scalar/Compare.cs index 09c580fe..8f7b2e21 100644 --- a/源代码/StgSharp/Math/Scalar/Compare.cs +++ b/源代码/StgSharp/Math/Scalar/Compare.cs @@ -39,32 +39,27 @@ namespace StgSharp.Math public static partial class Scaler { - public static float MaxOf(params float[] stream) + public static float MaxOf( params float[] stream ) { - float ret = stream[0]; - foreach (float num in stream) - { - if (ret < num) - { - ret = num; - } - } - return ret; - } - public static float MinOf(params float[] stream) - { - float ret = stream[0]; - foreach (float num in stream) - { - if (ret > num) - { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret < num ) { ret = num; } } return ret; } - + public static float MinOf( params float[] stream ) + { + float ret = stream[ 0 ]; + foreach( float num in stream ) { + if( ret > num ) { + ret = num; + } + } + return ret; + } } } diff --git a/源代码/StgSharp/Math/Scalar/Cos.cs b/源代码/StgSharp/Math/Scalar/Cos.cs index 8cb3224e..cb8fa828 100644 --- a/源代码/StgSharp/Math/Scalar/Cos.cs +++ b/源代码/StgSharp/Math/Scalar/Cos.cs @@ -36,8 +36,8 @@ namespace StgSharp.Math public static partial class Scaler { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Cos(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Cos( float x ) { /* float refer = x / 360.0f; @@ -53,7 +53,7 @@ namespace StgSharp.Math return ((-sinData[a]) * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))) + (cosData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))); */ - return MathF.Cos(x); + return MathF.Cos( x ); } } diff --git a/源代码/StgSharp/Math/Scalar/Ctor.cs b/源代码/StgSharp/Math/Scalar/Ctor.cs index d9c239f1..b976dcdd 100644 --- a/源代码/StgSharp/Math/Scalar/Ctor.cs +++ b/源代码/StgSharp/Math/Scalar/Ctor.cs @@ -33,24 +33,30 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { - public unsafe delegate float ScalarCalcHandler(float* x); + public unsafe delegate float ScalarCalcHandler( float* x ); public static unsafe partial class Scaler { - const uint MEM_COMMIT = 0x1000; - const uint MEM_RELEASE = 0x8000; - const uint MEM_RESERVE = 0x2000; - const uint PAGE_EXECUTE_READWRITE = 0x40; + private const uint MEM_COMMIT = 0x1000; + private const uint MEM_RELEASE = 0x8000; + private const uint MEM_RESERVE = 0x2000; + private const uint PAGE_EXECUTE_READWRITE = 0x40; - static Scaler() - { - } + static Scaler() { } - [DllImport("Kernel32.dll", EntryPoint = "VirtualAlloc")] - private static extern IntPtr VirtualAlloc(IntPtr address, int size, uint allocType, uint protect); - [DllImport("Kernel32.dll", EntryPoint = "VirtualFree")] - private static extern bool VirtualFree(IntPtr address, int size, uint freeType); + [DllImport( "Kernel32.dll", EntryPoint = "VirtualAlloc" )] + private static extern IntPtr VirtualAlloc( + IntPtr address, + int size, + uint allocType, + uint protect ); + + [DllImport( "Kernel32.dll", EntryPoint = "VirtualFree" )] + private static extern bool VirtualFree( + IntPtr address, + int size, + uint freeType ); } } diff --git a/源代码/StgSharp/Math/Scalar/Exp.cs b/源代码/StgSharp/Math/Scalar/Exp.cs index 7934cc44..edddf54c 100644 --- a/源代码/StgSharp/Math/Scalar/Exp.cs +++ b/源代码/StgSharp/Math/Scalar/Exp.cs @@ -40,65 +40,46 @@ namespace StgSharp.Math /// /// /// - public static unsafe float Exp(float x) + public static unsafe float Exp( float x ) { - if (x == 1) - { + if( x == 1 ) { return E; } - if (x == 0) - { + if( x == 0 ) { return 1; } bool sign = false; - if (x < 0) - { + if( x < 0 ) { sign = true; x = -x; } float z = x, t; - if (x < 0.5f) - { - t = 1.0f + (x * ( - 1.0f + (x * ( - 0.5f + (x * ( - 0.1666666667f + (x * ( - 0.0416666666667f + (x * - 8.333333333e-3f))))))))); - } - else - { + if( x < 0.5f ) { + t = 1.0f + ( x * ( 1.0f + ( x * ( 0.5f + ( x * ( 0.1666666667f + ( x * ( 0.0416666666667f + ( x * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { /* * define z = n * 2 ^ m * n is between 0 and 0.5 */ - uint zBit = *(uint*)&z; + uint zBit = *( uint* )&z; uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; uint uintm = zBitAbs >> 23; - int m = (*(int*)&uintm) - 126; + int m = ( *( int* )&uintm ) - 126; - uint nBit = (zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111) - + 0b_0011_1111_0000_0000_0000_0000_0000_0000; - float n = (*(float*)&nBit) - 1; + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; - t = 2.718281828f + (n * ( - 2.718281828f + (n * ( - 1.359140914f + (n * ( - 0.4530469714f + (n * ( - 0.1132617429f + (n * - 0.02265234857f))))))))); + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); - for (int i = 0; i < m; i++) - { + for( int i = 0; i < m; i++ ) { t = t * t; } } - if (sign) - { + if( sign ) { t = 1 / t; } return t; diff --git a/源代码/StgSharp/Math/Scalar/Function.cs b/源代码/StgSharp/Math/Scalar/Function.cs index af8aa838..df600556 100644 --- a/源代码/StgSharp/Math/Scalar/Function.cs +++ b/源代码/StgSharp/Math/Scalar/Function.cs @@ -30,9 +30,5 @@ //----------------------------------------------------------------------- namespace StgSharp.Math { - public class Function - { - - - } + public class Function { } } diff --git a/源代码/StgSharp/Math/Scalar/Log.cs b/源代码/StgSharp/Math/Scalar/Log.cs index 2c288265..4af122a2 100644 --- a/源代码/StgSharp/Math/Scalar/Log.cs +++ b/源代码/StgSharp/Math/Scalar/Log.cs @@ -35,62 +35,47 @@ namespace StgSharp.Math public static partial class Scaler { - private static readonly float[] logArray = - { - 0f, 0.00995033085316809f, 0.0198026272961797f, 0.0295588022415444f, 0.0392207131532813f, 0.048790164169432f, 0.0582689081239758f, 0.0676586484738149f, 0.0769610411361284f, 0.0861776962410524f, - 0.0953101798043249f, 0.104360015324243f, 0.113328685307003f, 0.122217632724249f, 0.131028262406404f, 0.139761942375159f, 0.148420005118273f, 0.157003748809665f, 0.165514438477573f, 0.173953307123438f, - 0.182321556793955f, 0.19062035960865f, 0.198850858745165f, 0.207014169384326f, 0.215111379616945f, 0.22314355131421f, 0.231111720963387f, 0.2390169004705f, 0.246860077931526f, 0.254642218373581f, - 0.262364264467491f, 0.27002713721306f, 0.27763173659828f, 0.285178942233662f, 0.29266961396282f, 0.300104592450338f, 0.307484699747961f, 0.314810739840034f, 0.322083499169113f, 0.3293037471426f, - 0.336472236621213f, 0.343589704390077f, 0.350656871613169f, 0.357674444271816f, 0.364643113587909f, 0.371563556432483f, 0.378436435720245f, 0.385262400790645f, 0.392042087776024f, 0.398776119957368f, - 0.405465108108164f, 0.412109650826833f, 0.418710334858185f, 0.425267735404344f, 0.431782416425538f, 0.438254930931155f, 0.444685821261446f, 0.451075619360217f, 0.457424847038875f, 0.46373401623214f, - 0.470003629245736f, 0.476234178996372f, 0.482426149244293f, 0.488580014818671f, 0.494696241836107f, 0.500775287912489f, 0.506817602368452f, 0.512823626428664f, 0.518793793415168f, 0.524728528934982f, - 0.53062825106217f, 0.536493370514568f, 0.542324290825362f, 0.548121408509688f, 0.553885113226438f, 0.559615787935423f, 0.56531380905006f, 0.570979546585738f, 0.576613364303994f, 0.582215619852664f, - 0.587786664902119f, 0.593326845277734f, 0.598836501088704f, 0.60431596685333f, 0.609765571620894f, 0.615185639090233f, 0.62057648772511f, 0.625938430866495f, 0.631271776841858f, 0.636576829071551f, - 0.641853886172395f, 0.647103242058538f, 0.65232518603969f, 0.657520002916794f, 0.662687973075237f, 0.667829372575655f, 0.672944473242426f, 0.678033542749897f, 0.683096844706444f, 0.688134638736401f, + private static readonly float[] logArray = { + 0f, 0.00995033085316809f, 0.0198026272961797f, 0.0295588022415444f, 0.0392207131532813f, 0.048790164169432f, 0.0582689081239758f, 0.0676586484738149f, 0.0769610411361284f, 0.0861776962410524f, 0.0953101798043249f, 0.104360015324243f, 0.113328685307003f, 0.122217632724249f, 0.131028262406404f, 0.139761942375159f, 0.148420005118273f, 0.157003748809665f, 0.165514438477573f, 0.173953307123438f, 0.182321556793955f, 0.19062035960865f, 0.198850858745165f, 0.207014169384326f, 0.215111379616945f, 0.22314355131421f, 0.231111720963387f, 0.2390169004705f, 0.246860077931526f, 0.254642218373581f, 0.262364264467491f, 0.27002713721306f, 0.27763173659828f, 0.285178942233662f, 0.29266961396282f, 0.300104592450338f, 0.307484699747961f, 0.314810739840034f, 0.322083499169113f, 0.3293037471426f, 0.336472236621213f, 0.343589704390077f, 0.350656871613169f, 0.357674444271816f, 0.364643113587909f, 0.371563556432483f, 0.378436435720245f, 0.385262400790645f, 0.392042087776024f, 0.398776119957368f, 0.405465108108164f, 0.412109650826833f, 0.418710334858185f, 0.425267735404344f, 0.431782416425538f, 0.438254930931155f, 0.444685821261446f, 0.451075619360217f, 0.457424847038875f, 0.46373401623214f, 0.470003629245736f, 0.476234178996372f, 0.482426149244293f, 0.488580014818671f, 0.494696241836107f, 0.500775287912489f, 0.506817602368452f, 0.512823626428664f, 0.518793793415168f, 0.524728528934982f, 0.53062825106217f, 0.536493370514568f, 0.542324290825362f, 0.548121408509688f, 0.553885113226438f, 0.559615787935423f, 0.56531380905006f, 0.570979546585738f, 0.576613364303994f, 0.582215619852664f, 0.587786664902119f, 0.593326845277734f, 0.598836501088704f, 0.60431596685333f, 0.609765571620894f, 0.615185639090233f, 0.62057648772511f, 0.625938430866495f, 0.631271776841858f, 0.636576829071551f, 0.641853886172395f, 0.647103242058538f, 0.65232518603969f, 0.657520002916794f, 0.662687973075237f, 0.667829372575655f, 0.672944473242426f, 0.678033542749897f, 0.683096844706444f, 0.688134638736401f, }; /// - /// + /// /// /// /// /// Returns the value of ln(x). /// - public static unsafe float Log(float x) + public static unsafe float Log( float x ) { - if (x < 0) - { + if( x < 0 ) { throw new ArgumentOutOfRangeException(); } - uint input = *(uint*)&x; + uint input = *( uint* )&x; - int f = (int)input; + int f = ( int )input; f >>= 23; f -= 127; input <<= 9; input >>= 9; input += 0b_0011_1111_1000_0000_0000_0000_0000_0000; - float result = *(float*)&input; - uint order = ((uint)(result * 100)) - 100; + float result = *( float* )&input; + uint order = ( ( uint )( result * 100 ) ) - 100; - float cache = (result / (1f + (0.01f * order))) - 1; - result = (cache * (-0.25f)) + 0.3333333333333f; - result = (result * cache) - 0.5f; - result = (result * cache) + 1.0f; + float cache = ( result / ( 1f + ( 0.01f * order ) ) ) - 1; + result = ( cache * ( -0.25f ) ) + 0.3333333333333f; + result = ( result * cache ) - 0.5f; + result = ( result * cache ) + 1.0f; result *= cache; return - (f * 0.6931471806f) + - result + - logArray[order]; + ( f * 0.6931471806f ) + result + logArray[ order ]; } - - public static float Log(float x, float y) + public static float Log( float x, float y ) { - return Log(x) / Log(y); + return Log( x ) / Log( y ); } - } } diff --git a/源代码/StgSharp/Math/Scalar/Pow.cs b/源代码/StgSharp/Math/Scalar/Pow.cs index 496f378e..737f9d70 100644 --- a/源代码/StgSharp/Math/Scalar/Pow.cs +++ b/源代码/StgSharp/Math/Scalar/Pow.cs @@ -38,8 +38,8 @@ namespace StgSharp.Math /// /// /// - /// Returns the value of x^y - public static unsafe float Pow(float x, float y) + /// Returns the value of x^y + public static unsafe float Pow( float x, float y ) { /* * x^y = E ^ ( log( x ) * y ) @@ -54,65 +54,43 @@ namespace StgSharp.Math * */ float z, t; - if ((x == 1) || (y == 0)) - { + if( ( x == 1 ) || ( y == 0 ) ) { return 1; } - if ((x == 1) && (y == 0)) - { + if( ( x == 1 ) && ( y == 0 ) ) { return float.PositiveInfinity; } - if ((x == 0) && (y != 0)) - { + if( ( x == 0 ) && ( y != 0 ) ) { return 0; } - z = Scaler.Log(x) * y; + z = Scaler.Log( x ) * y; bool sign = false; - if (z < 0) - { + if( z < 0 ) { sign = true; z = -z; } - if (z < 0.5f) - { - t = 1.0f + (z * ( - 1.0f + (z * ( - 0.5f + (z * ( - 0.1666666667f + (z * ( - 0.0416666666667f + (z * - 8.333333333e-3f))))))))); - } - else - { - uint zBit = *(uint*)&z; + if( z < 0.5f ) { + t = 1.0f + ( z * ( 1.0f + ( z * ( 0.5f + ( z * ( 0.1666666667f + ( z * ( 0.0416666666667f + ( z * 8.333333333e-3f ) ) ) ) ) ) ) ) ); + } else { + uint zBit = *( uint* )&z; uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; uint uintm = zBitAbs >> 23; - int m = (*(int*)&uintm) - 126; + int m = ( *( int* )&uintm ) - 126; - uint nBit = (zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111) - + 0b_0011_1111_0000_0000_0000_0000_0000_0000; - float n = (*(float*)&nBit) - 1; + uint nBit = ( zBitAbs & 0b_0000_0000_0111_1111_1111_1111_1111_1111 ) + 0b_0011_1111_0000_0000_0000_0000_0000_0000; + float n = ( *( float* )&nBit ) - 1; - t = 2.718281828f + (n * ( - 2.718281828f + (n * ( - 1.359140914f + (n * ( - 0.4530469714f + (n * ( - 0.1132617429f + (n * - 0.02265234857f))))))))); + t = 2.718281828f + ( n * ( 2.718281828f + ( n * ( 1.359140914f + ( n * ( 0.4530469714f + ( n * ( 0.1132617429f + ( n * 0.02265234857f ) ) ) ) ) ) ) ) ); - for (int i = 0; i < m; i++) - { + for( int i = 0; i < m; i++ ) { t = t * t; } - - } - if (sign) - { + if( sign ) { t = 1 / t; } diff --git a/源代码/StgSharp/Math/Scalar/Random.cs b/源代码/StgSharp/Math/Scalar/Random.cs index b0d14251..ffc90a97 100644 --- a/源代码/StgSharp/Math/Scalar/Random.cs +++ b/源代码/StgSharp/Math/Scalar/Random.cs @@ -29,7 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Math.HighPrecession; +using StgSharp.Math; using System; using System.Collections.Generic; @@ -49,10 +49,10 @@ namespace StgSharp.Math internal static float currentSeed #if DEBUG = 0.5f; -#else - = Abs(System.DateTime.UtcNow.GetHashCode()); -#endif + #else + = Abs(System.DateTime.UtcNow.GetHashCode()); + #endif /// /// returns a random float number between 0 and 1. @@ -62,57 +62,51 @@ namespace StgSharp.Math { float seed = currentSeed; - float sample = Scaler.Pow(Scaler.SeedSqrt(seed), 2); - float sample2 = (sample - seed) / seed; - sample2 = Scaler.Abs(sample2); + float sample = Scaler.Pow( Scaler.SeedSqrt( seed ), 2 ); + float sample2 = ( sample - seed ) / seed; + sample2 = Scaler.Abs( sample2 ); - if (sample == 1) - { + if( sample == 1 ) { sample = sample2; } currentSeed = sample; sample2 *= 1000000; - float result = sample2 - ((int)sample2); - if (result == 0) - { + float result = sample2 - ( ( int )sample2 ); + if( result == 0 ) { currentSeed = sample2 + 0.1f; result = Scaler.LowProceisionRandom(); } return result; - } /// - /// + /// /// /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static T Random() where T : struct, IConvertible -#if NET8_0_OR_GREATER + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static T Random() where T: struct, IConvertible + #if NET8_0_OR_GREATER ,INumber -#endif + #endif + { - if (randomSeed == null) - { + if( randomSeed == null ) { randomSeed = new byte[64]; string originSeed = - ($"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : - Assembly.GetEntryAssembly())}") + - ($"{DateTime.UtcNow.ToString("o")}"); - using (SHA256 sha = SHA256.Create()) - { - randomSeed = sha.ComputeHash(Encoding.UTF8.GetBytes(originSeed)); + ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : + Assembly.GetEntryAssembly())}" ) + ( $"{DateTime.UtcNow.ToString("o")}" ); + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( + Encoding.UTF8.GetBytes( originSeed ) ); } } - using (SHA256 sha = SHA256.Create()) - { - randomSeed = sha.ComputeHash(randomSeed); + using( SHA256 sha = SHA256.Create() ) { + randomSeed = sha.ComputeHash( randomSeed ); } - fixed (byte* bptr = randomSeed) - { - return *(T*)bptr; + fixed( byte* bptr = randomSeed ) { + return *( T* )bptr; } } @@ -124,11 +118,11 @@ namespace StgSharp.Math { float seedValue1 = LowProceisionRandom(); float seedValue2 = LowProceisionRandom(); - uint seedValueBits = *(uint*)&seedValue1; + uint seedValueBits = *( uint* )&seedValue1; float seedValue = seedValueBits * seedValue2; - return *(int*)&seedValue; + return *( int* )&seedValue; } } diff --git a/源代码/StgSharp/Math/Scalar/SignOf.cs b/源代码/StgSharp/Math/Scalar/SignOf.cs index 083a8ace..e88ec88a 100644 --- a/源代码/StgSharp/Math/Scalar/SignOf.cs +++ b/源代码/StgSharp/Math/Scalar/SignOf.cs @@ -40,28 +40,25 @@ namespace StgSharp.Math public static unsafe partial class Scaler { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe int SignOf(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( float x ) { - if (x == 0) - { + if( x == 0 ) { return 0; } - if (x > 0) - { + if( x > 0 ) { return 1; } return -1; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe int SignOf(int x) + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe int SignOf( int x ) { - if (x == 0) - { + if( x == 0 ) { return 0; } - if (x > 0) - { + if( x > 0 ) { return 1; } return -1; diff --git a/源代码/StgSharp/Math/Scalar/Sin.cs b/源代码/StgSharp/Math/Scalar/Sin.cs index f37e769d..8b79166d 100644 --- a/源代码/StgSharp/Math/Scalar/Sin.cs +++ b/源代码/StgSharp/Math/Scalar/Sin.cs @@ -39,36 +39,16 @@ namespace StgSharp.Math public const float Pi = 3.1415926f; - private static readonly float[] cosData = - { - 1f, 0.987688341014302f, 0.951056517951169f, 0.891006527837756f, 0.809017000674805f, - 0.707106790659974f, 0.587785265298989f, 0.453990516451646f, 0.309017014761716f, 0.156434488858737f, - 2.67948965850537E-08f, -0.156434435928723f, -0.309016963794794f, -0.453990468702791f, -0.587785221943935f, - -0.707106752766267f, -0.809016969175515f, -0.891006503508499f, -0.951056501391011f, -0.98768833263101f, - -0.999999999999999f, -0.987688349397591f, -0.951056534511324f, -0.891006552167012f, -0.809017032174094f, - -0.707106828553679f, -0.587785308654041f, -0.4539905642005f, -0.309017065728638f, -0.156434541788751f, - -8.03846893110719E-08f, 0.156434382998709f, 0.309016912827872f, 0.453990420953934f, 0.58778517858888f, - 0.707106714872559f, 0.809016937676222f, 0.891006479179238f, 0.951056484830851f, 0.987688324247716f, - - + private static readonly float[] cosData = { + 1f, 0.987688341014302f, 0.951056517951169f, 0.891006527837756f, 0.809017000674805f, 0.707106790659974f, 0.587785265298989f, 0.453990516451646f, 0.309017014761716f, 0.156434488858737f, 2.67948965850537E-08f, -0.156434435928723f, -0.309016963794794f, -0.453990468702791f, -0.587785221943935f, -0.707106752766267f, -0.809016969175515f, -0.891006503508499f, -0.951056501391011f, -0.98768833263101f, -0.999999999999999f, -0.987688349397591f, -0.951056534511324f, -0.891006552167012f, -0.809017032174094f, -0.707106828553679f, -0.587785308654041f, -0.4539905642005f, -0.309017065728638f, -0.156434541788751f, -8.03846893110719E-08f, 0.156434382998709f, 0.309016912827872f, 0.453990420953934f, 0.58778517858888f, 0.707106714872559f, 0.809016937676222f, 0.891006479179238f, 0.951056484830851f, 0.987688324247716f, }; - private static readonly float[] sinData = - { - 0f, 0.15643446239373f, 0.309016989278255f, 0.453990492577218f, 0.587785243621462f, - 0.707106771713121f, 0.80901698492516f, 0.891006515673128f, 0.951056509671091f, 0.987688336822657f, - 1f, 0.987688345205947f, 0.951056526231247f, 0.891006540002384f, 0.80901701642445f, - 0.707106809606826f, 0.587785286976515f, 0.453990540326073f, 0.309017040245177f, 0.156434515323744f, - 5.35897931701074E-08f, -0.156434409463716f, -0.309016938311333f, -0.453990444828362f, -0.587785200266408f, - -0.707106733819413f, -0.809016953425868f, -0.891006491343869f, -0.951056493110931f, -0.987688328439363f, - -0.999999999999997f, -0.987688353589235f, -0.951056542791401f, -0.891006564331638f, -0.809017047923737f, - -0.70710684750053f, -0.587785330331566f, -0.453990588074927f, -0.309017091212098f, -0.156434568253757f, - - + private static readonly float[] sinData = { + 0f, 0.15643446239373f, 0.309016989278255f, 0.453990492577218f, 0.587785243621462f, 0.707106771713121f, 0.80901698492516f, 0.891006515673128f, 0.951056509671091f, 0.987688336822657f, 1f, 0.987688345205947f, 0.951056526231247f, 0.891006540002384f, 0.80901701642445f, 0.707106809606826f, 0.587785286976515f, 0.453990540326073f, 0.309017040245177f, 0.156434515323744f, 5.35897931701074E-08f, -0.156434409463716f, -0.309016938311333f, -0.453990444828362f, -0.587785200266408f, -0.707106733819413f, -0.809016953425868f, -0.891006491343869f, -0.951056493110931f, -0.987688328439363f, -0.999999999999997f, -0.987688353589235f, -0.951056542791401f, -0.891006564331638f, -0.809017047923737f, -0.70710684750053f, -0.587785330331566f, -0.453990588074927f, -0.309017091212098f, -0.156434568253757f, }; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static unsafe float Sin(float x) + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static unsafe float Sin( float x ) { /* float refer = x / 360.0f; @@ -84,7 +64,7 @@ namespace StgSharp.Math return (sinData[a] * ((1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2))) + (cosData[a] * ((0.1570796327f * refer) - (6.459640975e-4f * refer * refer2))); */ - return MathF.Sin(x); + return MathF.Sin( x ); } } diff --git a/源代码/StgSharp/Math/Scalar/Sqrt.cs b/源代码/StgSharp/Math/Scalar/Sqrt.cs index e281655e..056a6a51 100644 --- a/源代码/StgSharp/Math/Scalar/Sqrt.cs +++ b/源代码/StgSharp/Math/Scalar/Sqrt.cs @@ -36,7 +36,7 @@ namespace StgSharp.Math public static partial class Scaler { - public static unsafe float SeedSqrt(float x) + public static unsafe float SeedSqrt( float x ) { /* * 本方法采用分别对指数和小数处理的方法计算平方根 @@ -47,12 +47,11 @@ namespace StgSharp.Math * 在进一步简化操作后,计算精度达到0.5%,速度约为.Net库函数的3倍 */ - if (x < 0) - { - throw new ArgumentOutOfRangeException("Input is smaller than zero!"); + if( x < 0 ) { + throw new ArgumentOutOfRangeException( + "Input is smaller than zero!" ); } - if (x == 0) - { + if( x == 0 ) { return 0; } /* @@ -61,19 +60,17 @@ namespace StgSharp.Math * 故不考虑正负号 */ - if (x < 0) - { + if( x < 0 ) { throw new ArgumentOutOfRangeException(); } - if (x <= 1e-12) - { + if( x <= 1e-12 ) { return 0; } //提取指数位并减去指数位中的127 //由于平方根仅对正数有效 //故不考虑正负号 - uint a = *(uint*)&x; + uint a = *( uint* )&x; uint f = a; f >>= 23; f /= 2; @@ -96,14 +93,15 @@ namespace StgSharp.Math f <<= 23; e += f; - float result = *(float*)&e; - result = (result + (x / result)) / 2; - return (result + (x / result)) / 2; + float result = *( float* )&e; + result = ( result + ( x / result ) ) / 2; + return ( result + ( x / result ) ) / 2; } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static float Sqrt(float x) + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static float Sqrt( float x ) { - return MathF.Sqrt(x); + return MathF.Sqrt( x ); /**/ } diff --git a/源代码/StgSharp/Math/Scalar/Tan.cs b/源代码/StgSharp/Math/Scalar/Tan.cs index 687727b0..580fd019 100644 --- a/源代码/StgSharp/Math/Scalar/Tan.cs +++ b/源代码/StgSharp/Math/Scalar/Tan.cs @@ -33,22 +33,22 @@ namespace StgSharp.Math public static partial class Scaler { - public static float Tan(float x) + public static float Tan( float x ) { float refer = x / 360.0f; - refer -= (int)refer; + refer -= ( int )refer; refer *= 40; - int a = (int)refer; //大分度,查表 + int a = ( int )refer; //大分度,查表 refer -= a; //小分度,拟合 float refer2 = refer * refer; - float sin = (0.1570796327f * refer) - (6.459640975e-4f * refer * refer2); - float cos = (1 - (0.0123370055f * refer2)) + (2.536695709e-5f * refer2 * refer2); + float sin = ( 0.1570796327f * refer ) - ( 6.459640975e-4f * refer * refer2 ); + float cos = ( 1 - ( 0.0123370055f * refer2 ) ) + ( 2.536695709e-5f * refer2 * refer2 ); - return ((sinData[a] * cos) + (cosData[a] * sin)) - / ((cosData[a] * cos) - (sinData[a] * sin)); + return ( ( sinData[ a ] * cos ) + ( cosData[ a ] * sin ) ) / ( ( cosData[ + a ] * cos ) - ( sinData[ a ] * sin ) ); } } diff --git a/源代码/StgSharp/Math/glClampf.cs b/源代码/StgSharp/Math/glClampf.cs index dbe60314..b298e8ba 100644 --- a/源代码/StgSharp/Math/glClampf.cs +++ b/源代码/StgSharp/Math/glClampf.cs @@ -38,55 +38,54 @@ using System.Threading.Tasks; namespace StgSharp.Math { /// - /// OpenGL numeric type. - /// An IEEE-754 floating-point value, clamped to the range [0,1]. + /// OpenGL numeric type. An IEEE-754 floating-point value, clamped to the range [0,1]. /// - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public struct GLclampf { public float value; - public GLclampf(float a) + public GLclampf( float a ) { value = a; } - public static explicit operator float(GLclampf v) + public static explicit operator float( GLclampf v ) { return v.value; } - public static explicit operator GLclampf(float v) + public static explicit operator GLclampf( float v ) { - return new GLclampf(v); + return new GLclampf( v ); } } /// - /// OpenGL numeric type. - /// An IEEE-754 double precision floating-point value, clamped to the range [0,1]. + /// OpenGL numeric type. An IEEE-754 double precision floating-point value, clamped to the range + /// [0,1]. /// - [StructLayout(LayoutKind.Sequential)] + [StructLayout( LayoutKind.Sequential )] public struct GLclampd { public double value; - public GLclampd(double a) + public GLclampd( double a ) { value = a; } - public static explicit operator double(GLclampd v) + public static explicit operator double( GLclampd v ) { return v.value; } - public static explicit operator GLclampd(double v) + public static explicit operator GLclampd( double v ) { - return new GLclampd(v); + return new GLclampd( v ); } } diff --git a/源代码/StgSharp/Math/glHalfNV.cs b/源代码/StgSharp/Math/glHalfNV.cs index e75b0eea..2f649fd7 100644 --- a/源代码/StgSharp/Math/glHalfNV.cs +++ b/源代码/StgSharp/Math/glHalfNV.cs @@ -37,24 +37,23 @@ using System.Threading.Tasks; namespace StgSharp.Math { - - [StructLayout(LayoutKind.Explicit, Size = 16)] + [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct GLhalfNV { - [FieldOffset(0)] public short binary; + [FieldOffset( 0 )] public short binary; - public GLhalfNV(short bin) + public GLhalfNV( short bin ) { binary = bin; } - public static explicit operator GLhalfNV(short x) + public static explicit operator GLhalfNV( short x ) { - return new GLhalfNV(x); + return new GLhalfNV( x ); } - public static explicit operator short(GLhalfNV x) + public static explicit operator short( GLhalfNV x ) { return x.binary; } diff --git a/源代码/StgSharp/Stg/Bullet.cs b/源代码/StgSharp/Stg/Bullet.cs index ba172b17..1f31f3c5 100644 --- a/源代码/StgSharp/Stg/Bullet.cs +++ b/源代码/StgSharp/Stg/Bullet.cs @@ -39,24 +39,21 @@ namespace StgSharp.Gaming public abstract class Bullet : IInstancing, IPlainEntity { - protected Bullet - ( + protected Bullet( PlainInstancingBuffer buffer, GeometryMotion movement, - vec2d beginPosition, + Vec2 beginPosition, float angle, - float scale - ) + float scale ) { - if (buffer == null) - { - throw new ArgumentNullException(nameof(buffer)); + if( buffer == null ) { + throw new ArgumentNullException( nameof( buffer ) ); } GlobalBuffer = buffer; BufferId = buffer.CreateInstanceID(); - ((IInstancing)this).Scale = scale; - ((IInstancing)this).Coord = new vec3d(beginPosition, 0); - ((IInstancing)this).Rotation = angle; + ( ( IInstancing )this ).Scale = scale; + ( ( IInstancing )this ).Coord = new Vec3( beginPosition, 0 ); + ( ( IInstancing )this ).Rotation = angle; Motion = movement; } @@ -78,18 +75,18 @@ namespace StgSharp.Gaming set; } - public vec2d CenterPosition + public Vec2 CenterPosition { get; set; } - public bool CollideWith(IPlainEntity entity) + public bool CollideWith( IPlainEntity entity ) { throw new System.NotImplementedException(); } - vec3d IInstancing.CenterPositionGlobal + Vec3 IInstancing.CenterPositionGlobal { get; set; diff --git a/源代码/StgSharp/Stg/CollisionTexture.cs b/源代码/StgSharp/Stg/CollisionTexture.cs index 66a72c31..641d9db3 100644 --- a/源代码/StgSharp/Stg/CollisionTexture.cs +++ b/源代码/StgSharp/Stg/CollisionTexture.cs @@ -49,79 +49,85 @@ namespace StgSharp.Stg public interface IOneDimensionalCollisionTexture2D { - public void Init(Radius angleStride, string name); + public void Init( Radius angleStride, string name ); } public sealed class OneDimensionalCollisionTexture2D_GL : glRender, IOneDimensionalCollisionTexture2D { - float[] textureOutput; - ElementBuffer ebo; + private float[] textureOutput; + private ElementBuffer ebo; private FrameBuffer fbo; - RenderBuffer rbo; + private RenderBuffer rbo; - ShaderProgram generatingShader; + private ShaderProgram generatingShader; - TextureGL t; + private TextureGL t; - VertexArray vao; - VertexBuffer vbo; + private VertexArray vao; + private VertexBuffer vbo; - public OneDimensionalCollisionTexture2D_GL() - { - - } + public OneDimensionalCollisionTexture2D_GL() { } public override bool IsContextSharable => false; - public void GenerateCollisionTexture(IEnumerable bufferEnumeration) + public void GenerateCollisionTexture( + IEnumerable bufferEnumeration ) { - fbo.Bind(0); - GL.ClearColor(0, 0, 0, 1); - GL.Clear(MaskBufferBit.DEPTH | MaskBufferBit.COLOR); + fbo.Bind( 0 ); + GL.ClearColor( 0, 0, 0, 1 ); + GL.Clear( MaskBufferBit.DEPTH | MaskBufferBit.COLOR ); generatingShader.Use(); - vao.Bind(0); + vao.Bind( 0 ); - foreach (IInstancingBuffer item in bufferEnumeration) - { + foreach( IInstancingBuffer item in bufferEnumeration ) { IGeometry g = item.TypicalShape; - if (!(g is PlainGeometry)) - { - throw new InvalidOperationException("The current particle buffer contains non-planar geometry,"); + if( !( g is PlainGeometry ) ) { + throw new InvalidOperationException( + "The current particle buffer contains non-planar geometry," ); } - ebo.Bind(0); - ebo.SetValue(0, g.VertexIndices, BufferUsage.StreamDraw); + ebo.Bind( 0 ); + ebo.SetValue( 0, g.VertexIndices, BufferUsage.StreamDraw ); - vbo.WriteVectorData(0, item.CoordAndRotationSpan, BufferUsage.StreamDraw); - vao.SetVertexAttribute(1, 3, TypeCode.Single, false, 4 * sizeof(float), 0); - vao.SetVertexAttribute(2, 1, TypeCode.Single, false, 4 * sizeof(float), 3 * sizeof(float)); + vbo.WriteVectorData( + 0, item.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( + 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + vao.SetVertexAttribute( + 2, 1, TypeCode.Single, false, 4 * sizeof( float ), + 3 * sizeof( float ) ); - vbo.WriteScalerData(2, item.ScalingSpan, BufferUsage.StreamDraw); - vao.SetVertexAttribute(3, 1, TypeCode.Single, false, sizeof(float), 0); + vbo.WriteScalerData( + 2, item.ScalingSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( + 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); - vbo.WriteVectorData(1, g.VertexStream, BufferUsage.StreamDraw); - vao.SetVertexAttribute(0, 3, TypeCode.Single, false, 4 * sizeof(float), 0); + vbo.WriteVectorData( 1, g.VertexStream, + BufferUsage.StreamDraw ); + vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - GL.DrawElementsInstanced(GeometryType.TRIANGLES, ((uint)g.VertexIndices.Length) / 3, - TypeCode.UInt32, IntPtr.Zero, (uint)item.ScalingSpan.Length); + GL.DrawElementsInstanced( + GeometryType.TRIANGLES, + ( ( uint )g.VertexIndices.Length ) / 3, TypeCode.UInt32, + IntPtr.Zero, ( uint )item.ScalingSpan.Length ); } - t.Bind2D(0); - GL.GetTextureImage(Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, PixelChannelLayout.Float, textureOutput); + t.Bind2D( 0 ); + GL.GetTextureImage( + Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, + PixelChannelLayout.Float, textureOutput ); VertexArray.BindNull(); } - public void Init(Radius angleStride, string name) + public void Init( Radius angleStride, string name ) { - primeArgs = new ViewPort - { - Height = 1, - Width = (int)((new Radius(Scaler.Pi)) / angleStride), - Name = name, - }; + primeArgs = new ViewPort( + (1, ( ( new Radius( Scaler.Pi ) ) / angleStride )), name, + IntPtr.Zero ); _coordStretch = (1, 1, 1); @@ -129,7 +135,7 @@ namespace StgSharp.Stg CustomizeInit(); } -#pragma warning disable CS8618 + #pragma warning disable CS8618 protected override void CustomizeDeinit() { @@ -140,48 +146,50 @@ namespace StgSharp.Stg { generatingShader = CreateShaderProgram(); - Shader vertexShader = CreateShaderSegment(ShaderType.Vertex, 1); - Shader fragmentShader = CreateShaderSegment(ShaderType.Fragment, 1); + Shader vertexShader = CreateShaderSegment( ShaderType.Vertex, 1 ); + Shader fragmentShader = CreateShaderSegment( + ShaderType.Fragment, 1 ); - vertexShader.Compile(0, InternalIO.CollisionTextureVertexShader); - fragmentShader.Compile(0, InternalIO.CollisionTextureFragmentShader); - vertexShader.AttachTo(0, generatingShader); - fragmentShader.AttachTo(0, generatingShader); + vertexShader.Compile( 0, InternalIO.CollisionTextureVertexShader ); + fragmentShader.Compile( + 0, InternalIO.CollisionTextureFragmentShader ); + vertexShader.AttachTo( 0, generatingShader ); + fragmentShader.AttachTo( 0, generatingShader ); generatingShader.Link(); generatingShader.Use(); - vbo = CreateVertexBuffer(3); - vao = CreateVertexArray(1); - ebo = CreateElementBuffer(1); + vbo = CreateVertexBuffer( 3 ); + vao = CreateVertexArray( 1 ); + ebo = CreateElementBuffer( 1 ); - fbo = CreateFrameBuffer(1); - rbo = CreateRenderBuffer(1); + fbo = CreateFrameBuffer( 1 ); + rbo = CreateRenderBuffer( 1 ); GL.SetRenderBufferStorage( - RenderBufferInternalFormat.Depth24_Stencil8, this.Size); + RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); - t = CreateTexture(1); - t.Bind2D(0); - GL.TextureImage2d(Texture2DTarget.Texture2D, 0, (int)ImageChannel.WithAlphaChannel, - (uint)Width, (uint)Height, (int)ImageChannel.WithAlphaChannel, PixelChannelLayout.Byte, Array.Empty()); + t = CreateTexture( 1 ); + t.Bind2D( 0 ); + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, Array.Empty() ); - t.Set2dWrapProperty(0, TextureWrap.Repeat, TextureWrap.Repeat); - t.Set2dFilterProperty(0, TextureFilter.Nearest, TextureFilter.Nearest); + t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + t.Set2dFilterProperty( + 0, TextureFilter.Nearest, TextureFilter.Nearest ); - GL.FrameBufferTexture2d(FrameBufferTarget.All, glAttachment.Color(0), - Texture2DTarget.Texture2D, t[0], 0); + GL.FrameBufferTexture2d( + FrameBufferTarget.All, glAttachment.Color( 0 ), + Texture2DTarget.Texture2D, t[ 0 ], 0 ); - GL.CombineFrameBufferRenderBuffer(FrameBufferAttachment.Color, rbo[0]); + GL.CombineFrameBufferRenderBuffer( + FrameBufferAttachment.Color, rbo[ 0 ] ); textureOutput = new float[this.Width]; } - protected override void Main() - { - throw new NotSupportedException(); - } - } } diff --git a/源代码/StgSharp/Stg/TimeLine.cs b/源代码/StgSharp/Stg/TimeLine.cs index 67d49584..1d05b480 100644 --- a/源代码/StgSharp/Stg/TimeLine.cs +++ b/源代码/StgSharp/Stg/TimeLine.cs @@ -34,7 +34,5 @@ using System.Text; namespace StgSharp.Stg { - public class TimeLine - { - } + public class TimeLine { } } diff --git a/源代码/StgSharp/Stg/Touhou/TouhouBuilder.cs b/源代码/StgSharp/Stg/Touhou/TouhouBuilder.cs index 5bcc081a..e720313a 100644 --- a/源代码/StgSharp/Stg/Touhou/TouhouBuilder.cs +++ b/源代码/StgSharp/Stg/Touhou/TouhouBuilder.cs @@ -39,8 +39,6 @@ namespace StgSharp.Stg.Touhou { public static class TouhouBuilder { - - /* public static ViewBase BuildTouhouWorld() { diff --git a/源代码/StgSharp/Stg/Touhou/TouhouWindow.cs b/源代码/StgSharp/Stg/Touhou/TouhouWindow.cs index 4558c200..0613d45c 100644 --- a/源代码/StgSharp/Stg/Touhou/TouhouWindow.cs +++ b/源代码/StgSharp/Stg/Touhou/TouhouWindow.cs @@ -41,11 +41,7 @@ namespace StgSharp.Touhou public abstract class TouhouWindowMain : ViewModelBase { - protected TouhouWindowMain(ViewPort vp) : base(vp, 60) - { - } - - + protected TouhouWindowMain( ViewPort vp ) : base( vp, 60 ) { } } } diff --git a/源代码/StgSharp/Stg/Touhou/View/OpenningView.cs b/源代码/StgSharp/Stg/Touhou/View/OpenningView.cs index 53897cbc..f426bbc1 100644 --- a/源代码/StgSharp/Stg/Touhou/View/OpenningView.cs +++ b/源代码/StgSharp/Stg/Touhou/View/OpenningView.cs @@ -42,12 +42,11 @@ namespace StgSharp.Stg.Touhou public abstract class OpenningView : ViewBase { - public override void CustomizedInitialize(ViewModelBase viewModelBinding) + public override void CustomizedInitialize( + ViewModelBase viewModelBinding ) { throw new NotImplementedException(); } } - - } diff --git a/源代码/StgSharp/obj/StgSharp.csproj.nuget.dgspec.json b/源代码/StgSharp/obj/StgSharp.csproj.nuget.dgspec.json index 7d4501ab..1548f806 100644 --- a/源代码/StgSharp/obj/StgSharp.csproj.nuget.dgspec.json +++ b/源代码/StgSharp/obj/StgSharp.csproj.nuget.dgspec.json @@ -26,7 +26,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/StgSharp/obj/project.assets.json b/源代码/StgSharp/obj/project.assets.json index f922ea2f..5f045960 100644 --- a/源代码/StgSharp/obj/project.assets.json +++ b/源代码/StgSharp/obj/project.assets.json @@ -428,7 +428,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/StgSharp/obj/x64/Benchmark/netstandard2.1/StgSharp.AssemblyInfo.cs b/源代码/StgSharp/obj/x64/Benchmark/netstandard2.1/StgSharp.AssemblyInfo.cs index 60c469e6..22458240 100644 --- a/源代码/StgSharp/obj/x64/Benchmark/netstandard2.1/StgSharp.AssemblyInfo.cs +++ b/源代码/StgSharp/obj/x64/Benchmark/netstandard2.1/StgSharp.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Benchmark")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b207f16616b7bd967d647a809cc27e7174063451")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs b/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs index bac32a8e..9ac00e4f 100644 --- a/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs +++ b/源代码/StgSharp/obj/x64/Release/netstandard2.1/StgSharp.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ee4e4a42f2a6b8609a6fce1d36c8da7f4182da6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharpC/StgSharpC.c b/源代码/StgSharpC/StgSharpC.c index 6b1ae9dd..53a5d5ea 100644 --- a/源代码/StgSharpC/StgSharpC.c +++ b/源代码/StgSharpC/StgSharpC.c @@ -1,81 +1,79 @@ -#include "ssgc_framework.h" +#include "StgSharpC.h" #include "gl.h" #include "glfw3.h" -#include "StgSharpC.h" +#include "ssc_framework.h" #include -GladGLContext* currentContext; +GladGLContext *currentContext; extern char infolog[512] = { 0 }; -SSCAPI int SSCDECL glCheckShaderStat(GladGLContext* context,uint64_t shaderHandle , int key, char** logRef) +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, + uint64_t shaderHandle, int key, + char **logRef) { - int stat = 0; - context->GetShaderiv(shaderHandle, key, &stat); - if (!stat) - { - context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog); - } - *logRef = infolog; - return stat; + int stat = 0; + context->GetShaderiv(shaderHandle, key, &stat); + if (!stat) { + context->GetShaderInfoLog(shaderHandle, 512, NULL, infolog); + } + *logRef = infolog; + return stat; } SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion) { - glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); - glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); - glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); + glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE); } -SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char* procName) +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName) { - void* ret = glfwGetProcAddress(procName); - //printf("%llu\n", (uint64_t)ret); - if (ret = NULL) - { - *infolog = "Failed to load OpenGL api:"; - for (size_t i = 0; i < sizeof(procName); i++) - { - infolog[30 + i] = procName[i]; + void *ret = glfwGetProcAddress(procName); + // printf("%llu\n", (uint64_t)ret); + if (ret = NULL) { + *infolog = "Failed to load OpenGL api:"; + for (size_t i = 0; i < sizeof(procName); i++) { + infolog[30 + i] = procName[i]; + } + printf("%s\n", infolog); } - printf("%s\n", infolog); - } - return (GLFWglproc)ret; + return (GLFWglproc)ret; } -SSCAPI unsigned int linkShaderProgram(GladGLContext* context, GLuint shaderProgram) +SSCAPI unsigned int linkShaderProgram(GladGLContext *context, + GLuint shaderProgram) { - context->LinkProgram(shaderProgram); + context->LinkProgram(shaderProgram); - int success; - context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success); - if (!success) - { - context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog); - return 0; - } - else - { - return shaderProgram; - } + int success; + context->GetProgramiv(shaderProgram, GL_LINK_STATUS, &success); + if (!success) { + context->GetProgramInfoLog(shaderProgram, 512, NULL, infolog); + return 0; + } else { + return shaderProgram; + } } -SSCAPI void SSCDECL loadImageData(char* location, Image* out, imageLoader loader) +SSCAPI void SSCDECL loadImageData(char *location, Image *out, + imageLoader loader) { - if (loader == NULL) - { - loader = stbi_load; - } - out->pixelPtr = loader(location, &(out->width), &(out->height), &(out->channel), 0); + if (loader == NULL) { + loader = stbi_load; + } + out->pixelPtr = loader(location, &(out->width), &(out->height), + &(out->channel), 0); } -SSCAPI void SSCDECL unloadImageData(Image* out) +SSCAPI void SSCDECL unloadImageData(Image *out) { - free(out->pixelPtr); + free(out->pixelPtr); } -char* _cdecl readLog() +char *_cdecl readLog() { - infolog[511] = '\0'; - return &infolog; -} \ No newline at end of file + infolog[511] = '\0'; + return &infolog; +} diff --git a/源代码/StgSharpC/StgSharpC.h b/源代码/StgSharpC/StgSharpC.h index 5d182c96..210ff04b 100644 --- a/源代码/StgSharpC/StgSharpC.h +++ b/源代码/StgSharpC/StgSharpC.h @@ -1,114 +1,75 @@ -#ifndef SSC +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC #define SSC -#define SSC_Api - -#include "ssgc_framework.h" -#include "ssgc_internal.h" -#include "gl.h" -#include "wgl.h" -#include "glfw3.h" -#include +#include "ssc_framework.h" +#include "ssc_internal.h" #define STBIDEF SSCAPI #include "stb_image.h" -#pragma comment(lib,"glfw3.lib") +#include "gl.h" +#include "wgl.h" +#include "glfw3.h" +#include +#include + +#ifndef SSCAPI_DEFINE + +#ifdef _WIN32 +#define SSCAPI __declspec(dllexport) +#elif defined _LINUX_ +#define SSCAPI __attribute__((dllexport)) +#elif defined _APPLE_ +#define SSCAPI __attribute__((visibility("default"))) +#else +#define SSCAPI +#endif + +#endif // ! SSCAPI_DEFINE + #if __cplusplus -extern "C" -{ -#endif // _cplusplus +extern "C" { +#endif #define byte char - -#pragma region Internal +#define ssc_null_assert(ptr) assert(ptr != NULL) #define ALIGN(simdVec) _mm_loadu_ps(&simdVec) - typedef struct Image { +typedef struct Image { int width; int height; int channel; - char* pixelPtr; - }Image; + char *pixelPtr; +} Image; + +typedef char *(*imageLoader)(char const *filename, int *x, int *y, + int *channels_in_file, int desired_channels); + +SSCAPI char infolog[512]; +SSCAPI int SSCDECL glCheckShaderStat(GladGLContext *context, + uint64_t shaderHandle, int key, + char **logRef); +SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion); +SSCAPI unsigned int SSCDECL linkShaderProgram(GladGLContext *context, + GLuint shadertype); +SSCAPI void SSCDECL loadImageData(char *location, Image *out, + imageLoader loader); +SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char *procName); +SSCAPI void SSCDECL unloadImageData(Image *out); +SSCAPI char *SSCDECL readLog(void); #pragma endregion - typedef char* (*imageLoader)(char const* filename, int* x, int* y, int* channels_in_file, int desired_channels); +SSCAPI void SSCDECL load_intrinsic_function(void *intrinsic_context); - SSCAPI char infolog[512]; - SSCAPI int SSCDECL glCheckShaderStat(GladGLContext* context, int key, char** logRef); - SSCAPI void SSCDECL initGL(int majorVersion, int minorVersion); - SSCAPI unsigned int SSCDECL linkShaderProgram(GladGLContext* context, GLuint shadertype); - SSCAPI void SSCDECL loadImageData(char* location, Image* out, imageLoader loader); - SSCAPI GLFWglproc SSCDECL loadGlfuncDefault(char* procName); - SSCAPI void SSCDECL unloadImageData(Image* out); - SSCAPI char* SSCDECL readLog(void); - - //linear related function - - -#pragma region mat define - - typedef union matrix2map - { - __m128 colum[2]; - float m[4][2]; - }matrix2map; - - typedef struct matrix3map - { - __m128 colum[3]; - float m[4][3]; - }matrix3map; - - typedef union matrix4map { - __m128 colum[4]; - float m[4][4]; - }matrix4map; - -#pragma endregion - -#pragma region Vector - - SSCAPI void SSCDECL normalize(__m128* source, __m128* target); - -#pragma endregion - - -#pragma region mat2 - - SSCAPI _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target); - SSCAPI _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target); - SSCAPI _inline void __cdecl deinit_mat2(matrix2map* mat); - -#pragma endregion - -#pragma region mat3 - - SSCAPI __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target); - SSCAPI __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target); - SSCAPI __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target); - SSCAPI _inline float _cdecl det_mat3(matrix3map* mat); - SSCAPI __inline float det_mat3_internal(__m128 const c1, __m128 const c2, __m128 const c3); - -#pragma endregion - -#pragma region mat4 - //type and function for 4 colum matrix - - SSCAPI __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target); - SSCAPI __inline void __cdecl transpose4to4(matrix4map* matrix, matrix4map* target); - - SSCAPI __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose); - - SSCAPI __inline void __cdecl deinit_mat4(matrix4map* matPtr); - -#pragma endregion - -#ifdef __cplusplus +#ifdef __cplusplus } -#endif // __cplusplus +#endif -#endif // !SSG +#endif diff --git a/源代码/StgSharpC/StgSharpC.vcxproj b/源代码/StgSharpC/StgSharpC.vcxproj index 49aa4262..ecc5a719 100644 --- a/源代码/StgSharpC/StgSharpC.vcxproj +++ b/源代码/StgSharpC/StgSharpC.vcxproj @@ -159,27 +159,27 @@ + + + - - + + - - - diff --git a/源代码/StgSharpC/dllmain.c b/源代码/StgSharpC/dllmain.c index bf376215..61d731f6 100644 --- a/源代码/StgSharpC/dllmain.c +++ b/源代码/StgSharpC/dllmain.c @@ -1,34 +1,33 @@ // dllmain.cpp : 定义 DLL 应用程序的入口点。 #ifdef _WIN32 -#include "ssgc_framework.h" +#include "ssc_framework.h" #endif // __ #include "StgSharpC.h" #ifdef _WIN32 -BOOL APIENTRY DllMain(HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved + +// clang-format off + +BOOL APIENTRY DllMain( + HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved ) { - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - - return 1; - - case DLL_THREAD_ATTACH: - return 1; - - case DLL_THREAD_DETACH: - return 1; - - case DLL_PROCESS_DETACH: - return 1; - + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + return 1; + case DLL_THREAD_ATTACH: + return 1; + case DLL_THREAD_DETACH: + return 1; + case DLL_PROCESS_DETACH: + return 1; break; - } + } return TRUE; } #else @@ -36,4 +35,6 @@ attribute((constructor)) void DllMain() { } -#endif // _WIN32 \ No newline at end of file +// clang-format on + +#endif // _WIN32 diff --git a/源代码/StgSharpC/intrinsic.c b/源代码/StgSharpC/intrinsic.c new file mode 100644 index 00000000..5e027698 --- /dev/null +++ b/源代码/StgSharpC/intrinsic.c @@ -0,0 +1,24 @@ +#include "StgSharpC.h" +#include "ssc_intrinsic.h" +#include + +SSCAPI void load_intrinsic_function(void *intrinsic_context) +{ + ssc_null_assert(intrinsic_context); + + ssc_intrinsic *context = (ssc_intrinsic *)intrinsic_context; + + context->transpose_23 = transpose23; + context->transpose_24 = transpose24; + context->transpose_32 = transpose32; + context->transpose_33 = transpose33; + context->transpose_34 = transpose34; + context->transpose_42 = transpose42; + context->transpose_43 = transpose43; + context->transpose_44 = transpose44; + context->normalize_3 = normalize; + context->det_matrix33 = det_mat3; + context->det_matrix44 = det_mat4; + context->string_quick_hash = quick_string_hash; + +} diff --git a/源代码/StgSharpC/mat2.c b/源代码/StgSharpC/mat2.c index 86cfffe5..43fc0372 100644 --- a/源代码/StgSharpC/mat2.c +++ b/源代码/StgSharpC/mat2.c @@ -1,28 +1,40 @@ #include "StgSharpC.h" -#include "ssgc_internal.h" +#include "ssc_intrinsic.h" -SSCAPI _inline void __cdecl transpose2to3(matrix2map* source, matrix3map* target) +INTERNAL void __cdecl transpose23(__2_columnset *source, + __3_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[0] = + _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = + _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = + _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); } -SSCAPI _inline void __cdecl transpose2to4(matrix2map* source, matrix4map* target) +INTERNAL void __cdecl transpose24(__2_columnset *source, + __4_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[3] = _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[0] = + _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = + _mm_shuffle_ps(t0, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = + _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = + _mm_shuffle_ps(t1, zeroVec, _MM_SHUFFLE(3, 1, 3, 1)); } - -SSCAPI _inline void __cdecl deinit_mat2(matrix2map* mat) -{ - _aligned_free(mat); -} \ No newline at end of file diff --git a/源代码/StgSharpC/mat3.c b/源代码/StgSharpC/mat3.c index 09fec57c..a2537386 100644 --- a/源代码/StgSharpC/mat3.c +++ b/源代码/StgSharpC/mat3.c @@ -1,73 +1,91 @@ #include "StgSharpC.h" -#include "ssgc_internal.h" +#include "ssc_intrinsic.h" #include -SSCAPI __inline void _cdecl transpose3to2(matrix3map* source, matrix2map* target) +INTERNAL void _cdecl transpose32(__3_columnset *source, + __2_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zeroVec, + _MM_SHUFFLE(1, 0, 1, 0)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); } -SSCAPI __inline void _cdecl transpose3to3(matrix3map* source, matrix3map* target) +INTERNAL void _cdecl transpose33(__3_columnset *source, + __3_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zeroVec, + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zeroVec, + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); } -SSCAPI __inline void _cdecl transpose3to4(matrix3map* source, matrix4map* target) +INTERNAL void _cdecl transpose34(__3_columnset *source, + __4_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), zeroVec, _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), zeroVec, _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), zeroVec, + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), zeroVec, + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); } -SSCAPI _inline float _cdecl det_mat3_internal(__m128 const c0, __m128 const c1, __m128 const c2) +INTERNAL float _cdecl det_mat3_internal(__m128 const c0, + __m128 const c1, + __m128 const c2) { - //let adding row aligned - __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); - __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); + //let adding row aligned + __m128 addc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 0, 2, 1)); + __m128 addc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 1, 0, 2)); - //let sub row aligned - __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); - __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); + //let sub row aligned + __m128 subc1 = _mm_shuffle_ps(c1, c1, _MM_SHUFFLE(3, 1, 0, 2)); + __m128 subc2 = _mm_shuffle_ps(c2, c2, _MM_SHUFFLE(3, 0, 2, 1)); - //multple all add row - __m128 cache = _mm_mul_ps(c0, addc1); - cache = _mm_mul_ps(cache, addc2); + //multple all add row + __m128 cache = _mm_mul_ps(c0, addc1); + cache = _mm_mul_ps(cache, addc2); - //multiple all sub row - __m128 sub = _mm_mul_ps(c0, subc1); - sub = _mm_mul_ps(sub, subc2); + //multiple all sub row + __m128 sub = _mm_mul_ps(c0, subc1); + sub = _mm_mul_ps(sub, subc2); - //main-corner sub sub-corner - cache = _mm_sub_ps(cache, sub); + //main-corner sub sub-corner + cache = _mm_sub_ps(cache, sub); - __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 - ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 + __m128 ret = _mm_hadd_ps(cache, cache); //element 1 add element 2 + ret = _mm_add_ps(ret, cache); //(e1 add e2) add element 3 - return ret.m128_f32[2]; + return ret.m128_f32[2]; } -SSCAPI _inline float _cdecl det_mat3(matrix3map* mat) +INTERNAL float _cdecl det_mat3(__3_columnset *source, + __3_columnset *transpose) { - return det_mat3_internal( - mat->colum[0], - mat->colum[1], - mat->colum[2] - ); -} \ No newline at end of file + return det_mat3_internal(source->column[0], source->column[1], + source->column[2]); +} diff --git a/源代码/StgSharpC/mat4.c b/源代码/StgSharpC/mat4.c index 2a113278..e368997e 100644 --- a/源代码/StgSharpC/mat4.c +++ b/源代码/StgSharpC/mat4.c @@ -1,62 +1,76 @@ + #include "StgSharpC.h" -#include "ssgc_internal.h" +#include "ssc_intrinsic.h" #include #include -SSCAPI __inline void __cdecl transpose4to2(matrix4map* source, matrix4map* target) +INTERNAL void __cdecl transpose42(__4_columnset *source, __2_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), + ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); } -SSCAPI __inline void __cdecl transpose4to4(matrix4map* source, matrix4map* target) +INTERNAL void __cdecl transpose43(__4_columnset *source, __3_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), + ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), + ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); } -SSCAPI __inline void __cdecl transpose4to3(matrix4map* source, matrix3map* target) +INTERNAL void __cdecl transpose44(__4_columnset *source, __4_columnset *target) { - __m128 t0 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t1 = _mm_shuffle_ps(ALIGN(source->colum[0]), ALIGN(source->colum[1]), _MM_SHUFFLE(3, 2, 3, 2)); - __m128 t2 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(1, 0, 1, 0)); - __m128 t3 = _mm_shuffle_ps(ALIGN(source->colum[2]), ALIGN(source->colum[3]), _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t0 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t1 = _mm_shuffle_ps(ALIGN(source->column[0]), + ALIGN(source->column[1]), + _MM_SHUFFLE(3, 2, 3, 2)); + __m128 t2 = _mm_shuffle_ps(ALIGN(source->column[2]), + ALIGN(source->column[3]), + _MM_SHUFFLE(1, 0, 1, 0)); + __m128 t3 = _mm_shuffle_ps(ALIGN(source->column[2]), + ALIGN(source->column[3]), + _MM_SHUFFLE(3, 2, 3, 2)); - target->colum[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); - target->colum[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); - target->colum[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[0] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[1] = _mm_shuffle_ps(t0, t2, _MM_SHUFFLE(3, 1, 3, 1)); + target->column[2] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(2, 0, 2, 0)); + target->column[3] = _mm_shuffle_ps(t1, t3, _MM_SHUFFLE(3, 1, 3, 1)); } -SSCAPI __inline float __cdecl det_mat4(matrix4map* matPtr, matrix4map* transpose) +INTERNAL float __cdecl det_mat4(__4_columnset *matPtr, __4_columnset *transpose) { - __m128 mc0 = ALIGN(matPtr->colum[0]); - __m128 mc1 = ALIGN(matPtr->colum[1]); - __m128 mc2 = ALIGN(matPtr->colum[2]); - __m128 mc3 = ALIGN(matPtr->colum[3]); + __m128 mc0 = ALIGN(matPtr->column[0]); + __m128 mc1 = ALIGN(matPtr->column[1]); + __m128 mc2 = ALIGN(matPtr->column[2]); + __m128 mc3 = ALIGN(matPtr->column[3]); - __m128 cogeneration = _mm_set_ps( - det_mat3_internal(mc0, mc1, mc2), - det_mat3_internal(mc0, mc1, mc3), - det_mat3_internal(mc0, mc2, mc3), - det_mat3_internal(mc1, mc2, mc3) - ); - __m128 retvec = _mm_mul_ps(ALIGN(transpose->colum[3]), cogeneration); - retvec = _mm_hsub_ps(retvec, retvec); - retvec = _mm_hadd_ps(retvec, retvec); - return -retvec.m128_f32[0]; + __m128 cogeneration = _mm_set_ps(det_mat3_internal(mc0, mc1, mc2), + det_mat3_internal(mc0, mc1, mc3), + det_mat3_internal(mc0, mc2, mc3), + det_mat3_internal(mc1, mc2, mc3)); + __m128 retvec = _mm_mul_ps(ALIGN(transpose->column[3]), cogeneration); + retvec = _mm_hsub_ps(retvec, retvec); + retvec = _mm_hadd_ps(retvec, retvec); + return -retvec.m128_f32[0]; } - -SSCAPI __inline void __cdecl deinit_mat4(matrix4map* matPtr) -{ - _aligned_free(matPtr); -} \ No newline at end of file diff --git a/源代码/StgSharpC/quick_hash.c b/源代码/StgSharpC/quick_hash.c new file mode 100644 index 00000000..d4a8820d --- /dev/null +++ b/源代码/StgSharpC/quick_hash.c @@ -0,0 +1,24 @@ +#include "ssc_intrinsic.h" +#include "StgSharpC.h" + +static __m128i hash_mask = { .m128i_i32 = { 31 * 31 * 31, 31 * 31, 31, 1 } }; + +INTERNAL int quick_string_hash(byte const *str, int const length) +{ + __m128i source; + int source_length = length * 2; + if (source_length > 15) { + source = _mm_lddqu_si128((__m128i *)str); + } else { + byte buffer[16]; + memcpy(buffer, str, source_length); + memset(buffer + source_length - 1, 0, 16 - source_length); + source = _mm_lddqu_si128((__m128i *)buffer); + } + + __m128i ret = _mm_mullo_epi32(source, hash_mask); + ret = _mm_hadd_epi32(ret, ret); + ret = _mm_hadd_epi32(ret, ret); + + return _mm_cvtsi128_si32(ret); +} diff --git a/源代码/StgSharpC/ssc_framework.h b/源代码/StgSharpC/ssc_framework.h new file mode 100644 index 00000000..e068567c --- /dev/null +++ b/源代码/StgSharpC/ssc_framework.h @@ -0,0 +1,12 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#if _WIN32 + + + +#endif // __WIN32 + + + diff --git a/源代码/StgSharpC/ssc_internal.h b/源代码/StgSharpC/ssc_internal.h new file mode 100644 index 00000000..927239a5 --- /dev/null +++ b/源代码/StgSharpC/ssc_internal.h @@ -0,0 +1,39 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#include "xmmintrin.h" +/* +#include "GLAD/gl.h" +#include "glfw3.h" +#include "StgSharpC.h" +*/ + +#ifndef SSC_INTERNAL +#define SSC_INTERNAL + +#ifdef _WIN32 +#define WIN32_LEAN_AND_MEAN +#define SSCAPI __declspec(dllexport) +#include +#elif defined _LINUX_ +#define SSCAPI __attribute__((dllexport)) +#elif defined _APPLE_ +#define SSCAPI __attribute__((visibility("default"))) +#else +#define SSCAPI +#endif + +#ifdef _WIN32 +#define _CRT_SECURE_NO_WARNINGS 1 +#endif + +#define SSCDECL __cdecl + +#define zeroVec _mm_setzero_ps() + +#define SSCAPI_DEFINE + +#define INTERNAL extern + +#endif // diff --git a/源代码/StgSharpC/ssc_intrinsic.h b/源代码/StgSharpC/ssc_intrinsic.h new file mode 100644 index 00000000..3659a457 --- /dev/null +++ b/源代码/StgSharpC/ssc_intrinsic.h @@ -0,0 +1,70 @@ +#ifdef _MSC_VER +#pragma once +#endif + +#ifndef SSC_INTRIN +#define SSC_INTRIN + +#include "StgSharpC.h" +#include + +typedef union column_2 { + __m128 column[2]; + float m[4][2]; +} __2_columnset; + +typedef struct column_3 { + __m128 column[3]; + float m[4][3]; +} __3_columnset; + +typedef union column_4 { + __m128 column[4]; + float m[4][4]; +} __4_columnset; + +typedef void (*VECTORNORMALIZEPROC)(__m128 *source, __m128 *target); +typedef void (*MATRIXTRANSPOSEPROC)(void *source, void *target); +typedef void (*MATRIXDETPROC)(void *mat, void *transpose); + +#pragma region matix function + +INTERNAL void normalize(__m128 *source, __m128 *target); + +INTERNAL void transpose23(__2_columnset *source, __3_columnset *target); +INTERNAL void transpose24(__2_columnset *source, __4_columnset *target); + +INTERNAL void transpose32(__3_columnset *source, __2_columnset *target); +INTERNAL void transpose33(__3_columnset *source, __3_columnset *target); +INTERNAL void transpose34(__3_columnset *source, __4_columnset *target); +INTERNAL float det_mat3(__3_columnset *matrix, __3_columnset *tranpose); + +INTERNAL void transpose42(__4_columnset *source, __2_columnset *target); +INTERNAL void transpose43(__4_columnset *source, __3_columnset *target); +INTERNAL void transpose44(__4_columnset *matrix, __4_columnset *target); +INTERNAL float det_mat4(__4_columnset *matrix, __4_columnset *transpose); + +#pragma endregion + +#pragma region quick_hash + +INTERNAL int quick_string_hash(byte *str, int length); + +#pragma endregion + +typedef struct ssc_intrinsic { + MATRIXTRANSPOSEPROC transpose_23; + MATRIXTRANSPOSEPROC transpose_24; + MATRIXTRANSPOSEPROC transpose_32; + MATRIXTRANSPOSEPROC transpose_33; + MATRIXTRANSPOSEPROC transpose_34; + MATRIXTRANSPOSEPROC transpose_42; + MATRIXTRANSPOSEPROC transpose_43; + MATRIXTRANSPOSEPROC transpose_44; + VECTORNORMALIZEPROC normalize_3; + MATRIXDETPROC det_matrix33; + MATRIXDETPROC det_matrix44; + int (*string_quick_hash)(char *str, int length); +} ssc_intrinsic; + +#endif // !SSC_INTRIN diff --git a/源代码/StgSharpC/stb_image.c b/源代码/StgSharpC/stb_image.c index 482e8622..903ade99 100644 --- a/源代码/StgSharpC/stb_image.c +++ b/源代码/StgSharpC/stb_image.c @@ -1,9 +1,10 @@ #include "stb_image.h" -#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ - || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ - || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ - || defined(STBI_ONLY_ZLIB) +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || \ + defined(STBI_ONLY_BMP) || defined(STBI_ONLY_TGA) || \ + defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) || \ + defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || \ + defined(STBI_ONLY_PNM) || defined(STBI_ONLY_ZLIB) #ifndef STBI_ONLY_JPEG #define STBI_NO_JPEG #endif @@ -33,7 +34,8 @@ #endif #endif -#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && \ + !defined(STBI_NO_ZLIB) #define STBI_NO_ZLIB #endif @@ -44,7 +46,7 @@ #include #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) -#include // ldexp, pow +#include // ldexp, pow #endif #ifndef STBI_NO_STDIO @@ -73,43 +75,44 @@ #endif #ifndef STBI_NO_THREAD_LOCALS -#if defined(__cplusplus) && __cplusplus >= 201103L -#define STBI_THREAD_LOCAL thread_local +#if defined(__cplusplus) && __cplusplus >= 201103L +#define STBI_THREAD_LOCAL thread_local #elif defined(__GNUC__) && __GNUC__ < 5 -#define STBI_THREAD_LOCAL __thread +#define STBI_THREAD_LOCAL __thread #elif defined(_MSC_VER) -#define STBI_THREAD_LOCAL __declspec(thread) -#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) -#define STBI_THREAD_LOCAL _Thread_local +#define STBI_THREAD_LOCAL __declspec(thread) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \ + !defined(__STDC_NO_THREADS__) +#define STBI_THREAD_LOCAL _Thread_local #endif #ifndef STBI_THREAD_LOCAL #if defined(__GNUC__) -#define STBI_THREAD_LOCAL __thread +#define STBI_THREAD_LOCAL __thread #endif #endif #endif #if defined(_MSC_VER) || defined(__SYMBIAN32__) typedef unsigned short stbi__uint16; -typedef signed short stbi__int16; -typedef unsigned int stbi__uint32; -typedef signed int stbi__int32; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; #else #include typedef uint16_t stbi__uint16; -typedef int16_t stbi__int16; +typedef int16_t stbi__int16; typedef uint32_t stbi__uint32; -typedef int32_t stbi__int32; +typedef int32_t stbi__int32; #endif // should produce compiler error if size is wrong typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; #ifdef _MSC_VER -#define STBI_NOTUSED(v) (void)(v) +#define STBI_NOTUSED(v) (void)(v) #else -#define STBI_NOTUSED(v) (void)sizeof(v) +#define STBI_NOTUSED(v) (void)sizeof(v) #endif #ifdef _MSC_VER @@ -117,27 +120,29 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; #endif #ifdef STBI_HAS_LROTL -#define stbi_lrot(x,y) _lrotl(x,y) +#define stbi_lrot(x, y) _lrotl(x, y) #else -#define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#define stbi_lrot(x, y) (((x) << (y)) | ((x) >> (-(y) & 31))) #endif -#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +#if defined(STBI_MALLOC) && defined(STBI_FREE) && \ + (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) // ok -#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && \ + !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) // ok #else #error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." #endif #ifndef STBI_MALLOC -#define STBI_MALLOC(sz) malloc(sz) -#define STBI_REALLOC(p,newsz) realloc(p,newsz) -#define STBI_FREE(p) free(p) +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p, newsz) realloc(p, newsz) +#define STBI_FREE(p) free(p) #endif #ifndef STBI_REALLOC_SIZED -#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#define STBI_REALLOC_SIZED(p, oldsz, newsz) STBI_REALLOC(p, newsz) #endif // x86/x64 detection @@ -147,7 +152,8 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; #define STBI__X86_TARGET #endif -#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && \ + !defined(STBI_NO_SIMD) // gcc doesn't support sse2 intrinsics unless you compile with -msse2, // which in turn means it gets to use SSE2 everywhere. This is unfortunate, // but previous attempts to provide the SSE2 functions with runtime @@ -158,7 +164,8 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; #define STBI_NO_SIMD #endif -#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && \ + !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) // Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET // // 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the @@ -173,30 +180,31 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32) == 4 ? 1 : -1]; #define STBI_NO_SIMD #endif -#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#if !defined(STBI_NO_SIMD) && \ + (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) #define STBI_SSE2 #include #ifdef _MSC_VER -#if _MSC_VER >= 1400 // not VC6 +#if _MSC_VER >= 1400 // not VC6 #include // __cpuid static int stbi__cpuid3(void) { - int info[4]; - __cpuid(info, 1); - return info[3]; + int info[4]; + __cpuid(info, 1); + return info[3]; } #else static int stbi__cpuid3(void) { - int res; - __asm { + int res; + __asm { mov eax, 1 cpuid mov res, edx - } - return res; + } + return res; } #endif @@ -205,8 +213,8 @@ static int stbi__cpuid3(void) #if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) static int stbi__sse2_available(void) { - int info3 = stbi__cpuid3(); - return ((info3 >> 26) & 1) != 0; + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; } #endif @@ -216,10 +224,10 @@ static int stbi__sse2_available(void) #if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) static int stbi__sse2_available(void) { - // If we're even attempting to compile this on GCC/Clang, that means - // -msse2 is on, which means the compiler is allowed to use SSE2 - // instructions at will, and so are we. - return 1; + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; } #endif @@ -254,188 +262,198 @@ static int stbi__sse2_available(void) // stbi__context structure is our basic context used by all images, so it // contains all the IO context, plus some basic image information -typedef struct -{ - stbi__uint32 img_x, img_y; - int img_n, img_out_n; +typedef struct { + stbi__uint32 img_x, img_y; + int img_n, img_out_n; - stbi_io_callbacks io; - void* io_user_data; + stbi_io_callbacks io; + void *io_user_data; - int read_from_callbacks; - int buflen; - stbi_uc buffer_start[128]; - int callback_already_read; + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; - stbi_uc* img_buffer, * img_buffer_end; - stbi_uc* img_buffer_original, * img_buffer_original_end; + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; } stbi__context; -static void stbi__refill_buffer(stbi__context* s); +static void stbi__refill_buffer(stbi__context *s); // initialize a memory-decode context -static void stbi__start_mem(stbi__context* s, stbi_uc const* buffer, int len) +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) { - s->io.read = NULL; - s->read_from_callbacks = 0; - s->callback_already_read = 0; - s->img_buffer = s->img_buffer_original = (stbi_uc*)buffer; - s->img_buffer_end = s->img_buffer_original_end = (stbi_uc*)buffer + len; + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *)buffer; + s->img_buffer_end = s->img_buffer_original_end = + (stbi_uc *)buffer + len; } // initialize a callback-based context -static void stbi__start_callbacks(stbi__context* s, stbi_io_callbacks* c, void* user) +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, + void *user) { - s->io = *c; - s->io_user_data = user; - s->buflen = sizeof(s->buffer_start); - s->read_from_callbacks = 1; - s->callback_already_read = 0; - s->img_buffer = s->img_buffer_original = s->buffer_start; - stbi__refill_buffer(s); - s->img_buffer_original_end = s->img_buffer_end; + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; } #ifndef STBI_NO_STDIO -static int stbi__stdio_read(void* user, char* data, int size) +static int stbi__stdio_read(void *user, char *data, int size) { - return (int)fread(data, 1, size, (FILE*)user); + return (int)fread(data, 1, size, (FILE *)user); } -static void stbi__stdio_skip(void* user, int n) +static void stbi__stdio_skip(void *user, int n) { - int ch; - fseek((FILE*)user, n, SEEK_CUR); - ch = fgetc((FILE*)user); /* have to read a byte to reset feof()'s flag */ - if (ch != EOF) { - ungetc(ch, (FILE*)user); /* push byte back onto stream if valid. */ - } + int ch; + fseek((FILE *)user, n, SEEK_CUR); + ch = fgetc( + (FILE *)user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, + (FILE *)user); /* push byte back onto stream if valid. */ + } } -static int stbi__stdio_eof(void* user) +static int stbi__stdio_eof(void *user) { - return feof((FILE*)user) || ferror((FILE*)user); + return feof((FILE *)user) || ferror((FILE *)user); } -static stbi_io_callbacks stbi__stdio_callbacks = -{ - stbi__stdio_read, - stbi__stdio_skip, - stbi__stdio_eof, +static stbi_io_callbacks stbi__stdio_callbacks = { + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, }; -static void stbi__start_file(stbi__context* s, FILE* f) +static void stbi__start_file(stbi__context *s, FILE *f) { - stbi__start_callbacks(s, &stbi__stdio_callbacks, (void*)f); + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *)f); } //static void stop_file(stbi__context *s) { } #endif // !STBI_NO_STDIO -static void stbi__rewind(stbi__context* s) +static void stbi__rewind(stbi__context *s) { - // conceptually rewind SHOULD rewind to the beginning of the stream, - // but we just rewind to the beginning of the initial buffer, because - // we only use it after doing 'test', which only ever looks at at most 92 bytes - s->img_buffer = s->img_buffer_original; - s->img_buffer_end = s->img_buffer_original_end; + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; } -enum -{ - STBI_ORDER_RGB, - STBI_ORDER_BGR +enum { + STBI_ORDER_RGB, + STBI_ORDER_BGR }; -typedef struct -{ - int bits_per_channel; - int num_channels; - int channel_order; +typedef struct { + int bits_per_channel; + int num_channels; + int channel_order; } stbi__result_info; #ifndef STBI_NO_JPEG -static int stbi__jpeg_test(stbi__context* s); -static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PNG -static int stbi__png_test(stbi__context* s); -static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp); -static int stbi__png_is16(stbi__context* s); +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); #endif #ifndef STBI_NO_BMP -static int stbi__bmp_test(stbi__context* s); -static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__bmp_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_TGA -static int stbi__tga_test(stbi__context* s); -static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PSD -static int stbi__psd_test(stbi__context* s); -static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc); -static int stbi__psd_info(stbi__context* s, int* x, int* y, int* comp); -static int stbi__psd_is16(stbi__context* s); +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); #endif #ifndef STBI_NO_HDR -static int stbi__hdr_test(stbi__context* s); -static float* stbi__hdr_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__hdr_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PIC -static int stbi__pic_test(stbi__context* s); -static void* stbi__pic_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__pic_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_GIF -static int stbi__gif_test(stbi__context* s); -static void* stbi__gif_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static void* stbi__load_gif_main(stbi__context* s, int** delays, int* x, int* y, int* z, int* comp, int req_comp); -static int stbi__gif_info(stbi__context* s, int* x, int* y, int* comp); +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); #endif #ifndef STBI_NO_PNM -static int stbi__pnm_test(stbi__context* s); -static void* stbi__pnm_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri); -static int stbi__pnm_info(stbi__context* s, int* x, int* y, int* comp); -static int stbi__pnm_is16(stbi__context* s); +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); #endif static #ifdef STBI_THREAD_LOCAL -STBI_THREAD_LOCAL + STBI_THREAD_LOCAL #endif -const char* stbi__g_failure_reason; + const char *stbi__g_failure_reason; -STBIDEF const char* stbi_failure_reason(void) +STBIDEF const char *stbi_failure_reason(void) { - return stbi__g_failure_reason; + return stbi__g_failure_reason; } #ifndef STBI_NO_FAILURE_STRINGS -static int stbi__err(const char* str) +static int stbi__err(const char *str) { - stbi__g_failure_reason = str; - return 0; + stbi__g_failure_reason = str; + return 0; } #endif -static void* stbi__malloc(size_t size) +static void *stbi__malloc(size_t size) { - return STBI_MALLOC(size); + return STBI_MALLOC(size); } // stb_image uses ints pervasively, including for offset calculations. @@ -452,86 +470,104 @@ static void* stbi__malloc(size_t size) // negative terms are considered invalid. static int stbi__addsizes_valid(int a, int b) { - if (b < 0) return 0; - // now 0 <= b <= INT_MAX, hence also - // 0 <= INT_MAX - b <= INTMAX. - // And "a + b <= INT_MAX" (which might overflow) is the - // same as a <= INT_MAX - b (no overflow) - return a <= INT_MAX - b; + if (b < 0) + return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; } // returns 1 if the product is valid, 0 on overflow. // negative factors are considered invalid. static int stbi__mul2sizes_valid(int a, int b) { - if (a < 0 || b < 0) return 0; - if (b == 0) return 1; // mul-by-0 is always safe - // portable way to check for no overflows in a*b - return a <= INT_MAX / b; + if (a < 0 || b < 0) + return 0; + if (b == 0) + return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX / b; } -#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || \ + !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) // returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow static int stbi__mad2sizes_valid(int a, int b, int add) { - return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a * b, add); } #endif // returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow static int stbi__mad3sizes_valid(int a, int b, int c, int add) { - return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && - stbi__addsizes_valid(a * b * c, add); + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__addsizes_valid(a * b * c, add); } // returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) { - return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && - stbi__mul2sizes_valid(a * b * c, d) && stbi__addsizes_valid(a * b * c * d, add); + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a * b, c) && + stbi__mul2sizes_valid(a * b * c, d) && + stbi__addsizes_valid(a * b * c * d, add); } #endif -#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || \ + !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) // mallocs with size overflow checking -static void* stbi__malloc_mad2(int a, int b, int add) +static void *stbi__malloc_mad2(int a, int b, int add) { - if (!stbi__mad2sizes_valid(a, b, add)) return NULL; - return stbi__malloc(a * b + add); + if (!stbi__mad2sizes_valid(a, b, add)) + return NULL; + return stbi__malloc(a * b + add); } #endif -static void* stbi__malloc_mad3(int a, int b, int c, int add) +static void *stbi__malloc_mad3(int a, int b, int c, int add) { - if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; - return stbi__malloc(a * b * c + add); + if (!stbi__mad3sizes_valid(a, b, c, add)) + return NULL; + return stbi__malloc(a * b * c + add); } #if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) -static void* stbi__malloc_mad4(int a, int b, int c, int d, int add) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) { - if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; - return stbi__malloc(a * b * c * d + add); + if (!stbi__mad4sizes_valid(a, b, c, d, add)) + return NULL; + return stbi__malloc(a * b * c * d + add); } #endif // returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. static int stbi__addints_valid(int a, int b) { - if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow - if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. - return a <= INT_MAX - b; + if ((a >= 0) != (b >= 0)) + return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) + return a >= + INT_MIN - + b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; } // returns 1 if the product of two signed shorts is valid, 0 on overflow. static int stbi__mul2shorts_valid(short a, short b) { - if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow - if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX / b; // product is positive, so similar to mul2sizes_valid - if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN - return a >= SHRT_MIN / b; + if (b == 0 || b == -1) + return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) + return a <= + SHRT_MAX / + b; // product is positive, so similar to mul2sizes_valid + if (b < 0) + return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; } // stbi__err - error @@ -539,433 +575,512 @@ static int stbi__mul2shorts_valid(short a, short b) // stbi__errpuc - error returning pointer to unsigned char #ifdef STBI_NO_FAILURE_STRINGS -#define stbi__err(x,y) 0 +#define stbi__err(x, y) 0 #elif defined(STBI_FAILURE_USERMSG) -#define stbi__err(x,y) stbi__err(y) +#define stbi__err(x, y) stbi__err(y) #else -#define stbi__err(x,y) stbi__err(x) +#define stbi__err(x, y) stbi__err(x) #endif -#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) -#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpf(x, y) ((float *)(size_t)(stbi__err(x, y) ? NULL : NULL)) +#define stbi__errpuc(x, y) \ + ((unsigned char *)(size_t)(stbi__err(x, y) ? NULL : NULL)) -STBIDEF void stbi_image_free(void* retval_from_stbi_load) +STBIDEF void stbi_image_free(void *retval_from_stbi_load) { - STBI_FREE(retval_from_stbi_load); + STBI_FREE(retval_from_stbi_load); } #ifndef STBI_NO_LINEAR -static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp); +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); #endif #ifndef STBI_NO_HDR -static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp); +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); #endif static int stbi__vertically_flip_on_load_global = 0; STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) { - stbi__vertically_flip_on_load_global = flag_true_if_should_flip; + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; } #ifndef STBI_THREAD_LOCAL -#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global #else -static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, + stbi__vertically_flip_on_load_set; -STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +STBIDEF void +stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) { - stbi__vertically_flip_on_load_local = flag_true_if_should_flip; - stbi__vertically_flip_on_load_set = 1; + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; } -#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ - ? stbi__vertically_flip_on_load_local \ - : stbi__vertically_flip_on_load_global) +#define stbi__vertically_flip_on_load \ + (stbi__vertically_flip_on_load_set ? \ + stbi__vertically_flip_on_load_local : \ + stbi__vertically_flip_on_load_global) #endif // STBI_THREAD_LOCAL -static void* stbi__load_main(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri, int bpc) { - memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields - ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed - ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order - ri->num_channels = 0; + memset(ri, 0, + sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = + 8; // default is 8 so most paths don't have to be changed + ri->channel_order = + STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; - // test the formats with a very explicit header first (at least a FOURCC - // or distinctive magic number first) + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) #ifndef STBI_NO_PNG - if (stbi__png_test(s)) return stbi__png_load(s, x, y, comp, req_comp, ri); + if (stbi__png_test(s)) + return stbi__png_load(s, x, y, comp, req_comp, ri); #endif #ifndef STBI_NO_BMP - if (stbi__bmp_test(s)) return stbi__bmp_load(s, x, y, comp, req_comp, ri); + if (stbi__bmp_test(s)) + return stbi__bmp_load(s, x, y, comp, req_comp, ri); #endif #ifndef STBI_NO_GIF - if (stbi__gif_test(s)) return stbi__gif_load(s, x, y, comp, req_comp, ri); + if (stbi__gif_test(s)) + return stbi__gif_load(s, x, y, comp, req_comp, ri); #endif #ifndef STBI_NO_PSD - if (stbi__psd_test(s)) return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); + if (stbi__psd_test(s)) + return stbi__psd_load(s, x, y, comp, req_comp, ri, bpc); #else - STBI_NOTUSED(bpc); + STBI_NOTUSED(bpc); #endif #ifndef STBI_NO_PIC - if (stbi__pic_test(s)) return stbi__pic_load(s, x, y, comp, req_comp, ri); + if (stbi__pic_test(s)) + return stbi__pic_load(s, x, y, comp, req_comp, ri); #endif - // then the formats that can end up attempting to load with just 1 or 2 - // bytes matching expectations; these are prone to false positives, so - // try them later + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later #ifndef STBI_NO_JPEG - if (stbi__jpeg_test(s)) return stbi__jpeg_load(s, x, y, comp, req_comp, ri); + if (stbi__jpeg_test(s)) + return stbi__jpeg_load(s, x, y, comp, req_comp, ri); #endif #ifndef STBI_NO_PNM - if (stbi__pnm_test(s)) return stbi__pnm_load(s, x, y, comp, req_comp, ri); + if (stbi__pnm_test(s)) + return stbi__pnm_load(s, x, y, comp, req_comp, ri); #endif #ifndef STBI_NO_HDR - if (stbi__hdr_test(s)) { - float* hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); - return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); - } + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x, y, comp, req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, + req_comp ? req_comp : *comp); + } #endif #ifndef STBI_NO_TGA - // test tga last because it's a crappy test! - if (stbi__tga_test(s)) - return stbi__tga_load(s, x, y, comp, req_comp, ri); + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s, x, y, comp, req_comp, ri); #endif - return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); + return stbi__errpuc("unknown image type", + "Image not of any known type, or corrupt"); } -static stbi_uc* stbi__convert_16_to_8(stbi__uint16* orig, int w, int h, int channels) +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, + int channels) { - int i; - int img_len = w * h * channels; - stbi_uc* reduced; + int i; + int img_len = w * h * channels; + stbi_uc *reduced; - reduced = (stbi_uc*)stbi__malloc(img_len); - if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + reduced = (stbi_uc *)stbi__malloc(img_len); + if (reduced == NULL) + return stbi__errpuc("outofmem", "Out of memory"); - for (i = 0; i < img_len; ++i) - reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + for (i = 0; i < img_len; ++i) + reduced[i] = + (stbi_uc)((orig[i] >> 8) & + 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling - STBI_FREE(orig); - return reduced; + STBI_FREE(orig); + return reduced; } -static stbi__uint16* stbi__convert_8_to_16(stbi_uc* orig, int w, int h, int channels) +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, + int channels) { - int i; - int img_len = w * h * channels; - stbi__uint16* enlarged; + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; - enlarged = (stbi__uint16*)stbi__malloc(img_len * 2); - if (enlarged == NULL) return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); + enlarged = (stbi__uint16 *)stbi__malloc(img_len * 2); + if (enlarged == NULL) + return (stbi__uint16 *)stbi__errpuc("outofmem", + "Out of memory"); - for (i = 0; i < img_len; ++i) - enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + for (i = 0; i < img_len; ++i) + enlarged[i] = + (stbi__uint16)((orig[i] << 8) + + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff - STBI_FREE(orig); - return enlarged; + STBI_FREE(orig); + return enlarged; } -static void stbi__vertical_flip(void* image, int w, int h, int bytes_per_pixel) +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) { - int row; - size_t bytes_per_row = (size_t)w * bytes_per_pixel; - stbi_uc temp[2048]; - stbi_uc* bytes = (stbi_uc*)image; + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; - for (row = 0; row < (h >> 1); row++) { - stbi_uc* row0 = bytes + row * bytes_per_row; - stbi_uc* row1 = bytes + (h - row - 1) * bytes_per_row; - // swap row0 with row1 - size_t bytes_left = bytes_per_row; - while (bytes_left) { - size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); - memcpy(temp, row0, bytes_copy); - memcpy(row0, row1, bytes_copy); - memcpy(row1, temp, bytes_copy); - row0 += bytes_copy; - row1 += bytes_copy; - bytes_left -= bytes_copy; + for (row = 0; row < (h >> 1); row++) { + stbi_uc *row0 = bytes + row * bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1) * bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? + bytes_left : + sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } } - } } #ifndef STBI_NO_GIF -static void stbi__vertical_flip_slices(void* image, int w, int h, int z, int bytes_per_pixel) +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, + int bytes_per_pixel) { - int slice; - int slice_size = w * h * bytes_per_pixel; + int slice; + int slice_size = w * h * bytes_per_pixel; - stbi_uc* bytes = (stbi_uc*)image; - for (slice = 0; slice < z; ++slice) { - stbi__vertical_flip(bytes, w, h, bytes_per_pixel); - bytes += slice_size; - } + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } } #endif -static unsigned char* stbi__load_and_postprocess_8bit(stbi__context* s, int* x, int* y, int* comp, int req_comp) +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, + int *y, int *comp, + int req_comp) { - stbi__result_info ri; - void* result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); - if (result == NULL) - return NULL; + if (result == NULL) + return NULL; - // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. - STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); - if (ri.bits_per_channel != 8) { - result = stbi__convert_16_to_8((stbi__uint16*)result, *x, *y, req_comp == 0 ? *comp : req_comp); - ri.bits_per_channel = 8; - } + if (ri.bits_per_channel != 8) { + result = + stbi__convert_16_to_8((stbi__uint16 *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } - // @TODO: move stbi__convert_format to here + // @TODO: move stbi__convert_format to here - if (stbi__vertically_flip_on_load) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); - } + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } - return (unsigned char*)result; + return (unsigned char *)result; } -static stbi__uint16* stbi__load_and_postprocess_16bit(stbi__context* s, int* x, int* y, int* comp, int req_comp) +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, + int *y, int *comp, + int req_comp) { - stbi__result_info ri; - void* result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); - if (result == NULL) - return NULL; + if (result == NULL) + return NULL; - // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. - STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); - if (ri.bits_per_channel != 16) { - result = stbi__convert_8_to_16((stbi_uc*)result, *x, *y, req_comp == 0 ? *comp : req_comp); - ri.bits_per_channel = 16; - } + if (ri.bits_per_channel != 16) { + result = + stbi__convert_8_to_16((stbi_uc *)result, *x, *y, + req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } - // @TODO: move stbi__convert_format16 to here - // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision - if (stbi__vertically_flip_on_load) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); - } + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, + channels * sizeof(stbi__uint16)); + } - return (stbi__uint16*)result; + return (stbi__uint16 *)result; } #if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) -static void stbi__float_postprocess(float* result, int* x, int* y, int* comp, int req_comp) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, + int req_comp) { - if (stbi__vertically_flip_on_load && result != NULL) { - int channels = req_comp ? req_comp : *comp; - stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); - } + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } } #endif #ifndef STBI_NO_STDIO #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) -STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char* str, int cbmb, wchar_t* widestr, int cchwide); -STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t* widestr, int cchwide, char* str, int cbmb, const char* defchar, int* used_default); +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar( + unsigned int cp, unsigned long flags, const char *str, int cbmb, + wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte( + unsigned int cp, unsigned long flags, const wchar_t *widestr, + int cchwide, char *str, int cbmb, const char *defchar, + int *used_default); #endif #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) -STBIDEF int stbi_convert_wchar_to_utf8(char* buffer, size_t bufferlen, const wchar_t* input) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, + const wchar_t *input) { - return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int)bufferlen, NULL, NULL); + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, + (int)bufferlen, NULL, NULL); } #endif -static FILE* stbi__fopen(char const* filename, char const* mode) +static FILE *stbi__fopen(char const *filename, char const *mode) { - FILE* f; + FILE *f; #if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) - wchar_t wMode[64]; - wchar_t wFilename[1024]; - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename) / sizeof(*wFilename))) - return 0; + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, + wFilename, + sizeof(wFilename) / sizeof(*wFilename))) + return 0; - if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode) / sizeof(*wMode))) - return 0; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, + sizeof(wMode) / sizeof(*wMode))) + return 0; #if defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != _wfopen_s(&f, wFilename, wMode)) - f = 0; + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; #else - f = _wfopen(wFilename, wMode); + f = _wfopen(wFilename, wMode); #endif #elif defined(_MSC_VER) && _MSC_VER >= 1400 - if (0 != fopen_s(&f, filename, mode)) - f = 0; + if (0 != fopen_s(&f, filename, mode)) + f = 0; #else - f = fopen(filename, mode); + f = fopen(filename, mode); #endif - return f; + return f; } -STBIDEF stbi_uc* stbi_load(char const* filename, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, + int req_comp) { - FILE* f = stbi__fopen(filename, "rb"); - unsigned char* result; - if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); - result = stbi_load_from_file(f, x, y, comp, req_comp); - fclose(f); - return result; + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) + return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; } -STBIDEF void stbi_load_to_target(char const* filename, int* x, int* y, stbi_uc* target, int* comp, int req_comp) +STBIDEF void stbi_load_to_target(char const *filename, int *x, int *y, + stbi_uc *target, int *comp, int req_comp) { - FILE* f = stbi__fopen(filename, "rb"); - unsigned char* result; - if (!f) - { - *target = "can't fopen, Unable to open file"; return; - } - result = stbi_load_from_file(f, x, y, comp, req_comp); - fclose(f); + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) { + *target = "can't fopen, Unable to open file"; + return; + } + result = stbi_load_from_file(f, x, y, comp, req_comp); + fclose(f); } -STBIDEF stbi_uc* stbi_load_from_file(FILE* f, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, + int req_comp) { - unsigned char* result; - stbi__context s; - stbi__start_file(&s, f); - result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); - if (result) { - // need to 'unget' all the characters in the IO buffer - fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); - } - return result; + unsigned char *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; } -STBIDEF stbi__uint16* stbi_load_from_file_16(FILE* f, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, + int req_comp) { - stbi__uint16* result; - stbi__context s; - stbi__start_file(&s, f); - result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp); - if (result) { - // need to 'unget' all the characters in the IO buffer - fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); - } - return result; + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s, f); + result = stbi__load_and_postprocess_16bit(&s, x, y, comp, req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, -(int)(s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; } -STBIDEF stbi_us* stbi_load_16(char const* filename, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, + int req_comp) { - FILE* f = stbi__fopen(filename, "rb"); - stbi__uint16* result; - if (!f) return (stbi_us*)stbi__errpuc("can't fopen", "Unable to open file"); - result = stbi_load_from_file_16(f, x, y, comp, req_comp); - fclose(f); - return result; + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) + return (stbi_us *)stbi__errpuc("can't fopen", + "Unable to open file"); + result = stbi_load_from_file_16(f, x, y, comp, req_comp); + fclose(f); + return result; } #endif //!STBI_NO_STDIO -STBIDEF stbi_us* stbi_load_16_from_memory(stbi_uc const* buffer, int len, int* x, int* y, int* channels_in_file, int desired_channels) +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, + int *x, int *y, int *channels_in_file, + int desired_channels) { - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, + desired_channels); } -STBIDEF stbi_us* stbi_load_16_from_callbacks(stbi_io_callbacks const* clbk, void* user, int* x, int* y, int* channels_in_file, int desired_channels) +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, + void *user, int *x, int *y, + int *channels_in_file, + int desired_channels) { - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)clbk, user); - return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, desired_channels); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s, x, y, channels_in_file, + desired_channels); } -STBIDEF stbi_uc* stbi_load_from_memory(stbi_uc const* buffer, int len, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, + int *y, int *comp, int req_comp) { - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); } -STBIDEF stbi_uc* stbi_load_from_callbacks(stbi_io_callbacks const* clbk, void* user, int* x, int* y, int* comp, int req_comp) +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, + void *user, int *x, int *y, int *comp, + int req_comp) { - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)clbk, user); - return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_8bit(&s, x, y, comp, req_comp); } #ifndef STBI_NO_GIF -STBIDEF stbi_uc* stbi_load_gif_from_memory(stbi_uc const* buffer, int len, int** delays, int* x, int* y, int* z, int* comp, int req_comp) +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, + int **delays, int *x, int *y, int *z, + int *comp, int req_comp) { - unsigned char* result; - stbi__context s; - stbi__start_mem(&s, buffer, len); + unsigned char *result; + stbi__context s; + stbi__start_mem(&s, buffer, len); - result = (unsigned char*)stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); - if (stbi__vertically_flip_on_load) { - stbi__vertical_flip_slices(result, *x, *y, *z, *comp); - } + result = (unsigned char *)stbi__load_gif_main(&s, delays, x, y, z, comp, + req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices(result, *x, *y, *z, *comp); + } - return result; + return result; } #endif #ifndef STBI_NO_LINEAR -static float* stbi__loadf_main(stbi__context* s, int* x, int* y, int* comp, int req_comp) +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, + int req_comp) { - unsigned char* data; + unsigned char *data; #ifndef STBI_NO_HDR - if (stbi__hdr_test(s)) { - stbi__result_info ri; - float* hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri); - if (hdr_data) - stbi__float_postprocess(hdr_data, x, y, comp, req_comp); - return hdr_data; - } + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s, x, y, comp, req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data, x, y, comp, req_comp); + return hdr_data; + } #endif - data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); - if (data) - return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); - return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, + req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", + "Image not of any known type, or corrupt"); } -STBIDEF float* stbi_loadf_from_memory(stbi_uc const* buffer, int len, int* x, int* y, int* comp, int req_comp) +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, + int *y, int *comp, int req_comp) { - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__loadf_main(&s, x, y, comp, req_comp); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__loadf_main(&s, x, y, comp, req_comp); } -STBIDEF float* stbi_loadf_from_callbacks(stbi_io_callbacks const* clbk, void* user, int* x, int* y, int* comp, int req_comp) +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, + void *user, int *x, int *y, int *comp, + int req_comp) { - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)clbk, user); - return stbi__loadf_main(&s, x, y, comp, req_comp); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__loadf_main(&s, x, y, comp, req_comp); } #ifndef STBI_NO_STDIO -STBIDEF float* stbi_loadf(char const* filename, int* x, int* y, int* comp, int req_comp) +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, + int req_comp) { - float* result; - FILE* f = stbi__fopen(filename, "rb"); - if (!f) return stbi__errpf("can't fopen", "Unable to open file"); - result = stbi_loadf_from_file(f, x, y, comp, req_comp); - fclose(f); - return result; + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) + return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f, x, y, comp, req_comp); + fclose(f); + return result; } -STBIDEF float* stbi_loadf_from_file(FILE* f, int* x, int* y, int* comp, int req_comp) +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, + int req_comp) { - stbi__context s; - stbi__start_file(&s, f); - return stbi__loadf_main(&s, x, y, comp, req_comp); + stbi__context s; + stbi__start_file(&s, f); + return stbi__loadf_main(&s, x, y, comp, req_comp); } #endif // !STBI_NO_STDIO @@ -975,223 +1090,247 @@ STBIDEF float* stbi_loadf_from_file(FILE* f, int* x, int* y, int* comp, int req_ // defined, for API simplicity; if STBI_NO_LINEAR is defined, it always // reports false! -STBIDEF int stbi_is_hdr_from_memory(stbi_uc const* buffer, int len) +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) { #ifndef STBI_NO_HDR - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__hdr_test(&s); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__hdr_test(&s); #else - STBI_NOTUSED(buffer); - STBI_NOTUSED(len); - return 0; + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; #endif } #ifndef STBI_NO_STDIO -STBIDEF int stbi_is_hdr(char const* filename) +STBIDEF int stbi_is_hdr(char const *filename) { - FILE* f = stbi__fopen(filename, "rb"); - int result = 0; - if (f) { - result = stbi_is_hdr_from_file(f); - fclose(f); - } - return result; + FILE *f = stbi__fopen(filename, "rb"); + int result = 0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; } -STBIDEF int stbi_is_hdr_from_file(FILE* f) +STBIDEF int stbi_is_hdr_from_file(FILE *f) { #ifndef STBI_NO_HDR - long pos = ftell(f); - int res; - stbi__context s; - stbi__start_file(&s, f); - res = stbi__hdr_test(&s); - fseek(f, pos, SEEK_SET); - return res; + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s, f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; #else - STBI_NOTUSED(f); - return 0; + STBI_NOTUSED(f); + return 0; #endif } #endif // !STBI_NO_STDIO -STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const* clbk, void* user) +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, + void *user) { #ifndef STBI_NO_HDR - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)clbk, user); - return stbi__hdr_test(&s); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__hdr_test(&s); #else - STBI_NOTUSED(clbk); - STBI_NOTUSED(user); - return 0; + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; #endif } #ifndef STBI_NO_LINEAR static float stbi__l2h_gamma = 2.2f, stbi__l2h_scale = 1.0f; -STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } -STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) +{ + stbi__l2h_gamma = gamma; +} +STBIDEF void stbi_ldr_to_hdr_scale(float scale) +{ + stbi__l2h_scale = scale; +} #endif static float stbi__h2l_gamma_i = 1.0f / 2.2f, stbi__h2l_scale_i = 1.0f; -STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1 / gamma; } -STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1 / scale; } +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) +{ + stbi__h2l_gamma_i = 1 / gamma; +} +STBIDEF void stbi_hdr_to_ldr_scale(float scale) +{ + stbi__h2l_scale_i = 1 / scale; +} ////////////////////////////////////////////////////////////////////////////// // // Common code used by all image loaders // -enum -{ - STBI__SCAN_load = 0, - STBI__SCAN_type, - STBI__SCAN_header +enum { + STBI__SCAN_load = 0, + STBI__SCAN_type, + STBI__SCAN_header }; -static void stbi__refill_buffer(stbi__context* s) +static void stbi__refill_buffer(stbi__context *s) { - int n = (s->io.read)(s->io_user_data, (char*)s->buffer_start, s->buflen); - s->callback_already_read += (int)(s->img_buffer - s->img_buffer_original); - if (n == 0) { - // at end of file, treat same as if from memory, but need to handle case - // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file - s->read_from_callbacks = 0; - s->img_buffer = s->buffer_start; - s->img_buffer_end = s->buffer_start + 1; - *s->img_buffer = 0; - } - else { - s->img_buffer = s->buffer_start; - s->img_buffer_end = s->buffer_start + n; - } -} - -stbi_inline static stbi_uc stbi__get8(stbi__context* s) -{ - if (s->img_buffer < s->img_buffer_end) - return *s->img_buffer++; - if (s->read_from_callbacks) { - stbi__refill_buffer(s); - return *s->img_buffer++; - } - return 0; -} - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) -// nothing -#else -stbi_inline static int stbi__at_eof(stbi__context* s) -{ - if (s->io.read) { - if (!(s->io.eof)(s->io_user_data)) return 0; - // if feof() is true, check if buffer = end - // special case: we've only got the special 0 character at the end - if (s->read_from_callbacks == 0) return 1; - } - - return s->img_buffer >= s->img_buffer_end; -} -#endif - -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) -// nothing -#else -static void stbi__skip(stbi__context* s, int n) -{ - if (n == 0) return; // already there! - if (n < 0) { - s->img_buffer = s->img_buffer_end; - return; - } - if (s->io.read) { - int blen = (int)(s->img_buffer_end - s->img_buffer); - if (blen < n) { - s->img_buffer = s->img_buffer_end; - (s->io.skip)(s->io_user_data, n - blen); - return; + int n = (s->io.read)(s->io_user_data, (char *)s->buffer_start, + s->buflen); + s->callback_already_read += + (int)(s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + 1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; } - } - s->img_buffer += n; } -#endif -#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) -// nothing -#else -static int stbi__getn(stbi__context* s, stbi_uc* buffer, int n) +stbi_inline static stbi_uc stbi__get8(stbi__context *s) { - if (s->io.read) { - int blen = (int)(s->img_buffer_end - s->img_buffer); - if (blen < n) { - int res, count; - - memcpy(buffer, s->img_buffer, blen); - - count = (s->io.read)(s->io_user_data, (char*)buffer + blen, n - blen); - res = (count == (n - blen)); - s->img_buffer = s->img_buffer_end; - return res; + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; } - } - - if (s->img_buffer + n <= s->img_buffer_end) { - memcpy(buffer, s->img_buffer, n); - s->img_buffer += n; - return 1; - } - else return 0; } -#endif -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && \ + defined(STBI_NO_PNM) // nothing #else -static int stbi__get16be(stbi__context* s) +stbi_inline static int stbi__at_eof(stbi__context *s) { - int z = stbi__get8(s); - return (z << 8) + stbi__get8(s); + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) + return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) + return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && \ + defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) + return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && \ + defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int)(s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, + (char *)buffer + blen, n - blen); + res = (count == (n - blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer + n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && \ + defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); } #endif #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) // nothing #else -static stbi__uint32 stbi__get32be(stbi__context* s) +static stbi__uint32 stbi__get32be(stbi__context *s) { - stbi__uint32 z = stbi__get16be(s); - return (z << 16) + stbi__get16be(s); + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); } #endif #if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) // nothing #else -static int stbi__get16le(stbi__context* s) +static int stbi__get16le(stbi__context *s) { - int z = stbi__get8(s); - return z + (stbi__get8(s) << 8); + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); } #endif #ifndef STBI_NO_BMP -static stbi__uint32 stbi__get32le(stbi__context* s) +static stbi__uint32 stbi__get32le(stbi__context *s) { - stbi__uint32 z = stbi__get16le(s); - z += (stbi__uint32)stbi__get16le(s) << 16; - return z; + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; } #endif -#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings +#define STBI__BYTECAST(x) \ + ((stbi_uc)((x) & 255)) // truncate int to byte without warnings -#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && \ + defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && \ + defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) // nothing #else ////////////////////////////////////////////////////////////////////////////// @@ -1207,55 +1346,129 @@ static stbi__uint32 stbi__get32le(stbi__context* s) static stbi_uc stbi__compute_y(int r, int g, int b) { - return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); + return (stbi_uc)(((r * 77) + (g * 150) + (29 * b)) >> 8); } #endif -#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && \ + defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && \ + defined(STBI_NO_PIC) && defined(STBI_NO_PNM) // nothing #else -static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int req_comp, unsigned int x, unsigned int y) +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, + int req_comp, unsigned int x, + unsigned int y) { - int i, j; - unsigned char* good; + int i, j; + unsigned char *good; - if (req_comp == img_n) return data; - STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); - good = (unsigned char*)stbi__malloc_mad3(req_comp, x, y, 0); - if (good == NULL) { - STBI_FREE(data); - return stbi__errpuc("outofmem", "Out of memory"); - } - - for (j = 0; j < (int)y; ++j) { - unsigned char* src = data + j * x * img_n; - unsigned char* dest = good + j * x * req_comp; - -#define STBI__COMBO(a,b) ((a)*8+(b)) -#define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) - // convert source image with img_n components to one with req_comp components; - // avoid switch per pixel, so use switch per scanline and massive macros - switch (STBI__COMBO(img_n, req_comp)) { - STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 255; } break; - STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; - STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 255; } break; - STBI__CASE(2, 1) { dest[0] = src[0]; } break; - STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; - STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; - STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 255; } break; - STBI__CASE(3, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; - STBI__CASE(3, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = 255; } break; - STBI__CASE(4, 1) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); } break; - STBI__CASE(4, 2) { dest[0] = stbi__compute_y(src[0], src[1], src[2]); dest[1] = src[3]; } break; - STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; - default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + good = (unsigned char *)stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); } -#undef STBI__CASE - } - STBI_FREE(data); - return good; + for (j = 0; j < (int)y; ++j) { + unsigned char *src = data + j * x * img_n; + unsigned char *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 255; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 255; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 255; + } + break; + STBI__CASE(3, 1) + { + dest[0] = + stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = + stbi__compute_y(src[0], src[1], src[2]); + dest[1] = 255; + } + break; + STBI__CASE(4, 1) + { + dest[0] = + stbi__compute_y(src[0], src[1], src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = + stbi__compute_y(src[0], src[1], src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return stbi__errpuc("unsupported", + "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; } #endif @@ -1264,110 +1477,208 @@ static unsigned char* stbi__convert_format(unsigned char* data, int img_n, int r #else static stbi__uint16 stbi__compute_y_16(int r, int g, int b) { - return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); + return (stbi__uint16)(((r * 77) + (g * 150) + (29 * b)) >> 8); } #endif #if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) // nothing #else -static stbi__uint16* stbi__convert_format16(stbi__uint16* data, int img_n, int req_comp, unsigned int x, unsigned int y) +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, + int req_comp, unsigned int x, + unsigned int y) { - int i, j; - stbi__uint16* good; + int i, j; + stbi__uint16 *good; - if (req_comp == img_n) return data; - STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + if (req_comp == img_n) + return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); - good = (stbi__uint16*)stbi__malloc(req_comp * x * y * 2); - if (good == NULL) { - STBI_FREE(data); - return (stbi__uint16*)stbi__errpuc("outofmem", "Out of memory"); - } - - for (j = 0; j < (int)y; ++j) { - stbi__uint16* src = data + j * x * img_n; - stbi__uint16* dest = good + j * x * req_comp; - -#define STBI__COMBO(a,b) ((a)*8+(b)) -#define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) - // convert source image with img_n components to one with req_comp components; - // avoid switch per pixel, so use switch per scanline and massive macros - switch (STBI__COMBO(img_n, req_comp)) { - STBI__CASE(1, 2) { dest[0] = src[0]; dest[1] = 0xffff; } break; - STBI__CASE(1, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; - STBI__CASE(1, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = 0xffff; } break; - STBI__CASE(2, 1) { dest[0] = src[0]; } break; - STBI__CASE(2, 3) { dest[0] = dest[1] = dest[2] = src[0]; } break; - STBI__CASE(2, 4) { dest[0] = dest[1] = dest[2] = src[0]; dest[3] = src[1]; } break; - STBI__CASE(3, 4) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; dest[3] = 0xffff; } break; - STBI__CASE(3, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; - STBI__CASE(3, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = 0xffff; } break; - STBI__CASE(4, 1) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); } break; - STBI__CASE(4, 2) { dest[0] = stbi__compute_y_16(src[0], src[1], src[2]); dest[1] = src[3]; } break; - STBI__CASE(4, 3) { dest[0] = src[0]; dest[1] = src[1]; dest[2] = src[2]; } break; - default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*)stbi__errpuc("unsupported", "Unsupported format conversion"); + good = (stbi__uint16 *)stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *)stbi__errpuc("outofmem", + "Out of memory"); } -#undef STBI__CASE - } - STBI_FREE(data); - return good; + for (j = 0; j < (int)y; ++j) { + stbi__uint16 *src = data + j * x * img_n; + stbi__uint16 *dest = good + j * x * req_comp; + +#define STBI__COMBO(a, b) ((a) * 8 + (b)) +#define STBI__CASE(a, b) \ + case STBI__COMBO(a, b): \ + for (i = x - 1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1, 2) + { + dest[0] = src[0]; + dest[1] = 0xffff; + } + break; + STBI__CASE(1, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(1, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = 0xffff; + } + break; + STBI__CASE(2, 1) + { + dest[0] = src[0]; + } + break; + STBI__CASE(2, 3) + { + dest[0] = dest[1] = dest[2] = src[0]; + } + break; + STBI__CASE(2, 4) + { + dest[0] = dest[1] = dest[2] = src[0]; + dest[3] = src[1]; + } + break; + STBI__CASE(3, 4) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = 0xffff; + } + break; + STBI__CASE(3, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], + src[2]); + } + break; + STBI__CASE(3, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], + src[2]); + dest[1] = 0xffff; + } + break; + STBI__CASE(4, 1) + { + dest[0] = stbi__compute_y_16(src[0], src[1], + src[2]); + } + break; + STBI__CASE(4, 2) + { + dest[0] = stbi__compute_y_16(src[0], src[1], + src[2]); + dest[1] = src[3]; + } + break; + STBI__CASE(4, 3) + { + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + } + break; + default: + STBI_ASSERT(0); + STBI_FREE(data); + STBI_FREE(good); + return (stbi__uint16 *)stbi__errpuc( + "unsupported", "Unsupported format conversion"); + } +#undef STBI__CASE + } + + STBI_FREE(data); + return good; } #endif #ifndef STBI_NO_LINEAR -static float* stbi__ldr_to_hdr(stbi_uc* data, int x, int y, int comp) +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) { - int i, k, n; - float* output; - if (!data) return NULL; - output = (float*)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); - if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } - // compute number of non-alpha components - if (comp & 1) n = comp; else n = comp - 1; - for (i = 0; i < x * y; ++i) { - for (k = 0; k < n; ++k) { - output[i * comp + k] = (float)(pow(data[i * comp + k] / 255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + int i, k, n; + float *output; + if (!data) + return NULL; + output = (float *)stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpf("outofmem", "Out of memory"); } - } - if (n < comp) { + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; for (i = 0; i < x * y; ++i) { - output[i * comp + n] = data[i * comp + n] / 255.0f; + for (k = 0; k < n; ++k) { + output[i * comp + k] = + (float)(pow(data[i * comp + k] / 255.0f, + stbi__l2h_gamma) * + stbi__l2h_scale); + } } - } - STBI_FREE(data); - return output; + if (n < comp) { + for (i = 0; i < x * y; ++i) { + output[i * comp + n] = data[i * comp + n] / 255.0f; + } + } + STBI_FREE(data); + return output; } #endif #ifndef STBI_NO_HDR -#define stbi__float2int(x) ((int) (x)) -static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) +#define stbi__float2int(x) ((int)(x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) { - int i, k, n; - stbi_uc* output; - if (!data) return NULL; - output = (stbi_uc*)stbi__malloc_mad3(x, y, comp, 0); - if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } - // compute number of non-alpha components - if (comp & 1) n = comp; else n = comp - 1; - for (i = 0; i < x * y; ++i) { - for (k = 0; k < n; ++k) { - float z = (float)pow(data[i * comp + k] * stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; - if (z < 0) z = 0; - if (z > 255) z = 255; - output[i * comp + k] = (stbi_uc)stbi__float2int(z); + int i, k, n; + stbi_uc *output; + if (!data) + return NULL; + output = (stbi_uc *)stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); } - if (k < comp) { - float z = data[i * comp + k] * 255 + 0.5f; - if (z < 0) z = 0; - if (z > 255) z = 255; - output[i * comp + k] = (stbi_uc)stbi__float2int(z); + // compute number of non-alpha components + if (comp & 1) + n = comp; + else + n = comp - 1; + for (i = 0; i < x * y; ++i) { + for (k = 0; k < n; ++k) { + float z = (float)pow(data[i * comp + k] * + stbi__h2l_scale_i, + stbi__h2l_gamma_i) * + 255 + + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } + if (k < comp) { + float z = data[i * comp + k] * 255 + 0.5f; + if (z < 0) + z = 0; + if (z > 255) + z = 255; + output[i * comp + k] = (stbi_uc)stbi__float2int(z); + } } - } - STBI_FREE(data); - return output; + STBI_FREE(data); + return output; } #endif @@ -1395,774 +1706,865 @@ static stbi_uc* stbi__hdr_to_ldr(float* data, int x, int y, int comp) #ifndef STBI_NO_JPEG // huffman decoding acceleration -#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache -typedef struct -{ - stbi_uc fast[1 << FAST_BITS]; - // weirdly, repacking this into AoS is a 10% speed loss, instead of a win - stbi__uint16 code[256]; - stbi_uc values[256]; - stbi_uc size[257]; - unsigned int maxcode[18]; - int delta[17]; // old 'firstsymbol' - old 'firstcode' +typedef struct { + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' } stbi__huffman; -typedef struct -{ - stbi__context* s; - stbi__huffman huff_dc[4]; - stbi__huffman huff_ac[4]; - stbi__uint16 dequant[4][64]; - stbi__int16 fast_ac[4][1 << FAST_BITS]; +typedef struct { + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; - // sizes for components, interleaved MCUs - int img_h_max, img_v_max; - int img_mcu_x, img_mcu_y; - int img_mcu_w, img_mcu_h; + // sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; - // definition of jpeg image component - struct - { - int id; - int h, v; - int tq; - int hd, ha; - int dc_pred; + // definition of jpeg image component + struct { + int id; + int h, v; + int tq; + int hd, ha; + int dc_pred; - int x, y, w2, h2; - stbi_uc* data; - void* raw_data, * raw_coeff; - stbi_uc* linebuf; - short* coeff; // progressive only - int coeff_w, coeff_h; // number of 8x8 coefficient blocks - } img_comp[4]; + int x, y, w2, h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; - stbi__uint32 code_buffer; // jpeg entropy-coded buffer - int code_bits; // number of valid bits - unsigned char marker; // marker seen while filling entropy buffer - int nomore; // flag if we saw a marker so must stop + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop - int progressive; - int spec_start; - int spec_end; - int succ_high; - int succ_low; - int eob_run; - int jfif; - int app14_color_transform; // Adobe APP14 tag - int rgb; + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; - int scan_n, order[4]; - int restart_interval, todo; + int scan_n, order[4]; + int restart_interval, todo; - // kernels - void (*idct_block_kernel)(stbi_uc* out, int out_stride, short data[64]); - void (*YCbCr_to_RGB_kernel)(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step); - stbi_uc* (*resample_row_hv_2_kernel)(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs); + // kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, + const stbi_uc *pcb, const stbi_uc *pcr, + int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs); } stbi__jpeg; -static int stbi__build_huffman(stbi__huffman* h, int* count) +static int stbi__build_huffman(stbi__huffman *h, int *count) { - int i, j, k = 0; - unsigned int code; - // build size list for each symbol (from JPEG spec) - for (i = 0; i < 16; ++i) { - for (j = 0; j < count[i]; ++j) { - h->size[k++] = (stbi_uc)(i + 1); - if (k >= 257) return stbi__err("bad size list", "Corrupt JPEG"); + int i, j, k = 0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i = 0; i < 16; ++i) { + for (j = 0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc)(i + 1); + if (k >= 257) + return stbi__err("bad size list", + "Corrupt JPEG"); + } } - } - h->size[k] = 0; + h->size[k] = 0; - // compute actual symbols (from jpeg spec) - code = 0; - k = 0; - for (j = 1; j <= 16; ++j) { - // compute delta to add to code to compute symbol id - h->delta[j] = k - code; - if (h->size[k] == j) { - while (h->size[k] == j) - h->code[k++] = (stbi__uint16)(code++); - if (code - 1 >= (1u << j)) return stbi__err("bad code lengths", "Corrupt JPEG"); + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for (j = 1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16)(code++); + if (code - 1 >= (1u << j)) + return stbi__err("bad code lengths", + "Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16 - j); + code <<= 1; } - // compute largest code + 1 for this size, preshifted as needed later - h->maxcode[j] = code << (16 - j); - code <<= 1; - } - h->maxcode[j] = 0xffffffff; + h->maxcode[j] = 0xffffffff; - // build non-spec acceleration table; 255 is flag for not-accelerated - memset(h->fast, 255, 1 << FAST_BITS); - for (i = 0; i < k; ++i) { - int s = h->size[i]; - if (s <= FAST_BITS) { - int c = h->code[i] << (FAST_BITS - s); - int m = 1 << (FAST_BITS - s); - for (j = 0; j < m; ++j) { - h->fast[c + j] = (stbi_uc)i; - } + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i = 0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS - s); + int m = 1 << (FAST_BITS - s); + for (j = 0; j < m; ++j) { + h->fast[c + j] = (stbi_uc)i; + } + } } - } - return 1; + return 1; } // build a table that decodes both magnitude and value of small ACs in // one go. -static void stbi__build_fast_ac(stbi__int16* fast_ac, stbi__huffman* h) +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) { - int i; - for (i = 0; i < (1 << FAST_BITS); ++i) { - stbi_uc fast = h->fast[i]; - fast_ac[i] = 0; - if (fast < 255) { - int rs = h->values[fast]; - int run = (rs >> 4) & 15; - int magbits = rs & 15; - int len = h->size[fast]; + int i; + for (i = 0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; - if (magbits && len + magbits <= FAST_BITS) { - // magnitude code followed by receive_extend code - int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); - int m = 1 << (magbits - 1); - if (k < m) k += (~0U << magbits) + 1; - // if the result is small enough, we can fit it in fast_ac table - if (k >= -128 && k <= 127) - fast_ac[i] = (stbi__int16)((k * 256) + (run * 16) + (len + magbits)); - } + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> + (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) + k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = + (stbi__int16)((k * 256) + + (run * 16) + + (len + magbits)); + } + } } - } } -static void stbi__grow_buffer_unsafe(stbi__jpeg* j) +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) { - do { - unsigned int b = j->nomore ? 0 : stbi__get8(j->s); - if (b == 0xff) { - int c = stbi__get8(j->s); - while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes - if (c != 0) { - j->marker = (unsigned char)c; - j->nomore = 1; - return; - } - } - j->code_buffer |= b << (24 - j->code_bits); - j->code_bits += 8; - } while (j->code_bits <= 24); + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) + c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char)c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); } // (1 << n) - 1 -static const stbi__uint32 stbi__bmask[17] = { 0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535 }; +static const stbi__uint32 stbi__bmask[17] = { 0, 1, 3, 7, 15, + 31, 63, 127, 255, 511, + 1023, 2047, 4095, 8191, 16383, + 32767, 65535 }; // decode a jpeg huffman value from the bitstream -stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg* j, stbi__huffman* h) +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) { - unsigned int temp; - int c, k; + unsigned int temp; + int c, k; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); - // look at the top FAST_BITS and determine what symbol ID it is, - // if the code is <= FAST_BITS - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); - k = h->fast[c]; - if (k < 255) { - int s = h->size[k]; - if (s > j->code_bits) - return -1; - j->code_buffer <<= s; - j->code_bits -= s; - return h->values[k]; - } + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } - // naive test is to shift the code_buffer down so k bits are - // valid, then test against maxcode. To speed this up, we've - // preshifted maxcode left so that it has (16-k) 0s at the - // end; in other words, regardless of the number of bits, it - // wants to be compared against something shifted to have 16; - // that way we don't need to shift inside the loop. - temp = j->code_buffer >> 16; - for (k = FAST_BITS + 1; ; ++k) - if (temp < h->maxcode[k]) - break; - if (k == 17) { - // error! code not found - j->code_bits -= 16; - return -1; - } + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k = FAST_BITS + 1;; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } - if (k > j->code_bits) - return -1; + if (k > j->code_bits) + return -1; - // convert the huffman code to the symbol id - c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; - if (c < 0 || c >= 256) // symbol id out of bounds! - return -1; - STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if (c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & + stbi__bmask[h->size[c]]) == h->code[c]); - // convert the id to a symbol - j->code_bits -= k; - j->code_buffer <<= k; - return h->values[c]; + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; } // bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); - if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + unsigned int k; + int sgn; + if (j->code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing - sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) - k = stbi_lrot(j->code_buffer, n); - j->code_buffer = k & ~stbi__bmask[n]; - k &= stbi__bmask[n]; - j->code_bits -= n; - return k + (stbi__jbias[n] & (sgn - 1)); + sgn = j->code_buffer >> + 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); } // get some unsigned bits -stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg* j, int n) +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) { - unsigned int k; - if (j->code_bits < n) stbi__grow_buffer_unsafe(j); - if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing - k = stbi_lrot(j->code_buffer, n); - j->code_buffer = k & ~stbi__bmask[n]; - k &= stbi__bmask[n]; - j->code_bits -= n; - return k; + unsigned int k; + if (j->code_bits < n) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; } -stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg* j) +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) { - unsigned int k; - if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); - if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing - k = j->code_buffer; - j->code_buffer <<= 1; - --j->code_bits; - return k & 0x80000000; + unsigned int k; + if (j->code_bits < 1) + stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) + return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; } // given a value that's at position X in the zigzag stream, // where does it appear in the 8x8 matrix coded as row-major? -static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = -{ - 0, 1, 8, 16, 9, 2, 3, 10, - 17, 24, 32, 25, 18, 11, 4, 5, - 12, 19, 26, 33, 40, 48, 41, 34, - 27, 20, 13, 6, 7, 14, 21, 28, - 35, 42, 49, 56, 57, 50, 43, 36, - 29, 22, 15, 23, 30, 37, 44, 51, - 58, 59, 52, 45, 38, 31, 39, 46, - 53, 60, 61, 54, 47, 55, 62, 63, - // let corrupt input sample past end - 63, 63, 63, 63, 63, 63, 63, 63, - 63, 63, 63, 63, 63, 63, 63 +static const stbi_uc stbi__jpeg_dezigzag[64 + 15] = { + 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, + 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, + 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 }; // decode one 64-entry block-- -static int stbi__jpeg_decode_block(stbi__jpeg* j, short data[64], stbi__huffman* hdc, stbi__huffman* hac, stbi__int16* fac, int b, stbi__uint16* dequant) +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], + stbi__huffman *hdc, stbi__huffman *hac, + stbi__int16 *fac, int b, + stbi__uint16 *dequant) { - int diff, dc, k; - int t; + int diff, dc, k; + int t; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - t = stbi__jpeg_huff_decode(j, hdc); - if (t < 0 || t > 15) return stbi__err("bad huffman code", "Corrupt JPEG"); - - // 0 all the ac values now so we can do it 32-bits at a time - memset(data, 0, 64 * sizeof(data[0])); - - diff = t ? stbi__extend_receive(j, t) : 0; - if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); - dc = j->img_comp[b].dc_pred + diff; - j->img_comp[b].dc_pred = dc; - if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - data[0] = (short)(dc * dequant[0]); - - // decode AC components, see JPEG spec - k = 1; - do { - unsigned int zig; - int c, r, s; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); - r = fac[c]; - if (r) { // fast-AC path - k += (r >> 4) & 15; // run - s = r & 15; // combined length - if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); - j->code_buffer <<= s; - j->code_bits -= s; - // decode into unzigzag'd location - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short)((r >> 8) * dequant[zig]); - } - else { - int rs = stbi__jpeg_huff_decode(j, hac); - if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (rs != 0xf0) break; // end block - k += 16; - } - else { - k += r; - // decode into unzigzag'd location - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short)(stbi__extend_receive(j, s) * dequant[zig]); - } - } - } while (k < 64); - return 1; -} - -static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg* j, short data[64], stbi__huffman* hdc, int b) -{ - int diff, dc; - int t; - if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - - if (j->succ_high == 0) { - // first scan for DC coefficient, must be first - memset(data, 0, 64 * sizeof(data[0])); // 0 all the ac values now + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); t = stbi__jpeg_huff_decode(j, hdc); - if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - diff = t ? stbi__extend_receive(j, t) : 0; + if (t < 0 || t > 15) + return stbi__err("bad huffman code", "Corrupt JPEG"); - if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + // 0 all the ac values now so we can do it 32-bits at a time + memset(data, 0, 64 * sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); dc = j->img_comp[b].dc_pred + diff; j->img_comp[b].dc_pred = dc; - if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - data[0] = (short)(dc * (1 << j->succ_low)); - } - else { - // refinement scan for DC coefficient - if (stbi__jpeg_get_bit(j)) - data[0] += (short)(1 << j->succ_low); - } - return 1; + if (!stbi__mul2shorts_valid(dc, dequant[0])) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short)(dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & + ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err( + "bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", + "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) + break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)(stbi__extend_receive(j, s) * + dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], + stbi__huffman *hdc, int b) +{ + int diff, dc; + int t; + if (j->spec_end != 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data, 0, + 64 * sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) + return stbi__err("can't merge dc and ac", + "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) + return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) + return stbi__err("can't merge dc and ac", + "Corrupt JPEG"); + data[0] = (short)(dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short)(1 << j->succ_low); + } + return 1; } // @OPTIMIZE: store non-zigzagged during the decode passes, // and only de-zigzag when dequantizing -static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg* j, short data[64], stbi__huffman* hac, stbi__int16* fac) +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], + stbi__huffman *hac, stbi__int16 *fac) { - int k; - if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + int k; + if (j->spec_start == 0) + return stbi__err("can't merge dc and ac", "Corrupt JPEG"); - if (j->succ_high == 0) { - int shift = j->succ_low; + if (j->succ_high == 0) { + int shift = j->succ_low; - if (j->eob_run) { - --j->eob_run; - return 1; - } - - k = j->spec_start; - do { - unsigned int zig; - int c, r, s; - if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); - c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS) - 1); - r = fac[c]; - if (r) { // fast-AC path - k += (r >> 4) & 15; // run - s = r & 15; // combined length - if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); - j->code_buffer <<= s; - j->code_bits -= s; - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short)((r >> 8) * (1 << shift)); - } - else { - int rs = stbi__jpeg_huff_decode(j, hac); - if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (r < 15) { - j->eob_run = (1 << r); - if (r) - j->eob_run += stbi__jpeg_get_bits(j, r); + if (j->eob_run) { --j->eob_run; - break; - } - k += 16; + return 1; } - else { - k += r; - zig = stbi__jpeg_dezigzag[k++]; - data[zig] = (short)(stbi__extend_receive(j, s) * (1 << shift)); - } - } - } while (k <= j->spec_end); - } - else { - // refinement scan for these AC coefficients - short bit = (short)(1 << j->succ_low); - - if (j->eob_run) { - --j->eob_run; - for (k = j->spec_start; k <= j->spec_end; ++k) { - short* p = &data[stbi__jpeg_dezigzag[k]]; - if (*p != 0) - if (stbi__jpeg_get_bit(j)) - if ((*p & bit) == 0) { - if (*p > 0) - *p += bit; - else - *p -= bit; + k = j->spec_start; + do { + unsigned int zig; + int c, r, s; + if (j->code_bits < 16) + stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & + ((1 << FAST_BITS) - 1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) + return stbi__err( + "bad huffman code", + "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short)((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) + return stbi__err("bad huffman code", + "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += + stbi__jpeg_get_bits( + j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = + (short)(stbi__extend_receive( + j, s) * + (1 << shift)); + } } - } - } - else { - k = j->spec_start; - do { - int r, s; - int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh - if (rs < 0) return stbi__err("bad huffman code", "Corrupt JPEG"); - s = rs & 15; - r = rs >> 4; - if (s == 0) { - if (r < 15) { - j->eob_run = (1 << r) - 1; - if (r) - j->eob_run += stbi__jpeg_get_bits(j, r); - r = 64; // force end of block - } - else { - // r=15 s=0 should write 16 0s, so we just do - // a run of 15 0s and then write s (which is 0), - // so we don't have to do anything special here - } - } - else { - if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); - // sign bit - if (stbi__jpeg_get_bit(j)) - s = bit; - else - s = -bit; - } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients - // advance by r - while (k <= j->spec_end) { - short* p = &data[stbi__jpeg_dezigzag[k++]]; - if (*p != 0) { - if (stbi__jpeg_get_bit(j)) - if ((*p & bit) == 0) { - if (*p > 0) - *p += bit; - else - *p -= bit; - } - } - else { - if (r == 0) { - *p = (short)s; - break; + short bit = (short)(1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } } - --r; - } + } else { + k = j->spec_start; + do { + int r, s; + int rs = stbi__jpeg_huff_decode( + j, + hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) + return stbi__err("bad huffman code", + "Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += + stbi__jpeg_get_bits( + j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) + return stbi__err( + "bad huffman code", + "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = + &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit) == 0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short)s; + break; + } + --r; + } + } + } while (k <= j->spec_end); } - } while (k <= j->spec_end); } - } - return 1; + return 1; } // take a -128..127 value and stbi__clamp it and convert to 0..255 stbi_inline static stbi_uc stbi__clamp(int x) { - // trick to use a single test to catch both cases - if ((unsigned int)x > 255) { - if (x < 0) return 0; - if (x > 255) return 255; - } - return (stbi_uc)x; + // trick to use a single test to catch both cases + if ((unsigned int)x > 255) { + if (x < 0) + return 0; + if (x > 255) + return 255; + } + return (stbi_uc)x; } -#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) -#define stbi__fsh(x) ((x) * 4096) +#define stbi__f2f(x) ((int)(((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) // derived from jidctint -- DCT_ISLOW -#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ - int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ - p2 = s2; \ - p3 = s6; \ - p1 = (p2+p3) * stbi__f2f(0.5411961f); \ - t2 = p1 + p3*stbi__f2f(-1.847759065f); \ - t3 = p1 + p2*stbi__f2f( 0.765366865f); \ - p2 = s0; \ - p3 = s4; \ - t0 = stbi__fsh(p2+p3); \ - t1 = stbi__fsh(p2-p3); \ - x0 = t0+t3; \ - x3 = t0-t3; \ - x1 = t1+t2; \ - x2 = t1-t2; \ - t0 = s7; \ - t1 = s5; \ - t2 = s3; \ - t3 = s1; \ - p3 = t0+t2; \ - p4 = t1+t3; \ - p1 = t0+t3; \ - p2 = t1+t2; \ - p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ - t0 = t0*stbi__f2f( 0.298631336f); \ - t1 = t1*stbi__f2f( 2.053119869f); \ - t2 = t2*stbi__f2f( 3.072711026f); \ - t3 = t3*stbi__f2f( 1.501321110f); \ - p1 = p5 + p1*stbi__f2f(-0.899976223f); \ - p2 = p5 + p2*stbi__f2f(-2.562915447f); \ - p3 = p3*stbi__f2f(-1.961570560f); \ - p4 = p4*stbi__f2f(-0.390180644f); \ - t3 += p1+p4; \ - t2 += p2+p3; \ - t1 += p2+p4; \ - t0 += p1+p3; +#define STBI__IDCT_1D(s0, s1, s2, s3, s4, s5, s6, s7) \ + int t0, t1, t2, t3, p1, p2, p3, p4, p5, x0, x1, x2, x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2 + p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3 * stbi__f2f(-1.847759065f); \ + t3 = p1 + p2 * stbi__f2f(0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2 + p3); \ + t1 = stbi__fsh(p2 - p3); \ + x0 = t0 + t3; \ + x3 = t0 - t3; \ + x1 = t1 + t2; \ + x2 = t1 - t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0 + t2; \ + p4 = t1 + t3; \ + p1 = t0 + t3; \ + p2 = t1 + t2; \ + p5 = (p3 + p4) * stbi__f2f(1.175875602f); \ + t0 = t0 * stbi__f2f(0.298631336f); \ + t1 = t1 * stbi__f2f(2.053119869f); \ + t2 = t2 * stbi__f2f(3.072711026f); \ + t3 = t3 * stbi__f2f(1.501321110f); \ + p1 = p5 + p1 * stbi__f2f(-0.899976223f); \ + p2 = p5 + p2 * stbi__f2f(-2.562915447f); \ + p3 = p3 * stbi__f2f(-1.961570560f); \ + p4 = p4 * stbi__f2f(-0.390180644f); \ + t3 += p1 + p4; \ + t2 += p2 + p3; \ + t1 += p2 + p4; \ + t0 += p1 + p3; -static void stbi__idct_block(stbi_uc* out, int out_stride, short data[64]) +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) { - int i, val[64], * v = val; - stbi_uc* o; - short* d = data; + int i, val[64], *v = val; + stbi_uc *o; + short *d = data; - // columns - for (i = 0; i < 8; ++i, ++d, ++v) { - // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing - if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 - && d[40] == 0 && d[48] == 0 && d[56] == 0) { - // no shortcut 0 seconds - // (1|2|3|4|5|6|7)==0 0 seconds - // all separate -0.047 seconds - // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds - int dcterm = d[0] * 4; - v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + // columns + for (i = 0; i < 8; ++i, ++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[8] == 0 && d[16] == 0 && d[24] == 0 && d[32] == 0 && + d[40] == 0 && d[48] == 0 && d[56] == 0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0] * 4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = + v[56] = dcterm; + } else { + STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], + d[48], d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; + x1 += 512; + x2 += 512; + x3 += 512; + v[0] = (x0 + t3) >> 10; + v[56] = (x0 - t3) >> 10; + v[8] = (x1 + t2) >> 10; + v[48] = (x1 - t2) >> 10; + v[16] = (x2 + t1) >> 10; + v[40] = (x2 - t1) >> 10; + v[24] = (x3 + t0) >> 10; + v[32] = (x3 - t0) >> 10; + } } - else { - STBI__IDCT_1D(d[0], d[8], d[16], d[24], d[32], d[40], d[48], d[56]) - // constants scaled things up by 1<<12; let's bring them back - // down, but keep 2 extra bits of precision - x0 += 512; x1 += 512; x2 += 512; x3 += 512; - v[0] = (x0 + t3) >> 10; - v[56] = (x0 - t3) >> 10; - v[8] = (x1 + t2) >> 10; - v[48] = (x1 - t2) >> 10; - v[16] = (x2 + t1) >> 10; - v[40] = (x2 - t1) >> 10; - v[24] = (x3 + t0) >> 10; - v[32] = (x3 - t0) >> 10; - } - } - for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { - // no fast case since the first 1D IDCT spread components out - STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) - // constants scaled things up by 1<<12, plus we had 1<<2 from first - // loop, plus horizontal and vertical each scale by sqrt(8) so together - // we've got an extra 1<<3, so 1<<17 total we need to remove. - // so we want to round that, which means adding 0.5 * 1<<17, - // aka 65536. Also, we'll end up with -128 to 127 that we want - // to encode as 0..255 by adding 128, so we'll add that before the shift - x0 += 65536 + (128 << 17); - x1 += 65536 + (128 << 17); - x2 += 65536 + (128 << 17); - x3 += 65536 + (128 << 17); - // tried computing the shifts into temps, or'ing the temps to see - // if any were out of range, but that was slower - o[0] = stbi__clamp((x0 + t3) >> 17); - o[7] = stbi__clamp((x0 - t3) >> 17); - o[1] = stbi__clamp((x1 + t2) >> 17); - o[6] = stbi__clamp((x1 - t2) >> 17); - o[2] = stbi__clamp((x2 + t1) >> 17); - o[5] = stbi__clamp((x2 - t1) >> 17); - o[3] = stbi__clamp((x3 + t0) >> 17); - o[4] = stbi__clamp((x3 - t0) >> 17); - } + for (i = 0, v = val, o = out; i < 8; ++i, v += 8, o += out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128 << 17); + x1 += 65536 + (128 << 17); + x2 += 65536 + (128 << 17); + x3 += 65536 + (128 << 17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0 + t3) >> 17); + o[7] = stbi__clamp((x0 - t3) >> 17); + o[1] = stbi__clamp((x1 + t2) >> 17); + o[6] = stbi__clamp((x1 - t2) >> 17); + o[2] = stbi__clamp((x2 + t1) >> 17); + o[5] = stbi__clamp((x2 - t1) >> 17); + o[3] = stbi__clamp((x3 + t0) >> 17); + o[4] = stbi__clamp((x3 - t0) >> 17); + } } #ifdef STBI_SSE2 // sse2 integer IDCT. not the fastest possible implementation but it // produces bit-identical results to the generic C version so it's // fully "transparent". -static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) { - // This is constructed to match our regular (generic) integer IDCT exactly. - __m128i row0, row1, row2, row3, row4, row5, row6, row7; - __m128i tmp; + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; - // dot product constant: even elems=x, odd elems=y -#define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + // dot product constant: even elems=x, odd elems=y +#define dct_const(x, y) _mm_setr_epi16((x), (y), (x), (y), (x), (y), (x), (y)) // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) // out(1) = c1[even]*x + c1[odd]*y -#define dct_rot(out0,out1, x,y,c0,c1) \ - __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ - __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ - __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ - __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ - __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ - __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) +#define dct_rot(out0, out1, x, y, c0, c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x), (y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x), (y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) - // out = in << 12 (in 16-bit, out 32-bit) -#define dct_widen(out, in) \ - __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ - __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + // out = in << 12 (in 16-bit, out 32-bit) +#define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32( \ + _mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32( \ + _mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) - // wide add -#define dct_wadd(out, a, b) \ - __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ - __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + // wide add +#define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) - // wide sub -#define dct_wsub(out, a, b) \ - __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ - __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + // wide sub +#define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) - // butterfly a/b, add bias, then shift by "s" and pack -#define dct_bfly32o(out0, out1, a,b,bias,s) \ - { \ - __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ - __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ - dct_wadd(sum, abiased, b); \ - dct_wsub(dif, abiased, b); \ - out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ - out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ - } + // butterfly a/b, add bias, then shift by "s" and pack +#define dct_bfly32o(out0, out1, a, b, bias, s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), \ + _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), \ + _mm_srai_epi32(dif_h, s)); \ + } - // 8-bit interleave step (for transposes) -#define dct_interleave8(a, b) \ - tmp = a; \ - a = _mm_unpacklo_epi8(a, b); \ - b = _mm_unpackhi_epi8(tmp, b) + // 8-bit interleave step (for transposes) +#define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) - // 16-bit interleave step (for transposes) -#define dct_interleave16(a, b) \ - tmp = a; \ - a = _mm_unpacklo_epi16(a, b); \ - b = _mm_unpackhi_epi16(tmp, b) + // 16-bit interleave step (for transposes) +#define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) -#define dct_pass(bias,shift) \ - { \ - /* even part */ \ - dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ - __m128i sum04 = _mm_add_epi16(row0, row4); \ - __m128i dif04 = _mm_sub_epi16(row0, row4); \ - dct_widen(t0e, sum04); \ - dct_widen(t1e, dif04); \ - dct_wadd(x0, t0e, t3e); \ - dct_wsub(x3, t0e, t3e); \ - dct_wadd(x1, t1e, t2e); \ - dct_wsub(x2, t1e, t2e); \ - /* odd part */ \ - dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ - dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ - __m128i sum17 = _mm_add_epi16(row1, row7); \ - __m128i sum35 = _mm_add_epi16(row3, row5); \ - dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ - dct_wadd(x4, y0o, y4o); \ - dct_wadd(x5, y1o, y5o); \ - dct_wadd(x6, y2o, y5o); \ - dct_wadd(x7, y3o, y4o); \ - dct_bfly32o(row0,row7, x0,x7,bias,shift); \ - dct_bfly32o(row1,row6, x1,x6,bias,shift); \ - dct_bfly32o(row2,row5, x2,x5,bias,shift); \ - dct_bfly32o(row3,row4, x3,x4,bias,shift); \ - } +#define dct_pass(bias, shift) \ + { \ + /* even part */ \ + dct_rot(t2e, t3e, row2, row6, rot0_0, rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o, y2o, row7, row3, rot2_0, rot2_1); \ + dct_rot(y1o, y3o, row5, row1, rot3_0, rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o, y5o, sum17, sum35, rot1_0, rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0, row7, x0, x7, bias, shift); \ + dct_bfly32o(row1, row6, x1, x6, bias, shift); \ + dct_bfly32o(row2, row5, x2, x5, bias, shift); \ + dct_bfly32o(row3, row4, x3, x4, bias, shift); \ + } - __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); - __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), stbi__f2f(0.5411961f)); - __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); - __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); - __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), stbi__f2f(-1.961570560f)); - __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); - __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), stbi__f2f(-0.390180644f)); - __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); + __m128i rot0_0 = + dct_const(stbi__f2f(0.5411961f), + stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = + dct_const(stbi__f2f(0.5411961f) + stbi__f2f(0.765366865f), + stbi__f2f(0.5411961f)); + __m128i rot1_0 = + dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), + stbi__f2f(1.175875602f)); + __m128i rot1_1 = + dct_const(stbi__f2f(1.175875602f), + stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = + dct_const(stbi__f2f(-1.961570560f) + stbi__f2f(0.298631336f), + stbi__f2f(-1.961570560f)); + __m128i rot2_1 = + dct_const(stbi__f2f(-1.961570560f), + stbi__f2f(-1.961570560f) + stbi__f2f(3.072711026f)); + __m128i rot3_0 = + dct_const(stbi__f2f(-0.390180644f) + stbi__f2f(2.053119869f), + stbi__f2f(-0.390180644f)); + __m128i rot3_1 = + dct_const(stbi__f2f(-0.390180644f), + stbi__f2f(-0.390180644f) + stbi__f2f(1.501321110f)); - // rounding biases in column/row passes, see stbi__idct_block for explanation. - __m128i bias_0 = _mm_set1_epi32(512); - __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128 << 17)); - // load - row0 = _mm_load_si128((const __m128i*) (data + 0 * 8)); - row1 = _mm_load_si128((const __m128i*) (data + 1 * 8)); - row2 = _mm_load_si128((const __m128i*) (data + 2 * 8)); - row3 = _mm_load_si128((const __m128i*) (data + 3 * 8)); - row4 = _mm_load_si128((const __m128i*) (data + 4 * 8)); - row5 = _mm_load_si128((const __m128i*) (data + 5 * 8)); - row6 = _mm_load_si128((const __m128i*) (data + 6 * 8)); - row7 = _mm_load_si128((const __m128i*) (data + 7 * 8)); + // load + row0 = _mm_load_si128((const __m128i *)(data + 0 * 8)); + row1 = _mm_load_si128((const __m128i *)(data + 1 * 8)); + row2 = _mm_load_si128((const __m128i *)(data + 2 * 8)); + row3 = _mm_load_si128((const __m128i *)(data + 3 * 8)); + row4 = _mm_load_si128((const __m128i *)(data + 4 * 8)); + row5 = _mm_load_si128((const __m128i *)(data + 5 * 8)); + row6 = _mm_load_si128((const __m128i *)(data + 6 * 8)); + row7 = _mm_load_si128((const __m128i *)(data + 7 * 8)); - // column pass - dct_pass(bias_0, 10); + // column pass + dct_pass(bias_0, 10); - { - // 16bit 8x8 transpose pass 1 - dct_interleave16(row0, row4); - dct_interleave16(row1, row5); - dct_interleave16(row2, row6); - dct_interleave16(row3, row7); + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); - // transpose pass 2 - dct_interleave16(row0, row2); - dct_interleave16(row1, row3); - dct_interleave16(row4, row6); - dct_interleave16(row5, row7); + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); - // transpose pass 3 - dct_interleave16(row0, row1); - dct_interleave16(row2, row3); - dct_interleave16(row4, row5); - dct_interleave16(row6, row7); - } + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } - // row pass - dct_pass(bias_1, 17); + // row pass + dct_pass(bias_1, 17); - { - // pack - __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 - __m128i p1 = _mm_packus_epi16(row2, row3); - __m128i p2 = _mm_packus_epi16(row4, row5); - __m128i p3 = _mm_packus_epi16(row6, row7); + { + // pack + __m128i p0 = _mm_packus_epi16( + row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); - // 8bit 8x8 transpose pass 1 - dct_interleave8(p0, p2); // a0e0a1e1... - dct_interleave8(p1, p3); // c0g0c1g1... + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... - // transpose pass 2 - dct_interleave8(p0, p1); // a0c0e0g0... - dct_interleave8(p2, p3); // b0d0f0h0... + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... - // transpose pass 3 - dct_interleave8(p0, p2); // a0b0c0d0... - dct_interleave8(p1, p3); // a4b4c4d4... + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... - // store - _mm_storel_epi64((__m128i*) out, p0); out += out_stride; - _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i*) out, p2); out += out_stride; - _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i*) out, p1); out += out_stride; - _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; - _mm_storel_epi64((__m128i*) out, p3); out += out_stride; - _mm_storel_epi64((__m128i*) out, _mm_shuffle_epi32(p3, 0x4e)); - } + // store + _mm_storel_epi64((__m128i *)out, p0); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p0, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p2); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p2, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p1); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p1, 0x4e)); + out += out_stride; + _mm_storel_epi64((__m128i *)out, p3); + out += out_stride; + _mm_storel_epi64((__m128i *)out, _mm_shuffle_epi32(p3, 0x4e)); + } #undef dct_const #undef dct_rot @@ -2181,198 +2583,239 @@ static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) // NEON integer IDCT. should produce bit-identical // results to the generic C version. -static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) { - int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; - int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); - int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); - int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); - int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); - int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); - int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); - int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); - int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); - int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); - int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); - int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); - int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f(0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f(1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f(0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f(2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f(3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f(1.501321110f)); -#define dct_long_mul(out, inq, coeff) \ - int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ - int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) -#define dct_long_mac(out, acc, inq, coeff) \ - int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ - int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) -#define dct_widen(out, inq) \ - int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ - int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) - // wide add -#define dct_wadd(out, a, b) \ - int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ - int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + // wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) // wide sub -#define dct_wsub(out, a, b) \ - int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ - int32x4_t out##_h = vsubq_s32(a##_h, b##_h) +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) // butterfly a/b, then shift using "shiftop" by "s" and pack -#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ - { \ - dct_wadd(sum, a, b); \ - dct_wsub(dif, a, b); \ - out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ - out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ - } +#define dct_bfly32o(out0, out1, a, b, shiftop, s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } -#define dct_pass(shiftop, shift) \ - { \ - /* even part */ \ - int16x8_t sum26 = vaddq_s16(row2, row6); \ - dct_long_mul(p1e, sum26, rot0_0); \ - dct_long_mac(t2e, p1e, row6, rot0_1); \ - dct_long_mac(t3e, p1e, row2, rot0_2); \ - int16x8_t sum04 = vaddq_s16(row0, row4); \ - int16x8_t dif04 = vsubq_s16(row0, row4); \ - dct_widen(t0e, sum04); \ - dct_widen(t1e, dif04); \ - dct_wadd(x0, t0e, t3e); \ - dct_wsub(x3, t0e, t3e); \ - dct_wadd(x1, t1e, t2e); \ - dct_wsub(x2, t1e, t2e); \ - /* odd part */ \ - int16x8_t sum15 = vaddq_s16(row1, row5); \ - int16x8_t sum17 = vaddq_s16(row1, row7); \ - int16x8_t sum35 = vaddq_s16(row3, row5); \ - int16x8_t sum37 = vaddq_s16(row3, row7); \ - int16x8_t sumodd = vaddq_s16(sum17, sum35); \ - dct_long_mul(p5o, sumodd, rot1_0); \ - dct_long_mac(p1o, p5o, sum17, rot1_1); \ - dct_long_mac(p2o, p5o, sum35, rot1_2); \ - dct_long_mul(p3o, sum37, rot2_0); \ - dct_long_mul(p4o, sum15, rot2_1); \ - dct_wadd(sump13o, p1o, p3o); \ - dct_wadd(sump24o, p2o, p4o); \ - dct_wadd(sump23o, p2o, p3o); \ - dct_wadd(sump14o, p1o, p4o); \ - dct_long_mac(x4, sump13o, row7, rot3_0); \ - dct_long_mac(x5, sump24o, row5, rot3_1); \ - dct_long_mac(x6, sump23o, row3, rot3_2); \ - dct_long_mac(x7, sump14o, row1, rot3_3); \ - dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ - dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ - dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ - dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ - } +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0, row7, x0, x7, shiftop, shift); \ + dct_bfly32o(row1, row6, x1, x6, shiftop, shift); \ + dct_bfly32o(row2, row5, x2, x5, shiftop, shift); \ + dct_bfly32o(row3, row4, x3, x4, shiftop, shift); \ + } - // load - row0 = vld1q_s16(data + 0 * 8); - row1 = vld1q_s16(data + 1 * 8); - row2 = vld1q_s16(data + 2 * 8); - row3 = vld1q_s16(data + 3 * 8); - row4 = vld1q_s16(data + 4 * 8); - row5 = vld1q_s16(data + 5 * 8); - row6 = vld1q_s16(data + 6 * 8); - row7 = vld1q_s16(data + 7 * 8); + // load + row0 = vld1q_s16(data + 0 * 8); + row1 = vld1q_s16(data + 1 * 8); + row2 = vld1q_s16(data + 2 * 8); + row3 = vld1q_s16(data + 3 * 8); + row4 = vld1q_s16(data + 4 * 8); + row5 = vld1q_s16(data + 5 * 8); + row6 = vld1q_s16(data + 6 * 8); + row7 = vld1q_s16(data + 7 * 8); - // add DC bias - row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); - // column pass - dct_pass(vrshrn_n_s32, 10); + // column pass + dct_pass(vrshrn_n_s32, 10); - // 16bit 8x8 transpose - { - // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. - // whether compilers actually get this is another story, sadly. -#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } -#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } -#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + // 16bit 8x8 transpose + { + // these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. + // whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) \ + { \ + int16x8x2_t t = vtrnq_s16(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn32(x, y) \ + { \ + int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), \ + vreinterpretq_s32_s16(y)); \ + x = vreinterpretq_s16_s32(t.val[0]); \ + y = vreinterpretq_s16_s32(t.val[1]); \ + } +#define dct_trn64(x, y) \ + { \ + int16x8_t x0 = x; \ + int16x8_t y0 = y; \ + x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); \ + y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); \ + } - // pass 1 - dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 - dct_trn16(row2, row3); - dct_trn16(row4, row5); - dct_trn16(row6, row7); + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); - // pass 2 - dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 - dct_trn32(row1, row3); - dct_trn32(row4, row6); - dct_trn32(row5, row7); + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); - // pass 3 - dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 - dct_trn64(row1, row5); - dct_trn64(row2, row6); - dct_trn64(row3, row7); + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); #undef dct_trn16 #undef dct_trn32 #undef dct_trn64 - } + } - // row pass - // vrshrn_n_s32 only supports shifts up to 16, we need - // 17. so do a non-rounding shift of 16 first then follow - // up with a rounding shift by 1. - dct_pass(vshrn_n_s32, 16); + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); - { - // pack and round - uint8x8_t p0 = vqrshrun_n_s16(row0, 1); - uint8x8_t p1 = vqrshrun_n_s16(row1, 1); - uint8x8_t p2 = vqrshrun_n_s16(row2, 1); - uint8x8_t p3 = vqrshrun_n_s16(row3, 1); - uint8x8_t p4 = vqrshrun_n_s16(row4, 1); - uint8x8_t p5 = vqrshrun_n_s16(row5, 1); - uint8x8_t p6 = vqrshrun_n_s16(row6, 1); - uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); - // again, these can translate into one instruction, but often don't. -#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } -#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } -#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) \ + { \ + uint8x8x2_t t = vtrn_u8(x, y); \ + x = t.val[0]; \ + y = t.val[1]; \ + } +#define dct_trn8_16(x, y) \ + { \ + uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), \ + vreinterpret_u16_u8(y)); \ + x = vreinterpret_u8_u16(t.val[0]); \ + y = vreinterpret_u8_u16(t.val[1]); \ + } +#define dct_trn8_32(x, y) \ + { \ + uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), \ + vreinterpret_u32_u8(y)); \ + x = vreinterpret_u8_u32(t.val[0]); \ + y = vreinterpret_u8_u32(t.val[1]); \ + } - // sadly can't use interleaved stores here since we only write - // 8 bytes to each scan line! + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! - // 8x8 8-bit transpose pass 1 - dct_trn8_8(p0, p1); - dct_trn8_8(p2, p3); - dct_trn8_8(p4, p5); - dct_trn8_8(p6, p7); + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); - // pass 2 - dct_trn8_16(p0, p2); - dct_trn8_16(p1, p3); - dct_trn8_16(p4, p6); - dct_trn8_16(p5, p7); + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); - // pass 3 - dct_trn8_32(p0, p4); - dct_trn8_32(p1, p5); - dct_trn8_32(p2, p6); - dct_trn8_32(p3, p7); + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); - // store - vst1_u8(out, p0); out += out_stride; - vst1_u8(out, p1); out += out_stride; - vst1_u8(out, p2); out += out_stride; - vst1_u8(out, p3); out += out_stride; - vst1_u8(out, p4); out += out_stride; - vst1_u8(out, p5); out += out_stride; - vst1_u8(out, p6); out += out_stride; - vst1_u8(out, p7); + // store + vst1_u8(out, p0); + out += out_stride; + vst1_u8(out, p1); + out += out_stride; + vst1_u8(out, p2); + out += out_stride; + vst1_u8(out, p3); + out += out_stride; + vst1_u8(out, p4); + out += out_stride; + vst1_u8(out, p5); + out += out_stride; + vst1_u8(out, p6); + out += out_stride; + vst1_u8(out, p7); #undef dct_trn8_8 #undef dct_trn8_16 #undef dct_trn8_32 - } + } #undef dct_long_mul #undef dct_long_mac @@ -2385,1187 +2828,1514 @@ static void stbi__idct_simd(stbi_uc* out, int out_stride, short data[64]) #endif // STBI_NEON -#define STBI__MARKER_none 0xff +#define STBI__MARKER_none 0xff // if there's a pending marker from the entropy stream, return that // otherwise, fetch from the stream and get a marker. if there's no // marker, return 0xff, which is never a valid marker value -static stbi_uc stbi__get_marker(stbi__jpeg* j) +static stbi_uc stbi__get_marker(stbi__jpeg *j) { - stbi_uc x; - if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } - x = stbi__get8(j->s); - if (x != 0xff) return STBI__MARKER_none; - while (x == 0xff) - x = stbi__get8(j->s); // consume repeated 0xff fill bytes - return x; + stbi_uc x; + if (j->marker != STBI__MARKER_none) { + x = j->marker; + j->marker = STBI__MARKER_none; + return x; + } + x = stbi__get8(j->s); + if (x != 0xff) + return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; } // in each scan, we'll have scan_n components, and the order // of the components is specified by order[] -#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) // after a restart interval, stbi__jpeg_reset the entropy decoder and // the dc prediction -static void stbi__jpeg_reset(stbi__jpeg* j) +static void stbi__jpeg_reset(stbi__jpeg *j) { - j->code_bits = 0; - j->code_buffer = 0; - j->nomore = 0; - j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; - j->marker = STBI__MARKER_none; - j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; - j->eob_run = 0; - // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, - // since we don't even allow 1<<30 pixels + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = + j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels } -static int stbi__parse_entropy_coded_data(stbi__jpeg* z) +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) { - stbi__jpeg_reset(z); - if (!z->progressive) { - if (z->scan_n == 1) { - int i, j; - STBI_SIMD_ALIGN(short, data[64]); - int n = z->order[0]; - // non-interleaved data, we just need to process one block at a time, - // in trivial scanline order - // number of blocks to do just depends on how many actual "pixels" this - // component has, independent of interleaved MCU blocking and such - int w = (z->img_comp[n].x + 7) >> 3; - int h = (z->img_comp[n].y + 7) >> 3; - for (j = 0; j < h; ++j) { - for (i = 0; i < w; ++i) { - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; - z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); - // every data block is an MCU, so countdown the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - // if it's NOT a restart, then just bail, so we get corrupt data - // rather than no data - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } - else { // interleaved - int i, j, k, x, y; - STBI_SIMD_ALIGN(short, data[64]); - for (j = 0; j < z->img_mcu_y; ++j) { - for (i = 0; i < z->img_mcu_x; ++i) { - // scan an interleaved mcu... process scan_n components in order - for (k = 0; k < z->scan_n; ++k) { - int n = z->order[k]; - // scan out an mcu's worth of this component; that's just determined - // by the basic H and V specified for the component - for (y = 0; y < z->img_comp[n].v; ++y) { - for (x = 0; x < z->img_comp[n].h; ++x) { - int x2 = (i * z->img_comp[n].h + x) * 8; - int y2 = (j * z->img_comp[n].v + y) * 8; - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block(z, data, z->huff_dc + z->img_comp[n].hd, z->huff_ac + ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; - z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * y2 + x2, z->img_comp[n].w2, data); - } + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i, j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block( + z, data, + z->huff_dc + + z->img_comp[n].hd, + z->huff_ac + ha, + z->fast_ac[ha], n, + z->dequant[z->img_comp[n] + .tq])) + return 0; + z->idct_block_kernel( + z->img_comp[n].data + + z->img_comp[n].w2 * j * + 8 + + i * 8, + z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe( + z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } } - } - // after all interleaved components, that's an interleaved MCU, - // so now count down the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } - } - else { - if (z->scan_n == 1) { - int i, j; - int n = z->order[0]; - // non-interleaved data, we just need to process one block at a time, - // in trivial scanline order - // number of blocks to do just depends on how many actual "pixels" this - // component has, independent of interleaved MCU blocking and such - int w = (z->img_comp[n].x + 7) >> 3; - int h = (z->img_comp[n].y + 7) >> 3; - for (j = 0; j < h; ++j) { - for (i = 0; i < w; ++i) { - short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); - if (z->spec_start == 0) { - if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) - return 0; - } - else { - int ha = z->img_comp[n].ha; - if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) - return 0; - } - // every data block is an MCU, so countdown the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } - } - } - return 1; - } - else { // interleaved - int i, j, k, x, y; - for (j = 0; j < z->img_mcu_y; ++j) { - for (i = 0; i < z->img_mcu_x; ++i) { - // scan an interleaved mcu... process scan_n components in order - for (k = 0; k < z->scan_n; ++k) { - int n = z->order[k]; - // scan out an mcu's worth of this component; that's just determined - // by the basic H and V specified for the component - for (y = 0; y < z->img_comp[n].v; ++y) { - for (x = 0; x < z->img_comp[n].h; ++x) { - int x2 = (i * z->img_comp[n].h + x); - int y2 = (j * z->img_comp[n].v + y); - short* data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); - if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) - return 0; - } + return 1; + } else { // interleaved + int i, j, k, x, y; + STBI_SIMD_ALIGN(short, data[64]); + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; + y < z->img_comp[n].v; + ++y) { + for (x = 0; + x < + z->img_comp[n].h; + ++x) { + int x2 = + (i * z->img_comp[n] + .h + + x) * + 8; + int y2 = + (j * z->img_comp[n] + .v + + y) * + 8; + int ha = + z->img_comp[n] + .ha; + if (!stbi__jpeg_decode_block( + z, + data, + z->huff_dc + + z->img_comp[n] + .hd, + z->huff_ac + + ha, + z->fast_ac + [ha], + n, + z->dequant + [z->img_comp[n] + .tq])) + return 0; + z->idct_block_kernel( + z->img_comp[n].data + + z->img_comp[n].w2 * + y2 + + x2, + z->img_comp[n] + .w2, + data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe( + z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } } - } - // after all interleaved components, that's an interleaved MCU, - // so now count down the restart interval - if (--z->todo <= 0) { - if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); - if (!STBI__RESTART(z->marker)) return 1; - stbi__jpeg_reset(z); - } + return 1; } - } - return 1; - } - } -} - -static void stbi__jpeg_dequantize(short* data, stbi__uint16* dequant) -{ - int i; - for (i = 0; i < 64; ++i) - data[i] *= dequant[i]; -} - -static void stbi__jpeg_finish(stbi__jpeg* z) -{ - if (z->progressive) { - // dequantize and idct the data - int i, j, n; - for (n = 0; n < z->s->img_n; ++n) { - int w = (z->img_comp[n].x + 7) >> 3; - int h = (z->img_comp[n].y + 7) >> 3; - for (j = 0; j < h; ++j) { - for (i = 0; i < w; ++i) { - short* data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); - stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); - z->idct_block_kernel(z->img_comp[n].data + z->img_comp[n].w2 * j * 8 + i * 8, z->img_comp[n].w2, data); + } else { + if (z->scan_n == 1) { + int i, j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = + z->img_comp[n].coeff + + 64 * (i + + j * z->img_comp[n] + .coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc( + z, data, + &z->huff_dc + [z->img_comp[n] + .hd], + n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac( + z, data, + &z->huff_ac[ha], + z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe( + z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i, j, k, x, y; + for (j = 0; j < z->img_mcu_y; ++j) { + for (i = 0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k = 0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y = 0; + y < z->img_comp[n].v; + ++y) { + for (x = 0; + x < + z->img_comp[n].h; + ++x) { + int x2 = + (i * z->img_comp[n] + .h + + x); + int y2 = + (j * z->img_comp[n] + .v + + y); + short *data = + z->img_comp[n] + .coeff + + 64 * (x2 + + y2 * z->img_comp[n] + .coeff_w); + if (!stbi__jpeg_decode_block_prog_dc( + z, + data, + &z->huff_dc + [z->img_comp[n] + .hd], + n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) + stbi__grow_buffer_unsafe( + z); + if (!STBI__RESTART(z->marker)) + return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; } - } } - } } -static int stbi__process_marker(stbi__jpeg* z, int m) +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) { - int L; - switch (m) { - case STBI__MARKER_none: // no marker found - return stbi__err("expected marker", "Corrupt JPEG"); + int i; + for (i = 0; i < 64; ++i) + data[i] *= dequant[i]; +} - case 0xDD: // DRI - specify restart interval - if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len", "Corrupt JPEG"); - z->restart_interval = stbi__get16be(z->s); - return 1; - - case 0xDB: // DQT - define quantization table - L = stbi__get16be(z->s) - 2; - while (L > 0) { - int q = stbi__get8(z->s); - int p = q >> 4, sixteen = (p != 0); - int t = q & 15, i; - if (p != 0 && p != 1) return stbi__err("bad DQT type", "Corrupt JPEG"); - if (t > 3) return stbi__err("bad DQT table", "Corrupt JPEG"); - - for (i = 0; i < 64; ++i) - z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); - L -= (sixteen ? 129 : 65); +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i, j, n; + for (n = 0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x + 7) >> 3; + int h = (z->img_comp[n].y + 7) >> 3; + for (j = 0; j < h; ++j) { + for (i = 0; i < w; ++i) { + short *data = + z->img_comp[n].coeff + + 64 * (i + + j * z->img_comp[n] + .coeff_w); + stbi__jpeg_dequantize( + data, + z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel( + z->img_comp[n].data + + z->img_comp[n].w2 * j * + 8 + + i * 8, + z->img_comp[n].w2, data); + } + } + } } - return L == 0; +} - case 0xC4: // DHT - define huffman table - L = stbi__get16be(z->s) - 2; - while (L > 0) { - stbi_uc* v; - int sizes[16], i, n = 0; - int q = stbi__get8(z->s); - int tc = q >> 4; - int th = q & 15; - if (tc > 1 || th > 3) return stbi__err("bad DHT header", "Corrupt JPEG"); - for (i = 0; i < 16; ++i) { - sizes[i] = stbi__get8(z->s); - n += sizes[i]; - } - if (n > 256) return stbi__err("bad DHT header", "Corrupt JPEG"); // Loop over i < n would write past end of values! - L -= 17; - if (tc == 0) { - if (!stbi__build_huffman(z->huff_dc + th, sizes)) return 0; - v = z->huff_dc[th].values; - } - else { - if (!stbi__build_huffman(z->huff_ac + th, sizes)) return 0; - v = z->huff_ac[th].values; - } - for (i = 0; i < n; ++i) - v[i] = stbi__get8(z->s); - if (tc != 0) - stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); - L -= n; - } - return L == 0; - } +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker", "Corrupt JPEG"); - // check for comment block or APP blocks - if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { - L = stbi__get16be(z->s); - if (L < 2) { - if (m == 0xFE) - return stbi__err("bad COM len", "Corrupt JPEG"); - else - return stbi__err("bad APP len", "Corrupt JPEG"); - } - L -= 2; + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) + return stbi__err("bad DRI len", "Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; - if (m == 0xE0 && L >= 5) { // JFIF APP0 segment - static const unsigned char tag[5] = { 'J','F','I','F','\0' }; - int ok = 1; - int i; - for (i = 0; i < 5; ++i) - if (stbi__get8(z->s) != tag[i]) - ok = 0; - L -= 5; - if (ok) - z->jfif = 1; - } - else if (m == 0xEE && L >= 12) { // Adobe APP14 segment - static const unsigned char tag[6] = { 'A','d','o','b','e','\0' }; - int ok = 1; - int i; - for (i = 0; i < 6; ++i) - if (stbi__get8(z->s) != tag[i]) - ok = 0; - L -= 6; - if (ok) { - stbi__get8(z->s); // version - stbi__get16be(z->s); // flags0 - stbi__get16be(z->s); // flags1 - z->app14_color_transform = stbi__get8(z->s); // color transform - L -= 6; - } + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15, i; + if (p != 0 && p != 1) + return stbi__err("bad DQT type", + "Corrupt JPEG"); + if (t > 3) + return stbi__err("bad DQT table", + "Corrupt JPEG"); + + for (i = 0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = + (stbi__uint16)(sixteen ? stbi__get16be( + z->s) : + stbi__get8( + z->s)); + L -= (sixteen ? 129 : 65); + } + return L == 0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s) - 2; + while (L > 0) { + stbi_uc *v; + int sizes[16], i, n = 0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) + return stbi__err("bad DHT header", + "Corrupt JPEG"); + for (i = 0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if (n > 256) + return stbi__err( + "bad DHT header", + "Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc + th, + sizes)) + return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac + th, + sizes)) + return 0; + v = z->huff_ac[th].values; + } + for (i = 0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], + z->huff_ac + th); + L -= n; + } + return L == 0; } - stbi__skip(z->s, L); - return 1; - } + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len", "Corrupt JPEG"); + else + return stbi__err("bad APP len", "Corrupt JPEG"); + } + L -= 2; - return stbi__err("unknown marker", "Corrupt JPEG"); + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = { 'J', 'F', 'I', + 'F', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = { 'A', 'd', 'o', + 'b', 'e', '\0' }; + int ok = 1; + int i; + for (i = 0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = + stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker", "Corrupt JPEG"); } // after we see SOS -static int stbi__process_scan_header(stbi__jpeg* z) +static int stbi__process_scan_header(stbi__jpeg *z) { - int i; - int Ls = stbi__get16be(z->s); - z->scan_n = stbi__get8(z->s); - if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) return stbi__err("bad SOS component count", "Corrupt JPEG"); - if (Ls != 6 + 2 * z->scan_n) return stbi__err("bad SOS len", "Corrupt JPEG"); - for (i = 0; i < z->scan_n; ++i) { - int id = stbi__get8(z->s), which; - int q = stbi__get8(z->s); - for (which = 0; which < z->s->img_n; ++which) - if (z->img_comp[which].id == id) - break; - if (which == z->s->img_n) return 0; // no match - z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff", "Corrupt JPEG"); - z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff", "Corrupt JPEG"); - z->order[i] = which; - } - - { - int aa; - z->spec_start = stbi__get8(z->s); - z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 - aa = stbi__get8(z->s); - z->succ_high = (aa >> 4); - z->succ_low = (aa & 15); - if (z->progressive) { - if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) - return stbi__err("bad SOS", "Corrupt JPEG"); + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int)z->s->img_n) + return stbi__err("bad SOS component count", "Corrupt JPEG"); + if (Ls != 6 + 2 * z->scan_n) + return stbi__err("bad SOS len", "Corrupt JPEG"); + for (i = 0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) + return 0; // no match + z->img_comp[which].hd = q >> 4; + if (z->img_comp[which].hd > 3) + return stbi__err("bad DC huff", "Corrupt JPEG"); + z->img_comp[which].ha = q & 15; + if (z->img_comp[which].ha > 3) + return stbi__err("bad AC huff", "Corrupt JPEG"); + z->order[i] = which; } - else { - if (z->spec_start != 0) return stbi__err("bad SOS", "Corrupt JPEG"); - if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS", "Corrupt JPEG"); - z->spec_end = 63; - } - } - return 1; + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || + z->spec_start > z->spec_end || z->succ_high > 13 || + z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) + return stbi__err("bad SOS", "Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; } -static int stbi__free_jpeg_components(stbi__jpeg* z, int ncomp, int why) +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) { - int i; - for (i = 0; i < ncomp; ++i) { - if (z->img_comp[i].raw_data) { - STBI_FREE(z->img_comp[i].raw_data); - z->img_comp[i].raw_data = NULL; - z->img_comp[i].data = NULL; + int i; + for (i = 0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } } - if (z->img_comp[i].raw_coeff) { - STBI_FREE(z->img_comp[i].raw_coeff); - z->img_comp[i].raw_coeff = 0; - z->img_comp[i].coeff = 0; - } - if (z->img_comp[i].linebuf) { - STBI_FREE(z->img_comp[i].linebuf); - z->img_comp[i].linebuf = NULL; - } - } - return why; + return why; } -static int stbi__process_frame_header(stbi__jpeg* z, int scan) +static int stbi__process_frame_header(stbi__jpeg *z, int scan) { - stbi__context* s = z->s; - int Lf, p, i, q, h_max = 1, v_max = 1, c; - Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG - p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit", "JPEG format not supported: 8-bit only"); // JPEG baseline - s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG - s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - c = stbi__get8(s); - if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count", "Corrupt JPEG"); - s->img_n = c; - for (i = 0; i < c; ++i) { - z->img_comp[i].data = NULL; - z->img_comp[i].linebuf = NULL; - } - - if (Lf != 8 + 3 * s->img_n) return stbi__err("bad SOF len", "Corrupt JPEG"); - - z->rgb = 0; - for (i = 0; i < s->img_n; ++i) { - static const unsigned char rgb[3] = { 'R', 'G', 'B' }; - z->img_comp[i].id = stbi__get8(s); - if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) - ++z->rgb; - q = stbi__get8(s); - z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H", "Corrupt JPEG"); - z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V", "Corrupt JPEG"); - z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ", "Corrupt JPEG"); - } - - if (scan != STBI__SCAN_load) return 1; - - if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); - - for (i = 0; i < s->img_n; ++i) { - if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; - if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; - } - - // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios - // and I've never seen a non-corrupted JPEG file actually use them - for (i = 0; i < s->img_n; ++i) { - if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H", "Corrupt JPEG"); - if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V", "Corrupt JPEG"); - } - - // compute interleaved mcu info - z->img_h_max = h_max; - z->img_v_max = v_max; - z->img_mcu_w = h_max * 8; - z->img_mcu_h = v_max * 8; - // these sizes can't be more than 17 bits - z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; - z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; - - for (i = 0; i < s->img_n; ++i) { - // number of effective pixels (e.g. for non-interleaved MCU) - z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; - z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; - // to simplify generation, we'll allocate enough memory to decode - // the bogus oversized data from using interleaved MCUs and their - // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't - // discard the extra data until colorspace conversion - // - // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) - // so these muls can't overflow with 32-bit ints (which we require) - z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; - z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; - z->img_comp[i].coeff = 0; - z->img_comp[i].raw_coeff = 0; - z->img_comp[i].linebuf = NULL; - z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); - if (z->img_comp[i].raw_data == NULL) - return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); - // align blocks for idct using mmx/sse - z->img_comp[i].data = (stbi_uc*)(((size_t)z->img_comp[i].raw_data + 15) & ~15); - if (z->progressive) { - // w2, h2 are multiples of 8 (see above) - z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; - z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; - z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); - if (z->img_comp[i].raw_coeff == NULL) - return stbi__free_jpeg_components(z, i + 1, stbi__err("outofmem", "Out of memory")); - z->img_comp[i].coeff = (short*)(((size_t)z->img_comp[i].raw_coeff + 15) & ~15); + stbi__context *s = z->s; + int Lf, p, i, q, h_max = 1, v_max = 1, c; + Lf = stbi__get16be(s); + if (Lf < 11) + return stbi__err("bad SOF len", "Corrupt JPEG"); // JPEG + p = stbi__get8(s); + if (p != 8) + return stbi__err( + "only 8-bit", + "JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); + if (s->img_y == 0) + return stbi__err( + "no header height", + "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); + if (s->img_x == 0) + return stbi__err("0 width", "Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) + return stbi__err("bad component count", "Corrupt JPEG"); + s->img_n = c; + for (i = 0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; } - } - return 1; + if (Lf != 8 + 3 * s->img_n) + return stbi__err("bad SOF len", "Corrupt JPEG"); + + z->rgb = 0; + for (i = 0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); + if (!z->img_comp[i].h || z->img_comp[i].h > 4) + return stbi__err("bad H", "Corrupt JPEG"); + z->img_comp[i].v = q & 15; + if (!z->img_comp[i].v || z->img_comp[i].v > 4) + return stbi__err("bad V", "Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); + if (z->img_comp[i].tq > 3) + return stbi__err("bad TQ", "Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) + return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) + return stbi__err("too large", "Image too large to decode"); + + for (i = 0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) + h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) + v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i = 0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) + return stbi__err("bad H", "Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) + return stbi__err("bad V", "Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w - 1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h - 1) / z->img_mcu_h; + + for (i = 0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = + (s->img_x * z->img_comp[i].h + h_max - 1) / h_max; + z->img_comp[i].y = + (s->img_y * z->img_comp[i].v + v_max - 1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2( + z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components( + z, i + 1, + stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = + (stbi_uc *)(((size_t)z->img_comp[i].raw_data + 15) & + ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3( + z->img_comp[i].w2, z->img_comp[i].h2, + sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components( + z, i + 1, + stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = + (short *)(((size_t)z->img_comp[i].raw_coeff + + 15) & + ~15); + } + } + + return 1; } // use comparisons since in some cases we handle more than one case (e.g. SOF) -#define stbi__DNL(x) ((x) == 0xdc) -#define stbi__SOI(x) ((x) == 0xd8) -#define stbi__EOI(x) ((x) == 0xd9) -#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) -#define stbi__SOS(x) ((x) == 0xda) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) -#define stbi__SOF_progressive(x) ((x) == 0xc2) +#define stbi__SOF_progressive(x) ((x) == 0xc2) -static int stbi__decode_jpeg_header(stbi__jpeg* z, int scan) +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) { - int m; - z->jfif = 0; - z->app14_color_transform = -1; // valid values are 0,1,2 - z->marker = STBI__MARKER_none; // initialize cached marker to empty - m = stbi__get_marker(z); - if (!stbi__SOI(m)) return stbi__err("no SOI", "Corrupt JPEG"); - if (scan == STBI__SCAN_type) return 1; - m = stbi__get_marker(z); - while (!stbi__SOF(m)) { - if (!stbi__process_marker(z, m)) return 0; + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty m = stbi__get_marker(z); - while (m == STBI__MARKER_none) { - // some files have extra padding after their blocks, so ok, we'll scan - if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); - m = stbi__get_marker(z); + if (!stbi__SOI(m)) + return stbi__err("no SOI", "Corrupt JPEG"); + if (scan == STBI__SCAN_type) + return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z, m)) + return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) + return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } } - } - z->progressive = stbi__SOF_progressive(m); - if (!stbi__process_frame_header(z, scan)) return 0; - return 1; + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) + return 0; + return 1; } -static int stbi__skip_jpeg_junk_at_end(stbi__jpeg* j) +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) { - // some JPEGs have junk at end, skip over it but if we find what looks - // like a valid marker, resume there - while (!stbi__at_eof(j->s)) { - int x = stbi__get8(j->s); - while (x == 255) { // might be a marker - if (stbi__at_eof(j->s)) return STBI__MARKER_none; - x = stbi__get8(j->s); - if (x != 0x00 && x != 0xff) { - // not a stuffed zero or lead-in to another marker, looks - // like an actual marker, return it - return x; - } - // stuffed zero has x=0 now which ends the loop, meaning we go - // back to regular scan loop. - // repeated 0xff keeps trying to read the next byte of the marker. + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) + return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } } - } - return STBI__MARKER_none; + return STBI__MARKER_none; } // decode image to YCbCr format -static int stbi__decode_jpeg_image(stbi__jpeg* j) +static int stbi__decode_jpeg_image(stbi__jpeg *j) { - int m; - for (m = 0; m < 4; m++) { - j->img_comp[m].raw_data = NULL; - j->img_comp[m].raw_coeff = NULL; - } - j->restart_interval = 0; - if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; - m = stbi__get_marker(j); - while (!stbi__EOI(m)) { - if (stbi__SOS(m)) { - if (!stbi__process_scan_header(j)) return 0; - if (!stbi__parse_entropy_coded_data(j)) return 0; - if (j->marker == STBI__MARKER_none) { - j->marker = stbi__skip_jpeg_junk_at_end(j); - // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 - } - m = stbi__get_marker(j); - if (STBI__RESTART(m)) - m = stbi__get_marker(j); + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; } - else if (stbi__DNL(m)) { - int Ld = stbi__get16be(j->s); - stbi__uint32 NL = stbi__get16be(j->s); - if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); - if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); - m = stbi__get_marker(j); + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) + return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) + return 0; + if (!stbi__parse_entropy_coded_data(j)) + return 0; + if (j->marker == STBI__MARKER_none) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) + return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) + return stbi__err("bad DNL height", + "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) + return 1; + m = stbi__get_marker(j); + } } - else { - if (!stbi__process_marker(j, m)) return 1; - m = stbi__get_marker(j); - } - } - if (j->progressive) - stbi__jpeg_finish(j); - return 1; + if (j->progressive) + stbi__jpeg_finish(j); + return 1; } // static jfif-centered resampling (across block boundaries) -typedef stbi_uc* (*resample_row_func)(stbi_uc* out, stbi_uc* in0, stbi_uc* in1, - int w, int hs); +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); -#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) +#define stbi__div4(x) ((stbi_uc)((x) >> 2)) -static stbi_uc* resample_row_1(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, + int w, int hs) { - STBI_NOTUSED(out); - STBI_NOTUSED(in_far); - STBI_NOTUSED(w); - STBI_NOTUSED(hs); - return in_near; + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; } -static stbi_uc* stbi__resample_row_v_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +static stbi_uc *stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs) { - // need to generate two samples vertically for every one in input - int i; - STBI_NOTUSED(hs); - for (i = 0; i < w; ++i) - out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); - return out; -} - -static stbi_uc* stbi__resample_row_h_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) -{ - // need to generate two samples horizontally for every one in input - int i; - stbi_uc* input = in_near; - - if (w == 1) { - // if only one sample, can't do any interpolation - out[0] = out[1] = input[0]; + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i = 0; i < w; ++i) + out[i] = stbi__div4(3 * in_near[i] + in_far[i] + 2); return out; - } - - out[0] = input[0]; - out[1] = stbi__div4(input[0] * 3 + input[1] + 2); - for (i = 1; i < w - 1; ++i) { - int n = 3 * input[i] + 2; - out[i * 2 + 0] = stbi__div4(n + input[i - 1]); - out[i * 2 + 1] = stbi__div4(n + input[i + 1]); - } - out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); - out[i * 2 + 1] = input[w - 1]; - - STBI_NOTUSED(in_far); - STBI_NOTUSED(hs); - - return out; } -#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) - -static stbi_uc* stbi__resample_row_hv_2(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +static stbi_uc *stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs) { - // need to generate 2x2 samples for every one in input - int i, t0, t1; - if (w == 1) { - out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0] * 3 + input[1] + 2); + for (i = 1; i < w - 1; ++i) { + int n = 3 * input[i] + 2; + out[i * 2 + 0] = stbi__div4(n + input[i - 1]); + out[i * 2 + 1] = stbi__div4(n + input[i + 1]); + } + out[i * 2 + 0] = stbi__div4(input[w - 2] * 3 + input[w - 1] + 2); + out[i * 2 + 1] = input[w - 1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + return out; - } +} - t1 = 3 * in_near[0] + in_far[0]; - out[0] = stbi__div4(t1 + 2); - for (i = 1; i < w; ++i) { - t0 = t1; - t1 = 3 * in_near[i] + in_far[i]; - out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); - out[i * 2] = stbi__div16(3 * t1 + t0 + 8); - } - out[w * 2 - 1] = stbi__div4(t1 + 2); +#define stbi__div16(x) ((stbi_uc)((x) >> 4)) - STBI_NOTUSED(hs); +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i, t0, t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } - return out; + t1 = 3 * in_near[0] + in_far[0]; + out[0] = stbi__div4(t1 + 2); + for (i = 1; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); + + STBI_NOTUSED(hs); + + return out; } #if defined(STBI_SSE2) || defined(STBI_NEON) -static stbi_uc* stbi__resample_row_hv_2_simd(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs) { - // need to generate 2x2 samples for every one in input - int i = 0, t0, t1; + // need to generate 2x2 samples for every one in input + int i = 0, t0, t1; - if (w == 1) { - out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); - return out; - } + if (w == 1) { + out[0] = out[1] = stbi__div4(3 * in_near[0] + in_far[0] + 2); + return out; + } - t1 = 3 * in_near[0] + in_far[0]; - // process groups of 8 pixels for as long as we can. - // note we can't handle the last pixel in a row in this loop - // because we need to handle the filter boundary conditions. - for (; i < ((w - 1) & ~7); i += 8) { + t1 = 3 * in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w - 1) & ~7); i += 8) { #if defined(STBI_SSE2) - // load and perform the vertical filtering pass - // this uses 3*x + y = 4*x + (y - x) - __m128i zero = _mm_setzero_si128(); - __m128i farb = _mm_loadl_epi64((__m128i*) (in_far + i)); - __m128i nearb = _mm_loadl_epi64((__m128i*) (in_near + i)); - __m128i farw = _mm_unpacklo_epi8(farb, zero); - __m128i nearw = _mm_unpacklo_epi8(nearb, zero); - __m128i diff = _mm_sub_epi16(farw, nearw); - __m128i nears = _mm_slli_epi16(nearw, 2); - __m128i curr = _mm_add_epi16(nears, diff); // current row + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *)(in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *)(in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row - // horizontal filter works the same based on shifted vers of current - // row. "prev" is current row shifted right by 1 pixel; we need to - // insert the previous pixel value (from t1). - // "next" is current row shifted left by 1 pixel, with first pixel - // of next block of 8 pixels added in. - __m128i prv0 = _mm_slli_si128(curr, 2); - __m128i nxt0 = _mm_srli_si128(curr, 2); - __m128i prev = _mm_insert_epi16(prv0, t1, 0); - __m128i next = _mm_insert_epi16(nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16( + nxt0, 3 * in_near[i + 8] + in_far[i + 8], 7); - // horizontal filter, polyphase implementation since it's convenient: - // even pixels = 3*cur + prev = cur*4 + (prev - cur) - // odd pixels = 3*cur + next = cur*4 + (next - cur) - // note the shared term. - __m128i bias = _mm_set1_epi16(8); - __m128i curs = _mm_slli_epi16(curr, 2); - __m128i prvd = _mm_sub_epi16(prev, curr); - __m128i nxtd = _mm_sub_epi16(next, curr); - __m128i curb = _mm_add_epi16(curs, bias); - __m128i even = _mm_add_epi16(prvd, curb); - __m128i odd = _mm_add_epi16(nxtd, curb); + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); - // interleave even and odd pixels, then undo scaling. - __m128i int0 = _mm_unpacklo_epi16(even, odd); - __m128i int1 = _mm_unpackhi_epi16(even, odd); - __m128i de0 = _mm_srli_epi16(int0, 4); - __m128i de1 = _mm_srli_epi16(int1, 4); + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); - // pack and write output - __m128i outv = _mm_packus_epi16(de0, de1); - _mm_storeu_si128((__m128i*) (out + i * 2), outv); + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *)(out + i * 2), outv); #elif defined(STBI_NEON) - // load and perform the vertical filtering pass - // this uses 3*x + y = 4*x + (y - x) - uint8x8_t farb = vld1_u8(in_far + i); - uint8x8_t nearb = vld1_u8(in_near + i); - int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); - int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); - int16x8_t curr = vaddq_s16(nears, diff); // current row + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row - // horizontal filter works the same based on shifted vers of current - // row. "prev" is current row shifted right by 1 pixel; we need to - // insert the previous pixel value (from t1). - // "next" is current row shifted left by 1 pixel, with first pixel - // of next block of 8 pixels added in. - int16x8_t prv0 = vextq_s16(curr, curr, 7); - int16x8_t nxt0 = vextq_s16(curr, curr, 1); - int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); - int16x8_t next = vsetq_lane_s16(3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16( + 3 * in_near[i + 8] + in_far[i + 8], nxt0, 7); - // horizontal filter, polyphase implementation since it's convenient: - // even pixels = 3*cur + prev = cur*4 + (prev - cur) - // odd pixels = 3*cur + next = cur*4 + (next - cur) - // note the shared term. - int16x8_t curs = vshlq_n_s16(curr, 2); - int16x8_t prvd = vsubq_s16(prev, curr); - int16x8_t nxtd = vsubq_s16(next, curr); - int16x8_t even = vaddq_s16(curs, prvd); - int16x8_t odd = vaddq_s16(curs, nxtd); + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); - // undo scaling and round, then store with even/odd phases interleaved - uint8x8x2_t o; - o.val[0] = vqrshrun_n_s16(even, 4); - o.val[1] = vqrshrun_n_s16(odd, 4); - vst2_u8(out + i * 2, o); + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i * 2, o); #endif - // "previous" value for next iter - t1 = 3 * in_near[i + 7] + in_far[i + 7]; - } + // "previous" value for next iter + t1 = 3 * in_near[i + 7] + in_far[i + 7]; + } - t0 = t1; - t1 = 3 * in_near[i] + in_far[i]; - out[i * 2] = stbi__div16(3 * t1 + t0 + 8); - - for (++i; i < w; ++i) { t0 = t1; t1 = 3 * in_near[i] + in_far[i]; - out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); out[i * 2] = stbi__div16(3 * t1 + t0 + 8); - } - out[w * 2 - 1] = stbi__div4(t1 + 2); - STBI_NOTUSED(hs); + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3 * in_near[i] + in_far[i]; + out[i * 2 - 1] = stbi__div16(3 * t0 + t1 + 8); + out[i * 2] = stbi__div16(3 * t1 + t0 + 8); + } + out[w * 2 - 1] = stbi__div4(t1 + 2); - return out; + STBI_NOTUSED(hs); + + return out; } #endif -static stbi_uc* stbi__resample_row_generic(stbi_uc* out, stbi_uc* in_near, stbi_uc* in_far, int w, int hs) +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, + stbi_uc *in_far, int w, int hs) { - // resample with nearest-neighbor - int i, j; - STBI_NOTUSED(in_far); - for (i = 0; i < w; ++i) - for (j = 0; j < hs; ++j) - out[i * hs + j] = in_near[i]; - return out; + // resample with nearest-neighbor + int i, j; + STBI_NOTUSED(in_far); + for (i = 0; i < w; ++i) + for (j = 0; j < hs; ++j) + out[i * hs + j] = in_near[i]; + return out; } // this is a reduced-precision calculation of YCbCr-to-RGB introduced // to make sure the code produces the same results in both SIMD and scalar -#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) -static void stbi__YCbCr_to_RGB_row(stbi_uc* out, const stbi_uc* y, const stbi_uc* pcb, const stbi_uc* pcr, int count, int step) +#define stbi__float2fixed(x) (((int)((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, + const stbi_uc *pcb, const stbi_uc *pcr, + int count, int step) { - int i; - for (i = 0; i < count; ++i) { - int y_fixed = (y[i] << 20) + (1 << 19); // rounding - int r, g, b; - int cr = pcr[i] - 128; - int cb = pcb[i] - 128; - r = y_fixed + cr * stbi__float2fixed(1.40200f); - g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); - b = y_fixed + cb * stbi__float2fixed(1.77200f); - r >>= 20; - g >>= 20; - b >>= 20; - if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } - if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } - if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } - out[0] = (stbi_uc)r; - out[1] = (stbi_uc)g; - out[2] = (stbi_uc)b; - out[3] = 255; - out += step; - } + int i; + for (i = 0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + (cr * -stbi__float2fixed(0.71414f)) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } } #if defined(STBI_SSE2) || defined(STBI_NEON) -static void stbi__YCbCr_to_RGB_simd(stbi_uc* out, stbi_uc const* y, stbi_uc const* pcb, stbi_uc const* pcr, int count, int step) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, + stbi_uc const *pcb, stbi_uc const *pcr, + int count, int step) { - int i = 0; + int i = 0; #ifdef STBI_SSE2 - // step == 3 is pretty ugly on the final interleave, and i'm not convinced - // it's useful in practice (you wouldn't use it for textures, for example). - // so just accelerate step == 4 case. - if (step == 4) { - // this is a fairly straightforward implementation and not super-optimized. - __m128i signflip = _mm_set1_epi8(-0x80); - __m128i cr_const0 = _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); - __m128i cr_const1 = _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); - __m128i cb_const0 = _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); - __m128i cb_const1 = _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); - __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); - __m128i xw = _mm_set1_epi16(255); // alpha channel + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = + _mm_set1_epi16((short)(1.40200f * 4096.0f + 0.5f)); + __m128i cr_const1 = + _mm_set1_epi16(-(short)(0.71414f * 4096.0f + 0.5f)); + __m128i cb_const0 = + _mm_set1_epi16(-(short)(0.34414f * 4096.0f + 0.5f)); + __m128i cb_const1 = + _mm_set1_epi16((short)(1.77200f * 4096.0f + 0.5f)); + __m128i y_bias = _mm_set1_epi8((char)(unsigned char)128); + __m128i xw = _mm_set1_epi16(255); // alpha channel - for (; i + 7 < count; i += 8) { - // load - __m128i y_bytes = _mm_loadl_epi64((__m128i*) (y + i)); - __m128i cr_bytes = _mm_loadl_epi64((__m128i*) (pcr + i)); - __m128i cb_bytes = _mm_loadl_epi64((__m128i*) (pcb + i)); - __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 - __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + for (; i + 7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *)(y + i)); + __m128i cr_bytes = + _mm_loadl_epi64((__m128i *)(pcr + i)); + __m128i cb_bytes = + _mm_loadl_epi64((__m128i *)(pcb + i)); + __m128i cr_biased = + _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = + _mm_xor_si128(cb_bytes, signflip); // -128 - // unpack to short (and left-shift cr, cb by 8) - __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); - __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); - __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), + cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), + cb_biased); - // color transform - __m128i yws = _mm_srli_epi16(yw, 4); - __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); - __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); - __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); - __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); - __m128i rws = _mm_add_epi16(cr0, yws); - __m128i gwt = _mm_add_epi16(cb0, yws); - __m128i bws = _mm_add_epi16(yws, cb1); - __m128i gws = _mm_add_epi16(gwt, cr1); + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); - // descale - __m128i rw = _mm_srai_epi16(rws, 4); - __m128i bw = _mm_srai_epi16(bws, 4); - __m128i gw = _mm_srai_epi16(gws, 4); + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); - // back to byte, set up for transpose - __m128i brb = _mm_packus_epi16(rw, bw); - __m128i gxb = _mm_packus_epi16(gw, xw); + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); - // transpose to interleave channels - __m128i t0 = _mm_unpacklo_epi8(brb, gxb); - __m128i t1 = _mm_unpackhi_epi8(brb, gxb); - __m128i o0 = _mm_unpacklo_epi16(t0, t1); - __m128i o1 = _mm_unpackhi_epi16(t0, t1); + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); - // store - _mm_storeu_si128((__m128i*) (out + 0), o0); - _mm_storeu_si128((__m128i*) (out + 16), o1); - out += 32; + // store + _mm_storeu_si128((__m128i *)(out + 0), o0); + _mm_storeu_si128((__m128i *)(out + 16), o1); + out += 32; + } } - } #endif #ifdef STBI_NEON - // in this version, step=3 support would be easy to add. but is there demand? - if (step == 4) { - // this is a fairly straightforward implementation and not super-optimized. - uint8x8_t signflip = vdup_n_u8(0x80); - int16x8_t cr_const0 = vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); - int16x8_t cr_const1 = vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); - int16x8_t cb_const0 = vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); - int16x8_t cb_const1 = vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = + vdupq_n_s16((short)(1.40200f * 4096.0f + 0.5f)); + int16x8_t cr_const1 = + vdupq_n_s16(-(short)(0.71414f * 4096.0f + 0.5f)); + int16x8_t cb_const0 = + vdupq_n_s16(-(short)(0.34414f * 4096.0f + 0.5f)); + int16x8_t cb_const1 = + vdupq_n_s16((short)(1.77200f * 4096.0f + 0.5f)); - for (; i + 7 < count; i += 8) { - // load - uint8x8_t y_bytes = vld1_u8(y + i); - uint8x8_t cr_bytes = vld1_u8(pcr + i); - uint8x8_t cb_bytes = vld1_u8(pcb + i); - int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); - int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + for (; i + 7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = + vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = + vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); - // expand to s16 - int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); - int16x8_t crw = vshll_n_s8(cr_biased, 7); - int16x8_t cbw = vshll_n_s8(cb_biased, 7); + // expand to s16 + int16x8_t yws = + vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); - // color transform - int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); - int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); - int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); - int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); - int16x8_t rws = vaddq_s16(yws, cr0); - int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); - int16x8_t bws = vaddq_s16(yws, cb1); + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); - // undo scaling, round, convert to byte - uint8x8x4_t o; - o.val[0] = vqrshrun_n_s16(rws, 4); - o.val[1] = vqrshrun_n_s16(gws, 4); - o.val[2] = vqrshrun_n_s16(bws, 4); - o.val[3] = vdup_n_u8(255); + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); - // store, interleaving r/g/b/a - vst4_u8(out, o); - out += 8 * 4; + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8 * 4; + } } - } #endif - for (; i < count; ++i) { - int y_fixed = (y[i] << 20) + (1 << 19); // rounding - int r, g, b; - int cr = pcr[i] - 128; - int cb = pcb[i] - 128; - r = y_fixed + cr * stbi__float2fixed(1.40200f); - g = y_fixed + cr * -stbi__float2fixed(0.71414f) + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); - b = y_fixed + cb * stbi__float2fixed(1.77200f); - r >>= 20; - g >>= 20; - b >>= 20; - if ((unsigned)r > 255) { if (r < 0) r = 0; else r = 255; } - if ((unsigned)g > 255) { if (g < 0) g = 0; else g = 255; } - if ((unsigned)b > 255) { if (b < 0) b = 0; else b = 255; } - out[0] = (stbi_uc)r; - out[1] = (stbi_uc)g; - out[2] = (stbi_uc)b; - out[3] = 255; - out += step; - } + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1 << 19); // rounding + int r, g, b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr * stbi__float2fixed(1.40200f); + g = y_fixed + cr * -stbi__float2fixed(0.71414f) + + ((cb * -stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb * stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned)r > 255) { + if (r < 0) + r = 0; + else + r = 255; + } + if ((unsigned)g > 255) { + if (g < 0) + g = 0; + else + g = 255; + } + if ((unsigned)b > 255) { + if (b < 0) + b = 0; + else + b = 255; + } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } } #endif // set up the kernels -static void stbi__setup_jpeg(stbi__jpeg* j) +static void stbi__setup_jpeg(stbi__jpeg *j) { - j->idct_block_kernel = stbi__idct_block; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; #ifdef STBI_SSE2 - if (stbi__sse2_available()) { - j->idct_block_kernel = stbi__idct_simd; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; - } + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } #endif #ifdef STBI_NEON - j->idct_block_kernel = stbi__idct_simd; - j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; - j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; #endif } // clean up the temporary component buffers -static void stbi__cleanup_jpeg(stbi__jpeg* j) +static void stbi__cleanup_jpeg(stbi__jpeg *j) { - stbi__free_jpeg_components(j, j->s->img_n, 0); + stbi__free_jpeg_components(j, j->s->img_n, 0); } -typedef struct -{ - resample_row_func resample; - stbi_uc* line0, * line1; - int hs, vs; // expansion factor in each axis - int w_lores; // horizontal pixels pre-expansion - int ystep; // how far through vertical expansion we are - int ypos; // which pre-expansion row we're on +typedef struct { + resample_row_func resample; + stbi_uc *line0, *line1; + int hs, vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on } stbi__resample; // fast 0..255 * 0..255 => 0..255 rounded multiplication static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) { - unsigned int t = x * y + 128; - return (stbi_uc)((t + (t >> 8)) >> 8); + unsigned int t = x * y + 128; + return (stbi_uc)((t + (t >> 8)) >> 8); } -static stbi_uc* load_jpeg_image(stbi__jpeg* z, int* out_x, int* out_y, int* comp, int req_comp) +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, + int *comp, int req_comp) { - int n, decode_n, is_rgb; - z->s->img_n = 0; // make stbi__cleanup_jpeg safe + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe - // validate req_comp - if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + // validate req_comp + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); - // load a jpeg image from whichever source, but leave in YCbCr format - if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } - - // determine actual number of components to generate - n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; - - is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); - - if (z->s->img_n == 3 && n < 3 && !is_rgb) - decode_n = 1; - else - decode_n = z->s->img_n; - - // nothing to do if no components requested; check this now to avoid - // accessing uninitialized coutput[0] later - if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } - - // resample and color-convert - { - int k; - unsigned int i, j; - stbi_uc* output; - stbi_uc* coutput[4] = { NULL, NULL, NULL, NULL }; - - stbi__resample res_comp[4]; - - for (k = 0; k < decode_n; ++k) { - stbi__resample* r = &res_comp[k]; - - // allocate line buffer big enough for upsampling off the edges - // with upsample factor of 4 - z->img_comp[k].linebuf = (stbi_uc*)stbi__malloc(z->s->img_x + 3); - if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } - - r->hs = z->img_h_max / z->img_comp[k].h; - r->vs = z->img_v_max / z->img_comp[k].v; - r->ystep = r->vs >> 1; - r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; - r->ypos = 0; - r->line0 = r->line1 = z->img_comp[k].data; - - if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; - else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; - else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; - else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; - else r->resample = stbi__resample_row_generic; + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { + stbi__cleanup_jpeg(z); + return NULL; } - // can't error after this so, this is safe - output = (stbi_uc*)stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); - if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; - // now go ahead and resample - for (j = 0; j < z->s->img_y; ++j) { - stbi_uc* out = output + n * z->s->img_x * j; - for (k = 0; k < decode_n; ++k) { - stbi__resample* r = &res_comp[k]; - int y_bot = r->ystep >= (r->vs >> 1); - coutput[k] = r->resample(z->img_comp[k].linebuf, - y_bot ? r->line1 : r->line0, - y_bot ? r->line0 : r->line1, - r->w_lores, r->hs); - if (++r->ystep >= r->vs) { - r->ystep = 0; - r->line0 = r->line1; - if (++r->ypos < z->img_comp[k].y) - r->line1 += z->img_comp[k].w2; + is_rgb = z->s->img_n == 3 && + (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { + stbi__cleanup_jpeg(z); + return NULL; + } + + // resample and color-convert + { + int k; + unsigned int i, j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = + (stbi_uc *)stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", + "Out of memory"); + } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs - 1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) + r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) + r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) + r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) + r->resample = z->resample_row_hv_2_kernel; + else + r->resample = stbi__resample_row_generic; } - } - if (n >= 3) { - stbi_uc* y = coutput[0]; - if (z->s->img_n == 3) { - if (is_rgb) { - for (i = 0; i < z->s->img_x; ++i) { - out[0] = y[i]; - out[1] = coutput[1][i]; - out[2] = coutput[2][i]; - out[3] = 255; - out += n; - } - } - else { - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - } + + // can't error after this so, this is safe + output = (stbi_uc *)stbi__malloc_mad3(n, z->s->img_x, + z->s->img_y, 1); + if (!output) { + stbi__cleanup_jpeg(z); + return stbi__errpuc("outofmem", "Out of memory"); } - else if (z->s->img_n == 4) { - if (z->app14_color_transform == 0) { // CMYK - for (i = 0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - out[0] = stbi__blinn_8x8(coutput[0][i], m); - out[1] = stbi__blinn_8x8(coutput[1][i], m); - out[2] = stbi__blinn_8x8(coutput[2][i], m); - out[3] = 255; - out += n; + + // now go ahead and resample + for (j = 0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k = 0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = + r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } } - } - else if (z->app14_color_transform == 2) { // YCCK - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - for (i = 0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - out[0] = stbi__blinn_8x8(255 - out[0], m); - out[1] = stbi__blinn_8x8(255 - out[1], m); - out[2] = stbi__blinn_8x8(255 - out[2], m); - out += n; - } - } - else { // YCbCr + alpha? Ignore the fourth channel for now - z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); - } - } - else - for (i = 0; i < z->s->img_x; ++i) { - out[0] = out[1] = out[2] = y[i]; - out[3] = 255; // not used if n==3 - out += n; - } - } - else { - if (is_rgb) { - if (n == 1) - for (i = 0; i < z->s->img_x; ++i) - *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); - else { - for (i = 0; i < z->s->img_x; ++i, out += 2) { - out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); - out[1] = 255; + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i = 0; i < z->s->img_x; + ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel( + out, y, coutput[1], + coutput[2], z->s->img_x, + n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == + 0) { // CMYK + for (i = 0; i < z->s->img_x; + ++i) { + stbi_uc m = + coutput[3][i]; + out[0] = stbi__blinn_8x8( + coutput[0][i], + m); + out[1] = stbi__blinn_8x8( + coutput[1][i], + m); + out[2] = stbi__blinn_8x8( + coutput[2][i], + m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == + 2) { // YCCK + z->YCbCr_to_RGB_kernel( + out, y, coutput[1], + coutput[2], z->s->img_x, + n); + for (i = 0; i < z->s->img_x; + ++i) { + stbi_uc m = + coutput[3][i]; + out[0] = stbi__blinn_8x8( + 255 - out[0], + m); + out[1] = stbi__blinn_8x8( + 255 - out[1], + m); + out[2] = stbi__blinn_8x8( + 255 - out[2], + m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel( + out, y, coutput[1], + coutput[2], z->s->img_x, + n); + } + } else + for (i = 0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = + 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i = 0; i < z->s->img_x; + ++i) + *out++ = stbi__compute_y( + coutput[0][i], + coutput[1][i], + coutput[2][i]); + else { + for (i = 0; i < z->s->img_x; + ++i, out += 2) { + out[0] = stbi__compute_y( + coutput[0][i], + coutput[1][i], + coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && + z->app14_color_transform == 0) { + for (i = 0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8( + coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8( + coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8( + coutput[2][i], m); + out[0] = stbi__compute_y(r, g, + b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && + z->app14_color_transform == 2) { + for (i = 0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8( + 255 - coutput[0][i], + coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i = 0; i < z->s->img_x; + ++i) + out[i] = y[i]; + else + for (i = 0; i < z->s->img_x; + ++i) { + *out++ = y[i]; + *out++ = 255; + } + } } - } - } - else if (z->s->img_n == 4 && z->app14_color_transform == 0) { - for (i = 0; i < z->s->img_x; ++i) { - stbi_uc m = coutput[3][i]; - stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); - stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); - stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); - out[0] = stbi__compute_y(r, g, b); - out[1] = 255; - out += n; - } - } - else if (z->s->img_n == 4 && z->app14_color_transform == 2) { - for (i = 0; i < z->s->img_x; ++i) { - out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); - out[1] = 255; - out += n; - } - } - else { - stbi_uc* y = coutput[0]; - if (n == 1) - for (i = 0; i < z->s->img_x; ++i) out[i] = y[i]; - else - for (i = 0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } } - } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) + *comp = z->s->img_n >= 3 ? + 3 : + 1; // report original components, not output + return output; } - stbi__cleanup_jpeg(z); - *out_x = z->s->img_x; - *out_y = z->s->img_y; - if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output - return output; - } } -static void* stbi__jpeg_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) { - unsigned char* result; - stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); - if (!j) return stbi__errpuc("outofmem", "Out of memory"); - memset(j, 0, sizeof(stbi__jpeg)); - STBI_NOTUSED(ri); - j->s = s; - stbi__setup_jpeg(j); - result = load_jpeg_image(j, x, y, comp, req_comp); - STBI_FREE(j); - return result; + unsigned char *result; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x, y, comp, req_comp); + STBI_FREE(j); + return result; } -static int stbi__jpeg_test(stbi__context* s) +static int stbi__jpeg_test(stbi__context *s) { - int r; - stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); - if (!j) return stbi__err("outofmem", "Out of memory"); - memset(j, 0, sizeof(stbi__jpeg)); - j->s = s; - stbi__setup_jpeg(j); - r = stbi__decode_jpeg_header(j, STBI__SCAN_type); - stbi__rewind(s); - STBI_FREE(j); - return r; + int r; + stbi__jpeg *j = (stbi__jpeg *)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; } -static int stbi__jpeg_info_raw(stbi__jpeg* j, int* x, int* y, int* comp) +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) { - if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { - stbi__rewind(j->s); - return 0; - } - if (x) *x = j->s->img_x; - if (y) *y = j->s->img_y; - if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; - return 1; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind(j->s); + return 0; + } + if (x) + *x = j->s->img_x; + if (y) + *y = j->s->img_y; + if (comp) + *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; } -static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) { - int result; - stbi__jpeg* j = (stbi__jpeg*)(stbi__malloc(sizeof(stbi__jpeg))); - if (!j) return stbi__err("outofmem", "Out of memory"); - memset(j, 0, sizeof(stbi__jpeg)); - j->s = s; - result = stbi__jpeg_info_raw(j, x, y, comp); - STBI_FREE(j); - return result; + int result; + stbi__jpeg *j = (stbi__jpeg *)(stbi__malloc(sizeof(stbi__jpeg))); + if (!j) + return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; } #endif @@ -3579,84 +4349,87 @@ static int stbi__jpeg_info(stbi__context* s, int* x, int* y, int* comp) #ifndef STBI_NO_ZLIB // fast-way is faster to check than jpeg huffman, but slow way is slower -#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables -#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) #define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet // zlib-style huffman encoding // (jpegs packs from left, zlib from right, so can't share code) -typedef struct -{ - stbi__uint16 fast[1 << STBI__ZFAST_BITS]; - stbi__uint16 firstcode[16]; - int maxcode[17]; - stbi__uint16 firstsymbol[16]; - stbi_uc size[STBI__ZNSYMS]; - stbi__uint16 value[STBI__ZNSYMS]; +typedef struct { + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; } stbi__zhuffman; stbi_inline static int stbi__bitreverse16(int n) { - n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); - n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); - n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); - n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); - return n; + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; } stbi_inline static int stbi__bit_reverse(int v, int bits) { - STBI_ASSERT(bits <= 16); - // to bit reverse n bits, reverse 16 and shift - // e.g. 11 bits, bit reverse and shift away 5 - return stbi__bitreverse16(v) >> (16 - bits); + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16 - bits); } -static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int num) +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, + int num) { - int i, k = 0; - int code, next_code[16], sizes[17]; + int i, k = 0; + int code, next_code[16], sizes[17]; - // DEFLATE spec for generating codes - memset(sizes, 0, sizeof(sizes)); - memset(z->fast, 0, sizeof(z->fast)); - for (i = 0; i < num; ++i) - ++sizes[sizelist[i]]; - sizes[0] = 0; - for (i = 1; i < 16; ++i) - if (sizes[i] > (1 << i)) - return stbi__err("bad sizes", "Corrupt PNG"); - code = 0; - for (i = 1; i < 16; ++i) { - next_code[i] = code; - z->firstcode[i] = (stbi__uint16)code; - z->firstsymbol[i] = (stbi__uint16)k; - code = (code + sizes[i]); - if (sizes[i]) - if (code - 1 >= (1 << i)) return stbi__err("bad codelengths", "Corrupt PNG"); - z->maxcode[i] = code << (16 - i); // preshift for inner loop - code <<= 1; - k += sizes[i]; - } - z->maxcode[16] = 0x10000; // sentinel - for (i = 0; i < num; ++i) { - int s = sizelist[i]; - if (s) { - int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; - stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); - z->size[c] = (stbi_uc)s; - z->value[c] = (stbi__uint16)i; - if (s <= STBI__ZFAST_BITS) { - int j = stbi__bit_reverse(next_code[s], s); - while (j < (1 << STBI__ZFAST_BITS)) { - z->fast[j] = fastv; - j += (1 << s); - } - } - ++next_code[s]; + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i = 0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i = 1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i = 1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16)code; + z->firstsymbol[i] = (stbi__uint16)k; + code = (code + sizes[i]); + if (sizes[i]) + if (code - 1 >= (1 << i)) + return stbi__err("bad codelengths", + "Corrupt PNG"); + z->maxcode[i] = code << (16 - i); // preshift for inner loop + code <<= 1; + k += sizes[i]; } - } - return 1; + z->maxcode[16] = 0x10000; // sentinel + for (i = 0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16)((s << 9) | i); + z->size[c] = (stbi_uc)s; + z->value[c] = (stbi__uint16)i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s], s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; } // zlib-from-memory implementation for PNG reading @@ -3665,283 +4438,342 @@ static int stbi__zbuild_huffman(stbi__zhuffman* z, const stbi_uc* sizelist, int // we require PNG read all the IDATs and combine them into a single // memory buffer -typedef struct -{ - stbi_uc* zbuffer, * zbuffer_end; - int num_bits; - stbi__uint32 code_buffer; +typedef struct { + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; - char* zout; - char* zout_start; - char* zout_end; - int z_expandable; + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; - stbi__zhuffman z_length, z_distance; + stbi__zhuffman z_length, z_distance; } stbi__zbuf; -stbi_inline static int stbi__zeof(stbi__zbuf* z) +stbi_inline static int stbi__zeof(stbi__zbuf *z) { - return (z->zbuffer >= z->zbuffer_end); + return (z->zbuffer >= z->zbuffer_end); } -stbi_inline static stbi_uc stbi__zget8(stbi__zbuf* z) +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) { - return stbi__zeof(z) ? 0 : *z->zbuffer++; + return stbi__zeof(z) ? 0 : *z->zbuffer++; } -static void stbi__fill_bits(stbi__zbuf* z) +static void stbi__fill_bits(stbi__zbuf *z) { - do { - if (z->code_buffer >= (1U << z->num_bits)) { - z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ - return; - } - z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; - z->num_bits += 8; - } while (z->num_bits <= 24); + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = + z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int)stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); } -stbi_inline static unsigned int stbi__zreceive(stbi__zbuf* z, int n) +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) { - unsigned int k; - if (z->num_bits < n) stbi__fill_bits(z); - k = z->code_buffer & ((1 << n) - 1); - z->code_buffer >>= n; - z->num_bits -= n; - return k; + unsigned int k; + if (z->num_bits < n) + stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; } -static int stbi__zhuffman_decode_slowpath(stbi__zbuf* a, stbi__zhuffman* z) +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) { - int b, s, k; - // not resolved by fast table, so compute it the slow way - // use jpeg approach, which requires MSbits at top - k = stbi__bit_reverse(a->code_buffer, 16); - for (s = STBI__ZFAST_BITS + 1; ; ++s) - if (k < z->maxcode[s]) - break; - if (s >= 16) return -1; // invalid code! - // code size is s, so: - b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; - if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! - if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. - a->code_buffer >>= s; - a->num_bits -= s; - return z->value[b]; -} - -stbi_inline static int stbi__zhuffman_decode(stbi__zbuf* a, stbi__zhuffman* z) -{ - int b, s; - if (a->num_bits < 16) { - if (stbi__zeof(a)) { - return -1; /* report error for unexpected end of data. */ - } - stbi__fill_bits(a); - } - b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; - if (b) { - s = b >> 9; + int b, s, k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s = STBI__ZFAST_BITS + 1;; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) + return -1; // invalid code! + // code size is s, so: + b = (k >> (16 - s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) + return -1; // some data was corrupt somewhere! + if (z->size[b] != s) + return -1; // was originally an assert, but report failure instead. a->code_buffer >>= s; a->num_bits -= s; - return b & 511; - } - return stbi__zhuffman_decode_slowpath(a, z); + return z->value[b]; } -static int stbi__zexpand(stbi__zbuf* z, char* zout, int n) // need to make room for n bytes +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) { - char* q; - unsigned int cur, limit, old_limit; - z->zout = zout; - if (!z->z_expandable) return stbi__err("output buffer limit", "Corrupt PNG"); - cur = (unsigned int)(z->zout - z->zout_start); - limit = old_limit = (unsigned)(z->zout_end - z->zout_start); - if (UINT_MAX - cur < (unsigned)n) return stbi__err("outofmem", "Out of memory"); - while (cur + n > limit) { - if (limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); - limit *= 2; - } - q = (char*)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); - STBI_NOTUSED(old_limit); - if (q == NULL) return stbi__err("outofmem", "Out of memory"); - z->zout_start = q; - z->zout = q + cur; - z->zout_end = q + limit; - return 1; + int b, s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, + int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) + return stbi__err("output buffer limit", "Corrupt PNG"); + cur = (unsigned int)(z->zout - z->zout_start); + limit = old_limit = (unsigned)(z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned)n) + return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if (limit > UINT_MAX / 2) + return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *)STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) + return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; } static const int stbi__zlength_base[31] = { - 3,4,5,6,7,8,9,10,11,13, - 15,17,19,23,27,31,35,43,51,59, - 67,83,99,115,131,163,195,227,258,0,0 }; + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +}; -static const int stbi__zlength_extra[31] = -{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; +static const int stbi__zlength_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, + 4, 4, 5, 5, 5, 5, 0, 0, 0 }; -static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, -257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0 }; +static const int stbi__zdist_base[32] = { + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, + 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, + 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 +}; -static const int stbi__zdist_extra[32] = -{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13 }; +static const int stbi__zdist_extra[32] = { + 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, + 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 +}; -static int stbi__parse_huffman_block(stbi__zbuf* a) +static int stbi__parse_huffman_block(stbi__zbuf *a) { - char* zout = a->zout; - for (;;) { - int z = stbi__zhuffman_decode(a, &a->z_length); - if (z < 256) { - if (z < 0) return stbi__err("bad huffman code", "Corrupt PNG"); // error in huffman codes - if (zout >= a->zout_end) { - if (!stbi__zexpand(a, zout, 1)) return 0; - zout = a->zout; - } - *zout++ = (char)z; + char *zout = a->zout; + for (;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) + return 0; + zout = a->zout; + } + *zout++ = (char)z; + } else { + stbi_uc *p; + int len, dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) + len += stbi__zreceive(a, + stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) + return stbi__err( + "bad huffman code", + "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) + dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) + return stbi__err("bad dist", "Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) + return 0; + zout = a->zout; + } + p = (stbi_uc *)(zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { + do + *zout++ = v; + while (--len); + } + } else { + if (len) { + do + *zout++ = *p++; + while (--len); + } + } + } } - else { - stbi_uc* p; - int len, dist; - if (z == 256) { - a->zout = zout; - return 1; - } - if (z >= 286) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data - z -= 257; - len = stbi__zlength_base[z]; - if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); - z = stbi__zhuffman_decode(a, &a->z_distance); - if (z < 0 || z >= 30) return stbi__err("bad huffman code", "Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data - dist = stbi__zdist_base[z]; - if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); - if (zout - a->zout_start < dist) return stbi__err("bad dist", "Corrupt PNG"); - if (zout + len > a->zout_end) { - if (!stbi__zexpand(a, zout, len)) return 0; - zout = a->zout; - } - p = (stbi_uc*)(zout - dist); - if (dist == 1) { // run of one byte; common in images. - stbi_uc v = *p; - if (len) { do *zout++ = v; while (--len); } - } - else { - if (len) { do *zout++ = *p++; while (--len); } - } - } - } } -static int stbi__compute_huffman_codes(stbi__zbuf* a) +static int stbi__compute_huffman_codes(stbi__zbuf *a) { - static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; - stbi__zhuffman z_codelength; - stbi_uc lencodes[286 + 32 + 137];//padding for maximum single op - stbi_uc codelength_sizes[19]; - int i, n; + static const stbi_uc length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, + 6, 10, 5, 11, 4, 12, 3, + 13, 2, 14, 1, 15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286 + 32 + 137]; //padding for maximum single op + stbi_uc codelength_sizes[19]; + int i, n; - int hlit = stbi__zreceive(a, 5) + 257; - int hdist = stbi__zreceive(a, 5) + 1; - int hclen = stbi__zreceive(a, 4) + 4; - int ntot = hlit + hdist; + int hlit = stbi__zreceive(a, 5) + 257; + int hdist = stbi__zreceive(a, 5) + 1; + int hclen = stbi__zreceive(a, 4) + 4; + int ntot = hlit + hdist; - memset(codelength_sizes, 0, sizeof(codelength_sizes)); - for (i = 0; i < hclen; ++i) { - int s = stbi__zreceive(a, 3); - codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; - } - if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i = 0; i < hclen; ++i) { + int s = stbi__zreceive(a, 3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc)s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) + return 0; - n = 0; - while (n < ntot) { - int c = stbi__zhuffman_decode(a, &z_codelength); - if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); - if (c < 16) - lencodes[n++] = (stbi_uc)c; - else { - stbi_uc fill = 0; - if (c == 16) { - c = stbi__zreceive(a, 2) + 3; - if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); - fill = lencodes[n - 1]; - } - else if (c == 17) { - c = stbi__zreceive(a, 3) + 3; - } - else if (c == 18) { - c = stbi__zreceive(a, 7) + 11; - } - else { + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) + return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc)c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a, 2) + 3; + if (n == 0) + return stbi__err("bad codelengths", + "Corrupt PNG"); + fill = lencodes[n - 1]; + } else if (c == 17) { + c = stbi__zreceive(a, 3) + 3; + } else if (c == 18) { + c = stbi__zreceive(a, 7) + 11; + } else { + return stbi__err("bad codelengths", + "Corrupt PNG"); + } + if (ntot - n < c) + return stbi__err("bad codelengths", + "Corrupt PNG"); + memset(lencodes + n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); - } - if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); - memset(lencodes + n, fill, c); - n += c; + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) + return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) + return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len, nlen, k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc)(a->code_buffer & + 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; } - } - if (n != ntot) return stbi__err("bad codelengths", "Corrupt PNG"); - if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; - if (!stbi__zbuild_huffman(&a->z_distance, lencodes + hlit, hdist)) return 0; - return 1; + if (a->num_bits < 0) + return stbi__err("zlib corrupt", "Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) + return stbi__err("zlib corrupt", "Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) + return stbi__err("read past buffer", "Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) + return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; } -static int stbi__parse_uncompressed_block(stbi__zbuf* a) +static int stbi__parse_zlib_header(stbi__zbuf *a) { - stbi_uc header[4]; - int len, nlen, k; - if (a->num_bits & 7) - stbi__zreceive(a, a->num_bits & 7); // discard - // drain the bit-packed data into header - k = 0; - while (a->num_bits > 0) { - header[k++] = (stbi_uc)(a->code_buffer & 255); // suppress MSVC run-time check - a->code_buffer >>= 8; - a->num_bits -= 8; - } - if (a->num_bits < 0) return stbi__err("zlib corrupt", "Corrupt PNG"); - // now fill header the normal way - while (k < 4) - header[k++] = stbi__zget8(a); - len = header[1] * 256 + header[0]; - nlen = header[3] * 256 + header[2]; - if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt", "Corrupt PNG"); - if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer", "Corrupt PNG"); - if (a->zout + len > a->zout_end) - if (!stbi__zexpand(a, a->zout, len)) return 0; - memcpy(a->zout, a->zbuffer, len); - a->zbuffer += len; - a->zout += len; - return 1; + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if ((cmf * 256 + flg) % 31 != 0) + return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec + if (flg & 32) + return stbi__err( + "no preset dict", + "Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) + return stbi__err("bad compression", + "Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; } -static int stbi__parse_zlib_header(stbi__zbuf* a) -{ - int cmf = stbi__zget8(a); - int cm = cmf & 15; - /* int cinfo = cmf >> 4; */ - int flg = stbi__zget8(a); - if (stbi__zeof(a)) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec - if ((cmf * 256 + flg) % 31 != 0) return stbi__err("bad zlib header", "Corrupt PNG"); // zlib spec - if (flg & 32) return stbi__err("no preset dict", "Corrupt PNG"); // preset dictionary not allowed in png - if (cm != 8) return stbi__err("bad compression", "Corrupt PNG"); // DEFLATE required for png - // window = 1 << (8 + cinfo)... but who cares, we fully buffer output - return 1; -} - -static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = -{ - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, - 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 -}; -static const stbi_uc stbi__zdefault_distance[32] = -{ - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = { + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8 }; +static const stbi_uc stbi__zdefault_distance[32] = { 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5 }; /* Init algorithm: { @@ -3955,123 +4787,142 @@ Init algorithm: } */ -static int stbi__parse_zlib(stbi__zbuf* a, int parse_header) +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) { - int final, type; - if (parse_header) - if (!stbi__parse_zlib_header(a)) return 0; - a->num_bits = 0; - a->code_buffer = 0; - do { - final = stbi__zreceive(a, 1); - type = stbi__zreceive(a, 2); - if (type == 0) { - if (!stbi__parse_uncompressed_block(a)) return 0; + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) + return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a, 1); + type = stbi__zreceive(a, 2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) + return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length, + stbi__zdefault_length, + STBI__ZNSYMS)) + return 0; + if (!stbi__zbuild_huffman( + &a->z_distance, + stbi__zdefault_distance, 32)) + return 0; + } else { + if (!stbi__compute_huffman_codes(a)) + return 0; + } + if (!stbi__parse_huffman_block(a)) + return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, + int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, + int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; } - else if (type == 3) { - return 0; +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, + int len, + int initial_size, + int *outlen, + int parse_header) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(initial_size); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; } - else { - if (type == 1) { - // use fixed code lengths - if (!stbi__zbuild_huffman(&a->z_length, stbi__zdefault_length, STBI__ZNSYMS)) return 0; - if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; - } - else { - if (!stbi__compute_huffman_codes(a)) return 0; - } - if (!stbi__parse_huffman_block(a)) return 0; +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, + char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int)(a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, + int *outlen) +{ + stbi__zbuf a; + char *p = (char *)stbi__malloc(16384); + if (p == NULL) + return NULL; + a.zbuffer = (stbi_uc *)buffer; + a.zbuffer_end = (stbi_uc *)buffer + len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) + *outlen = (int)(a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; } - } while (!final); - return 1; } -static int stbi__do_zlib(stbi__zbuf* a, char* obuf, int olen, int exp, int parse_header) +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, + const char *ibuffer, int ilen) { - a->zout_start = obuf; - a->zout = obuf; - a->zout_end = obuf + olen; - a->z_expandable = exp; - - return stbi__parse_zlib(a, parse_header); -} - -STBIDEF char* stbi_zlib_decode_malloc_guesssize(const char* buffer, int len, int initial_size, int* outlen) -{ - stbi__zbuf a; - char* p = (char*)stbi__malloc(initial_size); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc*)buffer; - a.zbuffer_end = (stbi_uc*)buffer + len; - if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { - if (outlen) *outlen = (int)(a.zout - a.zout_start); - return a.zout_start; - } - else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF char* stbi_zlib_decode_malloc(char const* buffer, int len, int* outlen) -{ - return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); -} - -STBIDEF char* stbi_zlib_decode_malloc_guesssize_headerflag(const char* buffer, int len, int initial_size, int* outlen, int parse_header) -{ - stbi__zbuf a; - char* p = (char*)stbi__malloc(initial_size); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc*)buffer; - a.zbuffer_end = (stbi_uc*)buffer + len; - if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { - if (outlen) *outlen = (int)(a.zout - a.zout_start); - return a.zout_start; - } - else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF int stbi_zlib_decode_buffer(char* obuffer, int olen, char const* ibuffer, int ilen) -{ - stbi__zbuf a; - a.zbuffer = (stbi_uc*)ibuffer; - a.zbuffer_end = (stbi_uc*)ibuffer + ilen; - if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) - return (int)(a.zout - a.zout_start); - else - return -1; -} - -STBIDEF char* stbi_zlib_decode_noheader_malloc(char const* buffer, int len, int* outlen) -{ - stbi__zbuf a; - char* p = (char*)stbi__malloc(16384); - if (p == NULL) return NULL; - a.zbuffer = (stbi_uc*)buffer; - a.zbuffer_end = (stbi_uc*)buffer + len; - if (stbi__do_zlib(&a, p, 16384, 1, 0)) { - if (outlen) *outlen = (int)(a.zout - a.zout_start); - return a.zout_start; - } - else { - STBI_FREE(a.zout_start); - return NULL; - } -} - -STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char* ibuffer, int ilen) -{ - stbi__zbuf a; - a.zbuffer = (stbi_uc*)ibuffer; - a.zbuffer_end = (stbi_uc*)ibuffer + ilen; - if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) - return (int)(a.zout - a.zout_start); - else - return -1; + stbi__zbuf a; + a.zbuffer = (stbi_uc *)ibuffer; + a.zbuffer_end = (stbi_uc *)ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int)(a.zout - a.zout_start); + else + return -1; } #endif @@ -4086,826 +4937,1113 @@ STBIDEF int stbi_zlib_decode_noheader_buffer(char* obuffer, int olen, const char // - uses stb_zlib, a PD zlib implementation with fast huffman decoding #ifndef STBI_NO_PNG -typedef struct -{ - stbi__uint32 length; - stbi__uint32 type; +typedef struct { + stbi__uint32 length; + stbi__uint32 type; } stbi__pngchunk; -static stbi__pngchunk stbi__get_chunk_header(stbi__context* s) +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) { - stbi__pngchunk c; - c.length = stbi__get32be(s); - c.type = stbi__get32be(s); - return c; + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; } -static int stbi__check_png_header(stbi__context* s) +static int stbi__check_png_header(stbi__context *s) { - static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; - int i; - for (i = 0; i < 8; ++i) - if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig", "Not a PNG"); - return 1; + static const stbi_uc png_sig[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + int i; + for (i = 0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) + return stbi__err("bad png sig", "Not a PNG"); + return 1; } -typedef struct -{ - stbi__context* s; - stbi_uc* idata, * expanded, * out; - int depth; +typedef struct { + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; } stbi__png; enum { - STBI__F_none = 0, - STBI__F_sub = 1, - STBI__F_up = 2, - STBI__F_avg = 3, - STBI__F_paeth = 4, - // synthetic filters used for first scanline to avoid needing a dummy row of 0s - STBI__F_avg_first, - STBI__F_paeth_first + STBI__F_none = 0, + STBI__F_sub = 1, + STBI__F_up = 2, + STBI__F_avg = 3, + STBI__F_paeth = 4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first }; -static stbi_uc first_row_filter[5] = -{ - STBI__F_none, - STBI__F_sub, - STBI__F_none, - STBI__F_avg_first, - STBI__F_paeth_first -}; +static stbi_uc first_row_filter[5] = { STBI__F_none, STBI__F_sub, STBI__F_none, + STBI__F_avg_first, STBI__F_paeth_first }; static int stbi__paeth(int a, int b, int c) { - int p = a + b - c; - int pa = abs(p - a); - int pb = abs(p - b); - int pc = abs(p - c); - if (pa <= pb && pa <= pc) return a; - if (pb <= pc) return b; - return c; + int p = a + b - c; + int pa = abs(p - a); + int pb = abs(p - b); + int pc = abs(p - c); + if (pa <= pb && pa <= pc) + return a; + if (pb <= pc) + return b; + return c; } -static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, + 0, 0, 0, 0x01 }; // create the png data from post-deflated data -static int stbi__create_png_image_raw(stbi__png* a, stbi_uc* raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, + stbi__uint32 raw_len, int out_n, + stbi__uint32 x, stbi__uint32 y, int depth, + int color) { - int bytes = (depth == 16 ? 2 : 1); - stbi__context* s = a->s; - stbi__uint32 i, j, stride = x * out_n * bytes; - stbi__uint32 img_len, img_width_bytes; - int k; - int img_n = s->img_n; // copy it into a local for later + int bytes = (depth == 16 ? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i, j, stride = x * out_n * bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later - int output_bytes = out_n * bytes; - int filter_bytes = img_n * bytes; - int width = x; + int output_bytes = out_n * bytes; + int filter_bytes = img_n * bytes; + int width = x; - STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); - a->out = (stbi_uc*)stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into - if (!a->out) return stbi__err("outofmem", "Out of memory"); + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n + 1); + a->out = (stbi_uc *)stbi__malloc_mad3( + x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) + return stbi__err("outofmem", "Out of memory"); - if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); - img_width_bytes = (((img_n * x * depth) + 7) >> 3); - img_len = (img_width_bytes + 1) * y; + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) + return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; - // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, - // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), - // so just check for raw_len < img_len always. - if (raw_len < img_len) return stbi__err("not enough pixels", "Corrupt PNG"); + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) + return stbi__err("not enough pixels", "Corrupt PNG"); - for (j = 0; j < y; ++j) { - stbi_uc* cur = a->out + stride * j; - stbi_uc* prior; - int filter = *raw++; - - if (filter > 4) - return stbi__err("invalid filter", "Corrupt PNG"); - - if (depth < 8) { - if (img_width_bytes > x) return stbi__err("invalid width", "Corrupt PNG"); - cur += x * out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place - filter_bytes = 1; - width = img_width_bytes; - } - prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above - - // if first row, use special filter that doesn't sample previous row - if (j == 0) filter = first_row_filter[filter]; - - // handle first byte explicitly - for (k = 0; k < filter_bytes; ++k) { - switch (filter) { - case STBI__F_none: cur[k] = raw[k]; break; - case STBI__F_sub: cur[k] = raw[k]; break; - case STBI__F_up: cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; - case STBI__F_avg: cur[k] = STBI__BYTECAST(raw[k] + (prior[k] >> 1)); break; - case STBI__F_paeth: cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0, prior[k], 0)); break; - case STBI__F_avg_first: cur[k] = raw[k]; break; - case STBI__F_paeth_first: cur[k] = raw[k]; break; - } - } - - if (depth == 8) { - if (img_n != out_n) - cur[img_n] = 255; // first pixel - raw += img_n; - cur += out_n; - prior += out_n; - } - else if (depth == 16) { - if (img_n != out_n) { - cur[filter_bytes] = 255; // first pixel top byte - cur[filter_bytes + 1] = 255; // first pixel bottom byte - } - raw += filter_bytes; - cur += output_bytes; - prior += output_bytes; - } - else { - raw += 1; - cur += 1; - prior += 1; - } - - // this is a little gross, so that we don't switch per-pixel or per-component - if (depth < 8 || img_n == out_n) { - int nk = (width - 1) * filter_bytes; -#define STBI__CASE(f) \ - case f: \ - for (k=0; k < nk; ++k) - switch (filter) { - // "none" filter turns into a memcpy here; make that explicit. - case STBI__F_none: memcpy(cur, raw, nk); break; - STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - filter_bytes]); } break; - STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; - STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - filter_bytes]) >> 1)); } break; - STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], prior[k], prior[k - filter_bytes])); } break; - STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - filter_bytes] >> 1)); } break; - STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - filter_bytes], 0, 0)); } break; - } -#undef STBI__CASE - raw += nk; - } - else { - STBI_ASSERT(img_n + 1 == out_n); -#define STBI__CASE(f) \ - case f: \ - for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ - for (k=0; k < filter_bytes; ++k) - switch (filter) { - STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; - STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k - output_bytes]); } break; - STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; - STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k - output_bytes]) >> 1)); } break; - STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], prior[k], prior[k - output_bytes])); } break; - STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k - output_bytes] >> 1)); } break; - STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k - output_bytes], 0, 0)); } break; - } -#undef STBI__CASE - - // the loop above sets the high byte of the pixels' alpha, but for - // 16 bit png files we also need the low byte set. we'll do that here. - if (depth == 16) { - cur = a->out + stride * j; // start at the beginning of the row again - for (i = 0; i < x; ++i, cur += output_bytes) { - cur[filter_bytes + 1] = 255; - } - } - } - } - - // we make a separate pass to expand bits to pixels; for performance, - // this could run two scanlines behind the above code, so it won't - // intefere with filtering but will still be in the cache. - if (depth < 8) { for (j = 0; j < y; ++j) { - stbi_uc* cur = a->out + stride * j; - stbi_uc* in = a->out + stride * j + x * out_n - img_width_bytes; - // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit - // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop - stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + stbi_uc *cur = a->out + stride * j; + stbi_uc *prior; + int filter = *raw++; - // note that the final byte might overshoot and write more data than desired. - // we can allocate enough data that this never writes out of memory, but it - // could also overwrite the next scanline. can it overwrite non-empty data - // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. - // so we need to explicitly clamp the final ones + if (filter > 4) + return stbi__err("invalid filter", "Corrupt PNG"); - if (depth == 4) { - for (k = x * img_n; k >= 2; k -= 2, ++in) { - *cur++ = scale * ((*in >> 4)); - *cur++ = scale * ((*in) & 0x0f); + if (depth < 8) { + if (img_width_bytes > x) + return stbi__err("invalid width", + "Corrupt PNG"); + cur += x * out_n - + img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; } - if (k > 0) *cur++ = scale * ((*in >> 4)); - } - else if (depth == 2) { - for (k = x * img_n; k >= 4; k -= 4, ++in) { - *cur++ = scale * ((*in >> 6)); - *cur++ = scale * ((*in >> 4) & 0x03); - *cur++ = scale * ((*in >> 2) & 0x03); - *cur++ = scale * ((*in) & 0x03); + prior = cur - + stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) + filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k = 0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none: + cur[k] = raw[k]; + break; + case STBI__F_sub: + cur[k] = raw[k]; + break; + case STBI__F_up: + cur[k] = STBI__BYTECAST(raw[k] + prior[k]); + break; + case STBI__F_avg: + cur[k] = STBI__BYTECAST(raw[k] + + (prior[k] >> 1)); + break; + case STBI__F_paeth: + cur[k] = STBI__BYTECAST( + raw[k] + stbi__paeth(0, prior[k], 0)); + break; + case STBI__F_avg_first: + cur[k] = raw[k]; + break; + case STBI__F_paeth_first: + cur[k] = raw[k]; + break; + } } - if (k > 0) *cur++ = scale * ((*in >> 6)); - if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); - if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); - } - else if (depth == 1) { - for (k = x * img_n; k >= 8; k -= 8, ++in) { - *cur++ = scale * ((*in >> 7)); - *cur++ = scale * ((*in >> 6) & 0x01); - *cur++ = scale * ((*in >> 5) & 0x01); - *cur++ = scale * ((*in >> 4) & 0x01); - *cur++ = scale * ((*in >> 3) & 0x01); - *cur++ = scale * ((*in >> 2) & 0x01); - *cur++ = scale * ((*in >> 1) & 0x01); - *cur++ = scale * ((*in) & 0x01); + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes + 1] = + 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; } - if (k > 0) *cur++ = scale * ((*in >> 7)); - if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); - if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); - if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); - if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); - if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); - if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); - } - if (img_n != out_n) { - int q; - // insert alpha = 255 - cur = a->out + stride * j; - if (img_n == 1) { - for (q = x - 1; q >= 0; --q) { - cur[q * 2 + 1] = 255; - cur[q * 2 + 0] = cur[q]; - } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1) * filter_bytes; +#define STBI__CASE(f) \ + case f: \ + for (k = 0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: + memcpy(cur, raw, nk); + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST( + raw[k] + cur[k - filter_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + + ((prior[k] + + cur[k - filter_bytes]) >> + 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + + stbi__paeth( + cur[k - filter_bytes], + prior[k], + prior[k - + filter_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + + (cur[k - filter_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + + stbi__paeth( + cur[k - filter_bytes], + 0, 0)); + } + break; + } +#undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n + 1 == out_n); +#define STBI__CASE(f) \ + case f: \ + for (i = x - 1; i >= 1; --i, cur[filter_bytes] = 255, \ + raw += filter_bytes, cur += output_bytes, \ + prior += output_bytes) \ + for (k = 0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) + { + cur[k] = raw[k]; + } + break; + STBI__CASE(STBI__F_sub) + { + cur[k] = STBI__BYTECAST( + raw[k] + cur[k - output_bytes]); + } + break; + STBI__CASE(STBI__F_up) + { + cur[k] = STBI__BYTECAST(raw[k] + + prior[k]); + } + break; + STBI__CASE(STBI__F_avg) + { + cur[k] = STBI__BYTECAST( + raw[k] + + ((prior[k] + + cur[k - output_bytes]) >> + 1)); + } + break; + STBI__CASE(STBI__F_paeth) + { + cur[k] = STBI__BYTECAST( + raw[k] + + stbi__paeth( + cur[k - output_bytes], + prior[k], + prior[k - + output_bytes])); + } + break; + STBI__CASE(STBI__F_avg_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + + (cur[k - output_bytes] >> 1)); + } + break; + STBI__CASE(STBI__F_paeth_first) + { + cur[k] = STBI__BYTECAST( + raw[k] + + stbi__paeth( + cur[k - output_bytes], + 0, 0)); + } + break; + } +#undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + + stride * + j; // start at the beginning of the row again + for (i = 0; i < x; ++i, cur += output_bytes) { + cur[filter_bytes + 1] = 255; + } + } } - else { - STBI_ASSERT(img_n == 3); - for (q = x - 1; q >= 0; --q) { - cur[q * 4 + 3] = 255; - cur[q * 4 + 2] = cur[q * 3 + 2]; - cur[q * 4 + 1] = cur[q * 3 + 1]; - cur[q * 4 + 0] = cur[q * 3 + 0]; - } - } - } } - } - else if (depth == 16) { - // force the image data from big-endian to platform-native. - // this is done in a separate pass due to the decoding relying - // on the data being untouched, but could probably be done - // per-line during decode if care is taken. - stbi_uc* cur = a->out; - stbi__uint16* cur16 = (stbi__uint16*)cur; - for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { - *cur16 = (cur[0] << 8) | cur[1]; + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j = 0; j < y; ++j) { + stbi_uc *cur = a->out + stride * j; + stbi_uc *in = a->out + stride * j + x * out_n - + img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = + (color == 0) ? + stbi__depth_scale_table[depth] : + 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k = x * img_n; k >= 2; k -= 2, ++in) { + *cur++ = scale * ((*in >> 4)); + *cur++ = scale * ((*in) & 0x0f); + } + if (k > 0) + *cur++ = scale * ((*in >> 4)); + } else if (depth == 2) { + for (k = x * img_n; k >= 4; k -= 4, ++in) { + *cur++ = scale * ((*in >> 6)); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in) & 0x03); + } + if (k > 0) + *cur++ = scale * ((*in >> 6)); + if (k > 1) + *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) + *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k = x * img_n; k >= 8; k -= 8, ++in) { + *cur++ = scale * ((*in >> 7)); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in) & 0x01); + } + if (k > 0) + *cur++ = scale * ((*in >> 7)); + if (k > 1) + *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) + *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) + *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) + *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) + *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) + *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride * j; + if (img_n == 1) { + for (q = x - 1; q >= 0; --q) { + cur[q * 2 + 1] = 255; + cur[q * 2 + 0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q = x - 1; q >= 0; --q) { + cur[q * 4 + 3] = 255; + cur[q * 4 + 2] = cur[q * 3 + 2]; + cur[q * 4 + 1] = cur[q * 3 + 1]; + cur[q * 4 + 0] = cur[q * 3 + 0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16 *)cur; + + for (i = 0; i < x * y * out_n; ++i, cur16++, cur += 2) { + *cur16 = (cur[0] << 8) | cur[1]; + } } - } - return 1; + return 1; } -static int stbi__create_png_image(stbi__png* a, stbi_uc* image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, + stbi__uint32 image_data_len, int out_n, + int depth, int color, int interlaced) { - int bytes = (depth == 16 ? 2 : 1); - int out_bytes = out_n * bytes; - stbi_uc* final; - int p; - if (!interlaced) - return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, + out_n, a->s->img_x, + a->s->img_y, depth, color); - // de-interlacing - final = (stbi_uc*)stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); - if (!final) return stbi__err("outofmem", "Out of memory"); - for (p = 0; p < 7; ++p) { - int xorig[] = { 0,4,0,2,0,1,0 }; - int yorig[] = { 0,0,4,0,2,0,1 }; - int xspc[] = { 8,8,4,4,2,2,1 }; - int yspc[] = { 8,8,8,4,4,2,2 }; - int i, j, x, y; - // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 - x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; - y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; - if (x && y) { - stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; - if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { - STBI_FREE(final); - return 0; - } - for (j = 0; j < y; ++j) { - for (i = 0; i < x; ++i) { - int out_y = j * yspc[p] + yorig[p]; - int out_x = i * xspc[p] + xorig[p]; - memcpy(final + out_y * a->s->img_x * out_bytes + out_x * out_bytes, - a->out + (j * x + i) * out_bytes, out_bytes); + // de-interlacing + final = (stbi_uc *)stbi__malloc_mad3(a->s->img_x, a->s->img_y, + out_bytes, 0); + if (!final) + return stbi__err("outofmem", "Out of memory"); + for (p = 0; p < 7; ++p) { + int xorig[] = { 0, 4, 0, 2, 0, 1, 0 }; + int yorig[] = { 0, 0, 4, 0, 2, 0, 1 }; + int xspc[] = { 8, 8, 4, 4, 2, 2, 1 }; + int yspc[] = { 8, 8, 8, 4, 4, 2, 2 }; + int i, j, x, y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p] - 1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p] - 1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = + ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * + y; + if (!stbi__create_png_image_raw(a, image_data, + image_data_len, out_n, + x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j = 0; j < y; ++j) { + for (i = 0; i < x; ++i) { + int out_y = j * yspc[p] + yorig[p]; + int out_x = i * xspc[p] + xorig[p]; + memcpy(final + + out_y * a->s->img_x * + out_bytes + + out_x * out_bytes, + a->out + (j * x + i) * out_bytes, + out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; } - } - STBI_FREE(a->out); - image_data += img_len; - image_data_len -= img_len; } - } - a->out = final; + a->out = final; - return 1; + return 1; } -static int stbi__compute_transparency(stbi__png* z, stbi_uc tc[3], int out_n) +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) { - stbi__context* s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi_uc* p = z->out; + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; - // compute color-based transparency, assuming we've - // already got 255 as the alpha value in the output - STBI_ASSERT(out_n == 2 || out_n == 4); + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); - if (out_n == 2) { - for (i = 0; i < pixel_count; ++i) { - p[1] = (p[0] == tc[0] ? 0 : 255); - p += 2; + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } } - } - else { - for (i = 0; i < pixel_count; ++i) { - if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) - p[3] = 0; - p += 4; - } - } - return 1; + return 1; } -static int stbi__compute_transparency16(stbi__png* z, stbi__uint16 tc[3], int out_n) +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], + int out_n) { - stbi__context* s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi__uint16* p = (stbi__uint16*)z->out; + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16 *)z->out; - // compute color-based transparency, assuming we've - // already got 65535 as the alpha value in the output - STBI_ASSERT(out_n == 2 || out_n == 4); + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); - if (out_n == 2) { - for (i = 0; i < pixel_count; ++i) { - p[1] = (p[0] == tc[0] ? 0 : 65535); - p += 2; + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } } - } - else { - for (i = 0; i < pixel_count; ++i) { - if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) - p[3] = 0; - p += 4; - } - } - return 1; + return 1; } -static int stbi__expand_png_palette(stbi__png* a, stbi_uc* palette, int len, int pal_img_n) +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, + int pal_img_n) { - stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; - stbi_uc* p, * temp_out, * orig = a->out; + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; - p = (stbi_uc*)stbi__malloc_mad2(pixel_count, pal_img_n, 0); - if (p == NULL) return stbi__err("outofmem", "Out of memory"); + p = (stbi_uc *)stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) + return stbi__err("outofmem", "Out of memory"); - // between here and free(out) below, exitting would leak - temp_out = p; + // between here and free(out) below, exitting would leak + temp_out = p; - if (pal_img_n == 3) { - for (i = 0; i < pixel_count; ++i) { - int n = orig[i] * 4; - p[0] = palette[n]; - p[1] = palette[n + 1]; - p[2] = palette[n + 2]; - p += 3; + if (pal_img_n == 3) { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p += 3; + } + } else { + for (i = 0; i < pixel_count; ++i) { + int n = orig[i] * 4; + p[0] = palette[n]; + p[1] = palette[n + 1]; + p[2] = palette[n + 2]; + p[3] = palette[n + 3]; + p += 4; + } } - } - else { - for (i = 0; i < pixel_count; ++i) { - int n = orig[i] * 4; - p[0] = palette[n]; - p[1] = palette[n + 1]; - p[2] = palette[n + 2]; - p[3] = palette[n + 3]; - p += 4; - } - } - STBI_FREE(a->out); - a->out = temp_out; + STBI_FREE(a->out); + a->out = temp_out; - STBI_NOTUSED(len); + STBI_NOTUSED(len); - return 1; + return 1; } static int stbi__unpremultiply_on_load_global = 0; static int stbi__de_iphone_flag_global = 0; -STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +STBIDEF void +stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) { - stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; } STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) { - stbi__de_iphone_flag_global = flag_true_if_should_convert; + stbi__de_iphone_flag_global = flag_true_if_should_convert; } #ifndef STBI_THREAD_LOCAL -#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global -#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global #else -static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; -static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, + stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, + stbi__de_iphone_flag_set; -STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +STBIDEF void +stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) { - stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; - stbi__unpremultiply_on_load_set = 1; + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; } -STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +STBIDEF void +stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) { - stbi__de_iphone_flag_local = flag_true_if_should_convert; - stbi__de_iphone_flag_set = 1; + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; } -#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ - ? stbi__unpremultiply_on_load_local \ - : stbi__unpremultiply_on_load_global) -#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ - ? stbi__de_iphone_flag_local \ - : stbi__de_iphone_flag_global) +#define stbi__unpremultiply_on_load \ + (stbi__unpremultiply_on_load_set ? stbi__unpremultiply_on_load_local : \ + stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag \ + (stbi__de_iphone_flag_set ? stbi__de_iphone_flag_local : \ + stbi__de_iphone_flag_global) #endif // STBI_THREAD_LOCAL -static void stbi__de_iphone(stbi__png* z) +static void stbi__de_iphone(stbi__png *z) { - stbi__context* s = z->s; - stbi__uint32 i, pixel_count = s->img_x * s->img_y; - stbi_uc* p = z->out; + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; - if (s->img_out_n == 3) { // convert bgr to rgb - for (i = 0; i < pixel_count; ++i) { - stbi_uc t = p[0]; - p[0] = p[2]; - p[2] = t; - p += 3; - } - } - else { - STBI_ASSERT(s->img_out_n == 4); - if (stbi__unpremultiply_on_load) { - // convert bgr to rgb and unpremultiply - for (i = 0; i < pixel_count; ++i) { - stbi_uc a = p[3]; - stbi_uc t = p[0]; - if (a) { - stbi_uc half = a / 2; - p[0] = (p[2] * 255 + half) / a; - p[1] = (p[1] * 255 + half) / a; - p[2] = (t * 255 + half) / a; + if (s->img_out_n == 3) { // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; } - else { - p[0] = p[2]; - p[2] = t; + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i = 0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = (t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i = 0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } } - p += 4; - } } - else { - // convert bgr to rgb - for (i = 0; i < pixel_count; ++i) { - stbi_uc t = p[0]; - p[0] = p[2]; - p[2] = t; - p += 4; - } - } - } } -#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) +#define STBI__PNG_TYPE(a, b, c, d) \ + (((unsigned)(a) << 24) + ((unsigned)(b) << 16) + \ + ((unsigned)(c) << 8) + (unsigned)(d)) -static int stbi__parse_png_file(stbi__png* z, int scan, int req_comp) +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) { - stbi_uc palette[1024], pal_img_n = 0; - stbi_uc has_trans = 0, tc[3] = { 0 }; - stbi__uint16 tc16[3]; - stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; - int first = 1, k, interlace = 0, color = 0, is_iphone = 0; - stbi__context* s = z->s; + stbi_uc palette[1024], pal_img_n = 0; + stbi_uc has_trans = 0, tc[3] = { 0 }; + stbi__uint16 tc16[3]; + stbi__uint32 ioff = 0, idata_limit = 0, i, pal_len = 0; + int first = 1, k, interlace = 0, color = 0, is_iphone = 0; + stbi__context *s = z->s; - z->expanded = NULL; - z->idata = NULL; - z->out = NULL; + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; - if (!stbi__check_png_header(s)) return 0; + if (!stbi__check_png_header(s)) + return 0; - if (scan == STBI__SCAN_type) return 1; - - for (;;) { - stbi__pngchunk c = stbi__get_chunk_header(s); - switch (c.type) { - case STBI__PNG_TYPE('C', 'g', 'B', 'I'): - is_iphone = 1; - stbi__skip(s, c.length); - break; - case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { - int comp, filter; - if (!first) return stbi__err("multiple IHDR", "Corrupt PNG"); - first = 0; - if (c.length != 13) return stbi__err("bad IHDR len", "Corrupt PNG"); - s->img_x = stbi__get32be(s); - s->img_y = stbi__get32be(s); - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only", "PNG not supported: 1/2/4/8/16-bit only"); - color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype", "Corrupt PNG"); - if (color == 3 && z->depth == 16) return stbi__err("bad ctype", "Corrupt PNG"); - if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype", "Corrupt PNG"); - comp = stbi__get8(s); if (comp) return stbi__err("bad comp method", "Corrupt PNG"); - filter = stbi__get8(s); if (filter) return stbi__err("bad filter method", "Corrupt PNG"); - interlace = stbi__get8(s); if (interlace > 1) return stbi__err("bad interlace method", "Corrupt PNG"); - if (!s->img_x || !s->img_y) return stbi__err("0-pixel image", "Corrupt PNG"); - if (!pal_img_n) { - s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); - if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); - } - else { - // if paletted, then pal_n is our final components, and - // img_n is # components to decompress/filter. - s->img_n = 1; - if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large", "Corrupt PNG"); - } - // even with SCAN_header, have to scan to see if we have a tRNS - break; - } - - case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (c.length > 256 * 3) return stbi__err("invalid PLTE", "Corrupt PNG"); - pal_len = c.length / 3; - if (pal_len * 3 != c.length) return stbi__err("invalid PLTE", "Corrupt PNG"); - for (i = 0; i < pal_len; ++i) { - palette[i * 4 + 0] = stbi__get8(s); - palette[i * 4 + 1] = stbi__get8(s); - palette[i * 4 + 2] = stbi__get8(s); - palette[i * 4 + 3] = 255; - } - break; - } - - case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (z->idata) return stbi__err("tRNS after IDAT", "Corrupt PNG"); - if (pal_img_n) { - if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } - if (pal_len == 0) return stbi__err("tRNS before PLTE", "Corrupt PNG"); - if (c.length > pal_len) return stbi__err("bad tRNS len", "Corrupt PNG"); - pal_img_n = 4; - for (i = 0; i < c.length; ++i) - palette[i * 4 + 3] = stbi__get8(s); - } - else { - if (!(s->img_n & 1)) return stbi__err("tRNS with alpha", "Corrupt PNG"); - if (c.length != (stbi__uint32)s->img_n * 2) return stbi__err("bad tRNS len", "Corrupt PNG"); - has_trans = 1; - // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. - if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } - if (z->depth == 16) { - for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is - } - else { - for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger - } - } - break; - } - - case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (pal_img_n && !pal_len) return stbi__err("no PLTE", "Corrupt PNG"); - if (scan == STBI__SCAN_header) { - // header scan definitely stops at first IDAT - if (pal_img_n) - s->img_n = pal_img_n; + if (scan == STBI__SCAN_type) return 1; - } - if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); - if ((int)(ioff + c.length) < (int)ioff) return 0; - if (ioff + c.length > idata_limit) { - stbi__uint32 idata_limit_old = idata_limit; - stbi_uc* p; - if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; - while (ioff + c.length > idata_limit) - idata_limit *= 2; - STBI_NOTUSED(idata_limit_old); - p = (stbi_uc*)STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); - z->idata = p; - } - if (!stbi__getn(s, z->idata + ioff, c.length)) return stbi__err("outofdata", "Corrupt PNG"); - ioff += c.length; - break; - } - case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { - stbi__uint32 raw_len, bpl; - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if (scan != STBI__SCAN_load) return 1; - if (z->idata == NULL) return stbi__err("no IDAT", "Corrupt PNG"); - // initial guess for decoded data size to avoid unnecessary reallocs - bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component - raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; - z->expanded = (stbi_uc*)stbi_zlib_decode_malloc_guesssize_headerflag((char*)z->idata, ioff, raw_len, (int*)&raw_len, !is_iphone); - if (z->expanded == NULL) return 0; // zlib should set error - STBI_FREE(z->idata); z->idata = NULL; - if ((req_comp == s->img_n + 1 && req_comp != 3 && !pal_img_n) || has_trans) - s->img_out_n = s->img_n + 1; - else - s->img_out_n = s->img_n; - if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; - if (has_trans) { - if (z->depth == 16) { - if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C', 'g', 'B', 'I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I', 'H', 'D', 'R'): { + int comp, filter; + if (!first) + return stbi__err("multiple IHDR", + "Corrupt PNG"); + first = 0; + if (c.length != 13) + return stbi__err("bad IHDR len", "Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__err("too large", + "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__err("too large", + "Very large image (corrupt?)"); + z->depth = stbi__get8(s); + if (z->depth != 1 && z->depth != 2 && z->depth != 4 && + z->depth != 8 && z->depth != 16) + return stbi__err( + "1/2/4/8/16-bit only", + "PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); + if (color > 6) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3 && z->depth == 16) + return stbi__err("bad ctype", "Corrupt PNG"); + if (color == 3) + pal_img_n = 3; + else if (color & 1) + return stbi__err("bad ctype", "Corrupt PNG"); + comp = stbi__get8(s); + if (comp) + return stbi__err("bad comp method", + "Corrupt PNG"); + filter = stbi__get8(s); + if (filter) + return stbi__err("bad filter method", + "Corrupt PNG"); + interlace = stbi__get8(s); + if (interlace > 1) + return stbi__err("bad interlace method", + "Corrupt PNG"); + if (!s->img_x || !s->img_y) + return stbi__err("0-pixel image", + "Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) + return stbi__err( + "too large", + "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) + return stbi__err("too large", + "Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; } - else { - if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; - } - } - if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) - stbi__de_iphone(z); - if (pal_img_n) { - // pal_img_n == 3 or 4 - s->img_n = pal_img_n; // record the actual colors we had - s->img_out_n = pal_img_n; - if (req_comp >= 3) s->img_out_n = req_comp; - if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) - return 0; - } - else if (has_trans) { - // non-paletted image with tRNS -> source image has (constant) alpha - ++s->img_n; - } - STBI_FREE(z->expanded); z->expanded = NULL; - // end of PNG chunk, read and skip CRC - stbi__get32be(s); - return 1; - } - default: - // if critical, fail - if (first) return stbi__err("first not IHDR", "Corrupt PNG"); - if ((c.type & (1 << 29)) == 0) { + case STBI__PNG_TYPE('P', 'L', 'T', 'E'): { + if (first) + return stbi__err("first not IHDR", + "Corrupt PNG"); + if (c.length > 256 * 3) + return stbi__err("invalid PLTE", "Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) + return stbi__err("invalid PLTE", "Corrupt PNG"); + for (i = 0; i < pal_len; ++i) { + palette[i * 4 + 0] = stbi__get8(s); + palette[i * 4 + 1] = stbi__get8(s); + palette[i * 4 + 2] = stbi__get8(s); + palette[i * 4 + 3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t', 'R', 'N', 'S'): { + if (first) + return stbi__err("first not IHDR", + "Corrupt PNG"); + if (z->idata) + return stbi__err("tRNS after IDAT", + "Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { + s->img_n = 4; + return 1; + } + if (pal_len == 0) + return stbi__err("tRNS before PLTE", + "Corrupt PNG"); + if (c.length > pal_len) + return stbi__err("bad tRNS len", + "Corrupt PNG"); + pal_img_n = 4; + for (i = 0; i < c.length; ++i) + palette[i * 4 + 3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) + return stbi__err("tRNS with alpha", + "Corrupt PNG"); + if (c.length != (stbi__uint32)s->img_n * 2) + return stbi__err("bad tRNS len", + "Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { + ++s->img_n; + return 1; + } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) + tc16[k] = (stbi__uint16) + stbi__get16be( + s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) + tc[k] = (stbi_uc)(stbi__get16be( + s) & + 255) * + stbi__depth_scale_table + [z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I', 'D', 'A', 'T'): { + if (first) + return stbi__err("first not IHDR", + "Corrupt PNG"); + if (pal_img_n && !pal_len) + return stbi__err("no PLTE", "Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) + return stbi__err( + "IDAT size limit", + "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) + return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) + idata_limit = c.length > 4096 ? + c.length : + 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *)STBI_REALLOC_SIZED( + z->idata, idata_limit_old, idata_limit); + if (p == NULL) + return stbi__err("outofmem", + "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata + ioff, c.length)) + return stbi__err("outofdata", "Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I', 'E', 'N', 'D'): { + stbi__uint32 raw_len, bpl; + if (first) + return stbi__err("first not IHDR", + "Corrupt PNG"); + if (scan != STBI__SCAN_load) + return 1; + if (z->idata == NULL) + return stbi__err("no IDAT", "Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / + 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) + stbi_zlib_decode_malloc_guesssize_headerflag( + (char *)z->idata, ioff, raw_len, + (int *)&raw_len, !is_iphone); + if (z->expanded == NULL) + return 0; // zlib should set error + STBI_FREE(z->idata); + z->idata = NULL; + if ((req_comp == s->img_n + 1 && req_comp != 3 && + !pal_img_n) || + has_trans) + s->img_out_n = s->img_n + 1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, + s->img_out_n, z->depth, + color, interlace)) + return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16( + z, tc16, s->img_out_n)) + return 0; + } else { + if (!stbi__compute_transparency( + z, tc, s->img_out_n)) + return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && + s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = + pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) + s->img_out_n = req_comp; + if (!stbi__expand_png_palette( + z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); + z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) + return stbi__err("first not IHDR", + "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { #ifndef STBI_NO_FAILURE_STRINGS - // not threadsafe - static char invalid_chunk[] = "XXXX PNG chunk not known"; - invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); - invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); - invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); - invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + // not threadsafe + static char invalid_chunk[] = + "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); #endif - return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); - } - stbi__skip(s, c.length); - break; + return stbi__err( + invalid_chunk, + "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); } - // end of PNG chunk, read and skip CRC - stbi__get32be(s); - } } -static void* stbi__do_png(stbi__png* p, int* x, int* y, int* n, int req_comp, stbi__result_info* ri) +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, + stbi__result_info *ri) { - void* result = NULL; - if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); - if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { - if (p->depth <= 8) - ri->bits_per_channel = 8; - else if (p->depth == 16) - ri->bits_per_channel = 16; - else - return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); - result = p->out; + void *result = NULL; + if (req_comp < 0 || req_comp > 4) + return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc( + "bad bits_per_channel", + "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format( + (unsigned char *)result, + p->s->img_out_n, req_comp, p->s->img_x, + p->s->img_y); + else + result = stbi__convert_format16( + (stbi__uint16 *)result, p->s->img_out_n, + req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) + return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) + *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; - if (req_comp && req_comp != p->s->img_out_n) { - if (ri->bits_per_channel == 8) - result = stbi__convert_format((unsigned char*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); - else - result = stbi__convert_format16((stbi__uint16*)result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); - p->s->img_out_n = req_comp; - if (result == NULL) return result; + STBI_FREE(p->expanded); + p->expanded = NULL; + STBI_FREE(p->idata); + p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x, y, comp, req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind(p->s); + return 0; } - *x = p->s->img_x; - *y = p->s->img_y; - if (n) *n = p->s->img_n; - } - STBI_FREE(p->out); p->out = NULL; - STBI_FREE(p->expanded); p->expanded = NULL; - STBI_FREE(p->idata); p->idata = NULL; - - return result; + if (x) + *x = p->s->img_x; + if (y) + *y = p->s->img_y; + if (comp) + *comp = p->s->img_n; + return 1; } -static void* stbi__png_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) { - stbi__png p; - p.s = s; - return stbi__do_png(&p, x, y, comp, req_comp, ri); + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); } -static int stbi__png_test(stbi__context* s) +static int stbi__png_is16(stbi__context *s) { - int r; - r = stbi__check_png_header(s); - stbi__rewind(s); - return r; -} - -static int stbi__png_info_raw(stbi__png* p, int* x, int* y, int* comp) -{ - if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { - stbi__rewind(p->s); - return 0; - } - if (x) *x = p->s->img_x; - if (y) *y = p->s->img_y; - if (comp) *comp = p->s->img_n; - return 1; -} - -static int stbi__png_info(stbi__context* s, int* x, int* y, int* comp) -{ - stbi__png p; - p.s = s; - return stbi__png_info_raw(&p, x, y, comp); -} - -static int stbi__png_is16(stbi__context* s) -{ - stbi__png p; - p.s = s; - if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) - return 0; - if (p.depth != 16) { - stbi__rewind(p.s); - return 0; - } - return 1; + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; } #endif // Microsoft/Windows BMP image #ifndef STBI_NO_BMP -static int stbi__bmp_test_raw(stbi__context* s) +static int stbi__bmp_test_raw(stbi__context *s) { - int r; - int sz; - if (stbi__get8(s) != 'B') return 0; - if (stbi__get8(s) != 'M') return 0; - stbi__get32le(s); // discard filesize - stbi__get16le(s); // discard reserved - stbi__get16le(s); // discard reserved - stbi__get32le(s); // discard data offset - sz = stbi__get32le(s); - r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); - return r; + int r; + int sz; + if (stbi__get8(s) != 'B') + return 0; + if (stbi__get8(s) != 'M') + return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; } -static int stbi__bmp_test(stbi__context* s) +static int stbi__bmp_test(stbi__context *s) { - int r = stbi__bmp_test_raw(s); - stbi__rewind(s); - return r; + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; } // returns 0..31 for the highest set bit static int stbi__high_bit(unsigned int z) { - int n = 0; - if (z == 0) return -1; - if (z >= 0x10000) { n += 16; z >>= 16; } - if (z >= 0x00100) { n += 8; z >>= 8; } - if (z >= 0x00010) { n += 4; z >>= 4; } - if (z >= 0x00004) { n += 2; z >>= 2; } - if (z >= 0x00002) { n += 1;/* >>= 1;*/ } - return n; + int n = 0; + if (z == 0) + return -1; + if (z >= 0x10000) { + n += 16; + z >>= 16; + } + if (z >= 0x00100) { + n += 8; + z >>= 8; + } + if (z >= 0x00010) { + n += 4; + z >>= 4; + } + if (z >= 0x00004) { + n += 2; + z >>= 2; + } + if (z >= 0x00002) { + n += 1; /* >>= 1;*/ + } + return n; } static int stbi__bitcount(unsigned int a) { - a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 - a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 - a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits - a = (a + (a >> 8)); // max 16 per 8 bits - a = (a + (a >> 16)); // max 32 per 8 bits - return a & 0xff; + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; } // extract an arbitrarily-aligned N-bit value (N=bits) @@ -4913,352 +6051,437 @@ static int stbi__bitcount(unsigned int a) // extend it to full full range. static int stbi__shiftsigned(unsigned int v, int shift, int bits) { - static unsigned int mul_table[9] = { - 0, - 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, - 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, - }; - static unsigned int shift_table[9] = { - 0, 0,0,1,0,2,4,6,0, - }; - if (shift < 0) - v <<= -shift; - else - v >>= shift; - STBI_ASSERT(v < 256); - v >>= (8 - bits); - STBI_ASSERT(bits >= 0 && bits <= 8); - return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; + static unsigned int mul_table[9] = { + 0, + 0xff /*0b11111111*/, + 0x55 /*0b01010101*/, + 0x49 /*0b01001001*/, + 0x11 /*0b00010001*/, + 0x21 /*0b00100001*/, + 0x41 /*0b01000001*/, + 0x81 /*0b10000001*/, + 0x01 /*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0, 0, 1, 0, 2, 4, 6, 0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8 - bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int)((unsigned)v * mul_table[bits]) >> shift_table[bits]; } -typedef struct -{ - int bpp, offset, hsz; - unsigned int mr, mg, mb, ma, all_a; - int extra_read; +typedef struct { + int bpp, offset, hsz; + unsigned int mr, mg, mb, ma, all_a; + int extra_read; } stbi__bmp_data; -static int stbi__bmp_set_mask_defaults(stbi__bmp_data* info, int compress) +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) { - // BI_BITFIELDS specifies masks explicitly, don't override - if (compress == 3) - return 1; + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; - if (compress == 0) { - if (info->bpp == 16) { - info->mr = 31u << 10; - info->mg = 31u << 5; - info->mb = 31u << 0; + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = + 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; } - else if (info->bpp == 32) { - info->mr = 0xffu << 16; - info->mg = 0xffu << 8; - info->mb = 0xffu << 0; - info->ma = 0xffu << 24; - info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 - } - else { - // otherwise, use defaults, which is all-0 - info->mr = info->mg = info->mb = info->ma = 0; - } - return 1; - } - return 0; // error + return 0; // error } -static void* stbi__bmp_parse_header(stbi__context* s, stbi__bmp_data* info) +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) { - int hsz; - if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); - stbi__get32le(s); // discard filesize - stbi__get16le(s); // discard reserved - stbi__get16le(s); // discard reserved - info->offset = stbi__get32le(s); - info->hsz = hsz = stbi__get32le(s); - info->mr = info->mg = info->mb = info->ma = 0; - info->extra_read = 14; + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') + return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; - if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); - - if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); - if (hsz == 12) { - s->img_x = stbi__get16le(s); - s->img_y = stbi__get16le(s); - } - else { - s->img_x = stbi__get32le(s); - s->img_y = stbi__get32le(s); - } - if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); - info->bpp = stbi__get16le(s); - if (hsz != 12) { - int compress = stbi__get32le(s); - if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); - if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes - if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel - stbi__get32le(s); // discard sizeof - stbi__get32le(s); // discard hres - stbi__get32le(s); // discard vres - stbi__get32le(s); // discard colorsused - stbi__get32le(s); // discard max important - if (hsz == 40 || hsz == 56) { - if (hsz == 56) { - stbi__get32le(s); - stbi__get32le(s); - stbi__get32le(s); - stbi__get32le(s); - } - if (info->bpp == 16 || info->bpp == 32) { - if (compress == 0) { - stbi__bmp_set_mask_defaults(info, compress); - } - else if (compress == 3) { - info->mr = stbi__get32le(s); - info->mg = stbi__get32le(s); - info->mb = stbi__get32le(s); - info->extra_read += 12; - // not documented, but generated by photoshop and handled by mspaint - if (info->mr == info->mg && info->mg == info->mb) { - // ?!?!? - return stbi__errpuc("bad BMP", "bad BMP"); - } - } - else - return stbi__errpuc("bad BMP", "bad BMP"); - } - } - else { - // V4/V5 header - int i; - if (hsz != 108 && hsz != 124) + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); - info->mr = stbi__get32le(s); - info->mg = stbi__get32le(s); - info->mb = stbi__get32le(s); - info->ma = stbi__get32le(s); - if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs - stbi__bmp_set_mask_defaults(info, compress); - stbi__get32le(s); // discard color space - for (i = 0; i < 12; ++i) - stbi__get32le(s); // discard color space parameters - if (hsz == 124) { - stbi__get32le(s); // discard rendering intent - stbi__get32le(s); // discard offset of profile data - stbi__get32le(s); // discard size of profile data - stbi__get32le(s); // discard reserved - } + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) + return stbi__errpuc("unknown BMP", + "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); } - } - return (void*)1; + if (stbi__get16le(s) != 1) + return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) + return stbi__errpuc("BMP RLE", + "BMP type not supported: RLE"); + if (compress >= 4) + return stbi__errpuc( + "BMP JPEG/PNG", + "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) + return stbi__errpuc( + "bad BMP", + "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, + compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && + info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", + "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", + "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != + 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i = 0; i < 12; ++i) + stbi__get32le( + s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le( + s); // discard offset of profile data + stbi__get32le( + s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *)1; } -static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) { - stbi_uc* out; - unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; - stbi_uc pal[256][4]; - int psize = 0, i, j, width; - int flip_vertically, pad, target; - stbi__bmp_data info; - STBI_NOTUSED(ri); + stbi_uc *out; + unsigned int mr = 0, mg = 0, mb = 0, ma = 0, all_a; + stbi_uc pal[256][4]; + int psize = 0, i, j, width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); - info.all_a = 255; - if (stbi__bmp_parse_header(s, &info) == NULL) - return NULL; // error code already set + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set - flip_vertically = ((int)s->img_y) > 0; - s->img_y = abs((int)s->img_y); + flip_vertically = ((int)s->img_y) > 0; + s->img_y = abs((int)s->img_y); - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); - mr = info.mr; - mg = info.mg; - mb = info.mb; - ma = info.ma; - all_a = info.all_a; + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; - if (info.hsz == 12) { - if (info.bpp < 24) - psize = (info.offset - info.extra_read - 24) / 3; - } - else { - if (info.bpp < 16) - psize = (info.offset - info.extra_read - info.hsz) >> 2; - } - if (psize == 0) { - // accept some number of extra bytes after the header, but if the offset points either to before - // the header ends or implies a large amount of extra data, reject the file as malformed - int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); - int header_limit = 1024; // max we actually read is below 256 bytes currently. - int extra_data_limit = 256 * 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. - if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { - return stbi__errpuc("bad header", "Corrupt BMP"); + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; } - // we established that bytes_read_so_far is positive and sensible. - // the first half of this test rejects offsets that are either too small positives, or - // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn - // ensures the number computed in the second half of the test can't overflow. - if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { - return stbi__errpuc("bad offset", "Corrupt BMP"); - } - else { - stbi__skip(s, info.offset - bytes_read_so_far); - } - } - - if (info.bpp == 24 && ma == 0xff000000) - s->img_n = 3; - else - s->img_n = ma ? 4 : 3; - if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 - target = req_comp; - else - target = s->img_n; // if they want monochrome, we'll post-convert - - // sanity-check size - if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) - return stbi__errpuc("too large", "Corrupt BMP"); - - out = (stbi_uc*)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - if (info.bpp < 16) { - int z = 0; - if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } - for (i = 0; i < psize; ++i) { - pal[i][2] = stbi__get8(s); - pal[i][1] = stbi__get8(s); - pal[i][0] = stbi__get8(s); - if (info.hsz != 12) stbi__get8(s); - pal[i][3] = 255; - } - stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); - if (info.bpp == 1) width = (s->img_x + 7) >> 3; - else if (info.bpp == 4) width = (s->img_x + 1) >> 1; - else if (info.bpp == 8) width = s->img_x; - else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } - pad = (-width) & 3; - if (info.bpp == 1) { - for (j = 0; j < (int)s->img_y; ++j) { - int bit_offset = 7, v = stbi__get8(s); - for (i = 0; i < (int)s->img_x; ++i) { - int color = (v >> bit_offset) & 0x1; - out[z++] = pal[color][0]; - out[z++] = pal[color][1]; - out[z++] = pal[color][2]; - if (target == 4) out[z++] = 255; - if (i + 1 == (int)s->img_x) break; - if ((--bit_offset) < 0) { - bit_offset = 7; - v = stbi__get8(s); - } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = + s->callback_already_read + + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = + 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = + 256 * + 4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || + bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); } - stbi__skip(s, pad); - } - } - else { - for (j = 0; j < (int)s->img_y; ++j) { - for (i = 0; i < (int)s->img_x; i += 2) { - int v = stbi__get8(s), v2 = 0; - if (info.bpp == 4) { - v2 = v & 15; - v >>= 4; - } - out[z++] = pal[v][0]; - out[z++] = pal[v][1]; - out[z++] = pal[v][2]; - if (target == 4) out[z++] = 255; - if (i + 1 == (int)s->img_x) break; - v = (info.bpp == 8) ? stbi__get8(s) : v2; - out[z++] = pal[v][0]; - out[z++] = pal[v][1]; - out[z++] = pal[v][2]; - if (target == 4) out[z++] = 255; + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || + info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); } - stbi__skip(s, pad); - } } - } - else { - int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, gcount = 0, bcount = 0, acount = 0; - int z = 0; - int easy = 0; - stbi__skip(s, info.offset - info.extra_read - info.hsz); - if (info.bpp == 24) width = 3 * s->img_x; - else if (info.bpp == 16) width = 2 * s->img_x; - else /* bpp = 32 and pad = 0 */ width = 0; - pad = (-width) & 3; - if (info.bpp == 24) { - easy = 1; - } - else if (info.bpp == 32) { - if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) - easy = 2; - } - if (!easy) { - if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } - // right shift amt to put high bit in position #7 - rshift = stbi__high_bit(mr) - 7; rcount = stbi__bitcount(mr); - gshift = stbi__high_bit(mg) - 7; gcount = stbi__bitcount(mg); - bshift = stbi__high_bit(mb) - 7; bcount = stbi__bitcount(mb); - ashift = stbi__high_bit(ma) - 7; acount = stbi__bitcount(ma); - if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } - } - for (j = 0; j < (int)s->img_y; ++j) { - if (easy) { - for (i = 0; i < (int)s->img_x; ++i) { - unsigned char a; - out[z + 2] = stbi__get8(s); - out[z + 1] = stbi__get8(s); - out[z + 0] = stbi__get8(s); - z += 3; - a = (easy == 2 ? stbi__get8(s) : 255); - all_a |= a; - if (target == 4) out[z++] = a; + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = + s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *)stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z = 0; + if (psize == 0 || psize > 256) { + STBI_FREE(out); + return stbi__errpuc("invalid", "Corrupt BMP"); } - } - else { - int bpp = info.bpp; - for (i = 0; i < (int)s->img_x; ++i) { - stbi__uint32 v = (bpp == 16 ? (stbi__uint32)stbi__get16le(s) : stbi__get32le(s)); - unsigned int a; - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); - out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); - a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); - all_a |= a; - if (target == 4) out[z++] = STBI__BYTECAST(a); + for (i = 0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) + stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - + psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) + width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) + width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) + width = s->img_x; + else { + STBI_FREE(out); + return stbi__errpuc("bad bpp", "Corrupt BMP"); + } + pad = (-width) & 3; + if (info.bpp == 1) { + for (j = 0; j < (int)s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i = 0; i < (int)s->img_x; ++i) { + int color = (v >> bit_offset) & 0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + if ((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j = 0; j < (int)s->img_y; ++j) { + for (i = 0; i < (int)s->img_x; i += 2) { + int v = stbi__get8(s), v2 = 0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + if (i + 1 == (int)s->img_x) + break; + v = (info.bpp == 8) ? stbi__get8(s) : + v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) + out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift = 0, gshift = 0, bshift = 0, ashift = 0, rcount = 0, + gcount = 0, bcount = 0, acount = 0; + int z = 0; + int easy = 0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) + width = 3 * s->img_x; + else if (info.bpp == 16) + width = 2 * s->img_x; + else /* bpp = 32 and pad = 0 */ + width = 0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && + ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr) - 7; + rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg) - 7; + gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb) - 7; + bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma) - 7; + acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || + acount > 8) { + STBI_FREE(out); + return stbi__errpuc("bad masks", "Corrupt BMP"); + } + } + for (j = 0; j < (int)s->img_y; ++j) { + if (easy) { + for (i = 0; i < (int)s->img_x; ++i) { + unsigned char a; + out[z + 2] = stbi__get8(s); + out[z + 1] = stbi__get8(s); + out[z + 0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) + out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i = 0; i < (int)s->img_x; ++i) { + stbi__uint32 v = + (bpp == 16 ? + (stbi__uint32) + stbi__get16le( + s) : + stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mr, + rshift, + rcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mg, + gshift, + gcount)); + out[z++] = STBI__BYTECAST( + stbi__shiftsigned(v & mb, + bshift, + bcount)); + a = (ma ? stbi__shiftsigned(v & ma, + ashift, + acount) : + 255); + all_a |= a; + if (target == 4) + out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); } - } - stbi__skip(s, pad); } - } - // if alpha channel is all 0s, replace with all 255s - if (target == 4 && all_a == 0) - for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) - out[i] = 255; + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i = 4 * s->img_x * s->img_y - 1; i >= 0; i -= 4) + out[i] = 255; - if (flip_vertically) { - stbi_uc t; - for (j = 0; j < (int)s->img_y >> 1; ++j) { - stbi_uc* p1 = out + j * s->img_x * target; - stbi_uc* p2 = out + (s->img_y - 1 - j) * s->img_x * target; - for (i = 0; i < (int)s->img_x * target; ++i) { - t = p1[i]; p1[i] = p2[i]; p2[i] = t; - } + if (flip_vertically) { + stbi_uc t; + for (j = 0; j < (int)s->img_y >> 1; ++j) { + stbi_uc *p1 = out + j * s->img_x * target; + stbi_uc *p2 = + out + (s->img_y - 1 - j) * s->img_x * target; + for (i = 0; i < (int)s->img_x * target; ++i) { + t = p1[i]; + p1[i] = p2[i]; + p2[i] = t; + } + } } - } - if (req_comp && req_comp != target) { - out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); - if (out == NULL) return out; // stbi__convert_format frees input on failure - } + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, + s->img_y); + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } - *x = s->img_x; - *y = s->img_y; - if (comp) *comp = s->img_n; - return out; + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + return out; } #endif @@ -5266,350 +6489,382 @@ static void* stbi__bmp_load(stbi__context* s, int* x, int* y, int* comp, int req // by Jonathan Dummer #ifndef STBI_NO_TGA // returns STBI_rgb or whatever, 0 on error -static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int *is_rgb16) { - // only RGB or RGBA (incl. 16bit) or grey allowed - if (is_rgb16) *is_rgb16 = 0; - switch (bits_per_pixel) { - case 8: return STBI_grey; - case 16: if (is_grey) return STBI_grey_alpha; - // fallthrough - case 15: if (is_rgb16) *is_rgb16 = 1; - return STBI_rgb; - case 24: // fallthrough - case 32: return bits_per_pixel / 8; - default: return 0; - } + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) + *is_rgb16 = 0; + switch (bits_per_pixel) { + case 8: + return STBI_grey; + case 16: + if (is_grey) + return STBI_grey_alpha; + // fallthrough + case 15: + if (is_rgb16) + *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: + return bits_per_pixel / 8; + default: + return 0; + } } -static int stbi__tga_info(stbi__context* s, int* x, int* y, int* comp) +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) { - int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; - int sz, tga_colormap_type; - stbi__get8(s); // discard Offset - tga_colormap_type = stbi__get8(s); // colormap type - if (tga_colormap_type > 1) { - stbi__rewind(s); - return 0; // only RGB or indexed allowed - } - tga_image_type = stbi__get8(s); // image type - if (tga_colormap_type == 1) { // colormapped (paletted) image - if (tga_image_type != 1 && tga_image_type != 9) { - stbi__rewind(s); - return 0; + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, + tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if (tga_colormap_type > 1) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed } - stbi__skip(s, 4); // skip index of first colormap entry and number of entries - sz = stbi__get8(s); // check bits per palette color entry - if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) { - stbi__rewind(s); - return 0; + tga_image_type = stbi__get8(s); // image type + if (tga_colormap_type == 1) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip( + s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && + (sz != 32)) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ((tga_image_type != 2) && (tga_image_type != 3) && + (tga_image_type != 10) && (tga_image_type != 11)) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip( + s, + 9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; } - stbi__skip(s, 4); // skip image x and y origin - tga_colormap_bpp = sz; - } - else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE - if ((tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11)) { - stbi__rewind(s); - return 0; // only RGB or grey allowed, +/- RLE + tga_w = stbi__get16le(s); + if (tga_w < 1) { + stbi__rewind(s); + return 0; // test width } - stbi__skip(s, 9); // skip colormap specification and image x/y origin - tga_colormap_bpp = 0; - } - tga_w = stbi__get16le(s); - if (tga_w < 1) { - stbi__rewind(s); - return 0; // test width - } - tga_h = stbi__get16le(s); - if (tga_h < 1) { - stbi__rewind(s); - return 0; // test height - } - tga_bits_per_pixel = stbi__get8(s); // bits per pixel - stbi__get8(s); // ignore alpha bits - if (tga_colormap_bpp != 0) { - if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { - // when using a colormap, tga_bits_per_pixel is the size of the indexes - // I don't think anything but 8 or 16bit indexes makes sense - stbi__rewind(s); - return 0; + tga_h = stbi__get16le(s); + if (tga_h < 1) { + stbi__rewind(s); + return 0; // test height } - tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); - } - else { - tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); - } - if (!tga_comp) { - stbi__rewind(s); - return 0; - } - if (x) *x = tga_w; - if (y) *y = tga_h; - if (comp) *comp = tga_comp; - return 1; // seems to have passed everything + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if ((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp( + tga_bits_per_pixel, + (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if (!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) + *x = tga_w; + if (y) + *y = tga_h; + if (comp) + *comp = tga_comp; + return 1; // seems to have passed everything } -static int stbi__tga_test(stbi__context* s) +static int stbi__tga_test(stbi__context *s) { - int res = 0; - int sz, tga_color_type; - stbi__get8(s); // discard Offset - tga_color_type = stbi__get8(s); // color type - if (tga_color_type > 1) goto errorEnd; // only RGB or indexed allowed - sz = stbi__get8(s); // image type - if (tga_color_type == 1) { // colormapped (paletted) image - if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 - stbi__skip(s, 4); // skip index of first colormap entry and number of entries - sz = stbi__get8(s); // check bits per palette color entry - if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; - stbi__skip(s, 4); // skip image x and y origin - } - else { // "normal" image w/o colormap - if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) goto errorEnd; // only RGB or grey allowed, +/- RLE - stbi__skip(s, 9); // skip colormap specification and image x/y origin - } - if (stbi__get16le(s) < 1) goto errorEnd; // test width - if (stbi__get16le(s) < 1) goto errorEnd; // test height - sz = stbi__get8(s); // bits per pixel - if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) goto errorEnd; // for colormapped images, bpp is size of an index - if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) goto errorEnd; + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if (tga_color_type > 1) + goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if (tga_color_type == 1) { // colormapped (paletted) image + if (sz != 1 && sz != 9) + goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip( + s, + 4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && + (sz != 32)) + goto errorEnd; + stbi__skip(s, 4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ((sz != 2) && (sz != 3) && (sz != 10) && (sz != 11)) + goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip( + s, + 9); // skip colormap specification and image x/y origin + } + if (stbi__get16le(s) < 1) + goto errorEnd; // test width + if (stbi__get16le(s) < 1) + goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ((tga_color_type == 1) && (sz != 8) && (sz != 16)) + goto errorEnd; // for colormapped images, bpp is size of an index + if ((sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32)) + goto errorEnd; - res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 errorEnd: - stbi__rewind(s); - return res; + stbi__rewind(s); + return res; } // read 16bit value and convert to 24bit RGB -static void stbi__tga_read_rgb16(stbi__context* s, stbi_uc* out) +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc *out) { - stbi__uint16 px = (stbi__uint16)stbi__get16le(s); - stbi__uint16 fiveBitMask = 31; - // we have 3 channels with 5bits each - int r = (px >> 10) & fiveBitMask; - int g = (px >> 5) & fiveBitMask; - int b = px & fiveBitMask; - // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later - out[0] = (stbi_uc)((r * 255) / 31); - out[1] = (stbi_uc)((g * 255) / 31); - out[2] = (stbi_uc)((b * 255) / 31); + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255) / 31); + out[1] = (stbi_uc)((g * 255) / 31); + out[2] = (stbi_uc)((b * 255) / 31); - // some people claim that the most significant bit might be used for alpha - // (possibly if an alpha-bit is set in the "image descriptor byte") - // but that only made 16bit test images completely translucent.. - // so let's treat all 15 and 16bit TGAs as RGB with no alpha. + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. } -static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) { - // read in the TGA header stuff - int tga_offset = stbi__get8(s); - int tga_indexed = stbi__get8(s); - int tga_image_type = stbi__get8(s); - int tga_is_RLE = 0; - int tga_palette_start = stbi__get16le(s); - int tga_palette_len = stbi__get16le(s); - int tga_palette_bits = stbi__get8(s); - int tga_x_origin = stbi__get16le(s); - int tga_y_origin = stbi__get16le(s); - int tga_width = stbi__get16le(s); - int tga_height = stbi__get16le(s); - int tga_bits_per_pixel = stbi__get8(s); - int tga_comp, tga_rgb16 = 0; - int tga_inverted = stbi__get8(s); - // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) - // image data - unsigned char* tga_data; - unsigned char* tga_palette = NULL; - int i, j; - unsigned char raw_data[4] = { 0 }; - int RLE_count = 0; - int RLE_repeating = 0; - int read_next_pixel = 1; - STBI_NOTUSED(ri); - STBI_NOTUSED(tga_x_origin); // @TODO - STBI_NOTUSED(tga_y_origin); // @TODO + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16 = 0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = { 0 }; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO - if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (tga_height > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); - // do a tiny bit of precessing - if (tga_image_type >= 8) - { - tga_image_type -= 8; - tga_is_RLE = 1; - } - tga_inverted = 1 - ((tga_inverted >> 5) & 1); - - // If I'm paletted, then I'll use the number of bits from the palette - if (tga_indexed) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); - else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); - - if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency - return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); - - // tga info - *x = tga_width; - *y = tga_height; - if (comp) *comp = tga_comp; - - if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) - return stbi__errpuc("too large", "Corrupt TGA"); - - tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); - if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); - - // skip to the data's starting position (offset usually = 0) - stbi__skip(s, tga_offset); - - if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { - for (i = 0; i < tga_height; ++i) { - int row = tga_inverted ? tga_height - i - 1 : i; - stbi_uc* tga_row = tga_data + row * tga_width * tga_comp; - stbi__getn(s, tga_row, tga_width * tga_comp); + // do a tiny bit of precessing + if (tga_image_type >= 8) { + tga_image_type -= 8; + tga_is_RLE = 1; } - } - else { - // do I need to load a palette? + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette if (tga_indexed) - { - if (tga_palette_len == 0) { /* you have to have at least one entry! */ - STBI_FREE(tga_data); - return stbi__errpuc("bad palette", "Corrupt TGA"); - } + tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else + tga_comp = stbi__tga_get_comp( + tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); - // any data to skip? (offset usually = 0) - stbi__skip(s, tga_palette_start); - // load the palette - tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); - if (!tga_palette) { - STBI_FREE(tga_data); + if (!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", + "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) + *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char *)stbi__malloc_mad3(tga_width, tga_height, + tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); - } - if (tga_rgb16) { - stbi_uc* pal_entry = tga_palette; - STBI_ASSERT(tga_comp == STBI_rgb); - for (i = 0; i < tga_palette_len; ++i) { - stbi__tga_read_rgb16(s, pal_entry); - pal_entry += tga_comp; - } - } - else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { - STBI_FREE(tga_data); - STBI_FREE(tga_palette); - return stbi__errpuc("bad palette", "Corrupt TGA"); - } - } - // load the data - for (i = 0; i < tga_width * tga_height; ++i) - { - // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? - if (tga_is_RLE) - { - if (RLE_count == 0) - { - // yep, get the next byte as a RLE command - int RLE_cmd = stbi__get8(s); - RLE_count = 1 + (RLE_cmd & 127); - RLE_repeating = RLE_cmd >> 7; - read_next_pixel = 1; - } - else if (!RLE_repeating) - { - read_next_pixel = 1; - } - } - else - { - read_next_pixel = 1; - } - // OK, if I need to read a pixel, do it now - if (read_next_pixel) - { - // load however much data we did have - if (tga_indexed) - { - // read in index, then perform the lookup - int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); - if (pal_idx >= tga_palette_len) { - // invalid index - pal_idx = 0; - } - pal_idx *= tga_comp; - for (j = 0; j < tga_comp; ++j) { - raw_data[j] = tga_palette[pal_idx + j]; - } - } - else if (tga_rgb16) { - STBI_ASSERT(tga_comp == STBI_rgb); - stbi__tga_read_rgb16(s, raw_data); - } - else { - // read in the data raw - for (j = 0; j < tga_comp; ++j) { - raw_data[j] = stbi__get8(s); - } - } - // clear the reading flag for the next pixel - read_next_pixel = 0; - } // end of reading a pixel - // copy data - for (j = 0; j < tga_comp; ++j) - tga_data[i * tga_comp + j] = raw_data[j]; + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset); - // in case we're in RLE mode, keep counting down - --RLE_count; - } - // do I need to invert the image? - if (tga_inverted) - { - for (j = 0; j * 2 < tga_height; ++j) - { - int index1 = j * tga_width * tga_comp; - int index2 = (tga_height - 1 - j) * tga_width * tga_comp; - for (i = tga_width * tga_comp; i > 0; --i) - { - unsigned char temp = tga_data[index1]; - tga_data[index1] = tga_data[index2]; - tga_data[index2] = temp; - ++index1; - ++index2; + if (!tga_indexed && !tga_is_RLE && !tga_rgb16) { + for (i = 0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height - i - 1 : i; + stbi_uc *tga_row = + tga_data + row * tga_width * tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); } - } - } - // clear my palette, if I had one - if (tga_palette != NULL) - { - STBI_FREE(tga_palette); - } - } + } else { + // do I need to load a palette? + if (tga_indexed) { + if (tga_palette_len == + 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", + "Corrupt TGA"); + } - // swap RGB - if the source data was RGB16, it already is in the right order - if (tga_comp >= 3 && !tga_rgb16) - { - unsigned char* tga_pixel = tga_data; - for (i = 0; i < tga_width * tga_height; ++i) - { - unsigned char temp = tga_pixel[0]; - tga_pixel[0] = tga_pixel[2]; - tga_pixel[2] = temp; - tga_pixel += tga_comp; + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start); + // load the palette + tga_palette = (unsigned char *)stbi__malloc_mad2( + tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", + "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i = 0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, + tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", + "Corrupt TGA"); + } + } + // load the data + for (i = 0; i < tga_width * tga_height; ++i) { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if (tga_is_RLE) { + if (RLE_count == 0) { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if (!RLE_repeating) { + read_next_pixel = 1; + } + } else { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if (read_next_pixel) { + // load however much data we did have + if (tga_indexed) { + // read in index, then perform the lookup + int pal_idx = + (tga_bits_per_pixel == 8) ? + stbi__get8(s) : + stbi__get16le(s); + if (pal_idx >= tga_palette_len) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = + tga_palette[pal_idx + j]; + } + } else if (tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i * tga_comp + j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if (tga_inverted) { + for (j = 0; j * 2 < tga_height; ++j) { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * + tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if (tga_palette != NULL) { + STBI_FREE(tga_palette); + } } - } - // convert to target component count - if (req_comp && req_comp != tga_comp) - tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) { + unsigned char *tga_pixel = tga_data; + for (i = 0; i < tga_width * tga_height; ++i) { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } - // the things I do to get rid of an error message, and yet keep - // Microsoft's C compilers happy... [8^( - tga_palette_start = tga_palette_len = tga_palette_bits = - tga_x_origin = tga_y_origin = 0; - STBI_NOTUSED(tga_palette_start); - // OK, done - return tga_data; + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, + tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = + tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; } #endif @@ -5617,259 +6872,286 @@ static void* stbi__tga_load(stbi__context* s, int* x, int* y, int* comp, int req // Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB #ifndef STBI_NO_PSD -static int stbi__psd_test(stbi__context* s) +static int stbi__psd_test(stbi__context *s) { - int r = (stbi__get32be(s) == 0x38425053); - stbi__rewind(s); - return r; + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; } -static int stbi__psd_decode_rle(stbi__context* s, stbi_uc* p, int pixelCount) +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) { - int count, nleft, len; + int count, nleft, len; - count = 0; - while ((nleft = pixelCount - count) > 0) { - len = stbi__get8(s); - if (len == 128) { - // No-op. + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) + return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) + return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } } - else if (len < 128) { - // Copy next len+1 bytes literally. - len++; - if (len > nleft) return 0; // corrupt data - count += len; - while (len) { - *p = stbi__get8(s); - p += 4; - len--; - } - } - else if (len > 128) { - stbi_uc val; - // Next -len+1 bytes in the dest are replicated from next source byte. - // (Interpret len as a negative 8-bit int.) - len = 257 - len; - if (len > nleft) return 0; // corrupt data - val = stbi__get8(s); - count += len; - while (len) { - *p = val; - p += 4; - len--; - } - } - } - return 1; + return 1; } -static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri, int bpc) +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri, int bpc) { - int pixelCount; - int channelCount, compression; - int channel, i; - int bitdepth; - int w, h; - stbi_uc* out; - STBI_NOTUSED(ri); + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w, h; + stbi_uc *out; + STBI_NOTUSED(ri); - // Check identifier - if (stbi__get32be(s) != 0x38425053) // "8BPS" - return stbi__errpuc("not PSD", "Corrupt PSD image"); + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); - // Check file type version. - if (stbi__get16be(s) != 1) - return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", + "Unsupported version of PSD image"); - // Skip 6 reserved bytes. - stbi__skip(s, 6); + // Skip 6 reserved bytes. + stbi__skip(s, 6); - // Read the number of channels (R, G, B, A, etc). - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) - return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc( + "wrong channel count", + "Unsupported number of channels in PSD image"); - // Read the rows and columns of the image. - h = stbi__get32be(s); - w = stbi__get32be(s); + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); - if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (h > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); - // Make sure the depth is 8 bits. - bitdepth = stbi__get16be(s); - if (bitdepth != 8 && bitdepth != 16) - return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", + "PSD bit depth is not 8 or 16 bit"); - // Make sure the color mode is RGB. - // Valid options are: - // 0: Bitmap - // 1: Grayscale - // 2: Indexed color - // 3: RGB color - // 4: CMYK color - // 7: Multichannel - // 8: Duotone - // 9: Lab color - if (stbi__get16be(s) != 3) - return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", + "PSD is not in RGB color format"); - // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) - stbi__skip(s, stbi__get32be(s)); + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s, stbi__get32be(s)); - // Skip the image resources. (resolution, pen tool paths, etc) - stbi__skip(s, stbi__get32be(s)); + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s)); - // Skip the reserved data. - stbi__skip(s, stbi__get32be(s)); + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s)); - // Find out if the data is compressed. - // Known values: - // 0: no compression - // 1: RLE compressed - compression = stbi__get16be(s); - if (compression > 1) - return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", + "PSD has an unknown compression format"); - // Check size - if (!stbi__mad3sizes_valid(4, w, h, 0)) - return stbi__errpuc("too large", "Corrupt PSD"); + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); - // Create the destination image. + // Create the destination image. - if (!compression && bitdepth == 16 && bpc == 16) { - out = (stbi_uc*)stbi__malloc_mad3(8, w, h, 0); - ri->bits_per_channel = 16; - } - else - out = (stbi_uc*)stbi__malloc(4 * w * h); + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *)stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *)stbi__malloc(4 * w * h); - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - pixelCount = w * h; + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w * h; - // Initialize the data to zero. - //memset( out, 0, pixelCount * 4 ); + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); - // Finally, the image data. - if (compression) { - // RLE as used by .PSD and .TIFF - // Loop until you get the number of unpacked bytes you are expecting: - // Read the next source byte into n. - // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. - // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. - // Else if n is 128, noop. - // Endloop + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop - // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, - // which we're going to just skip. - stbi__skip(s, h * channelCount * 2); + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2); - // Read the RLE data by channel. - for (channel = 0; channel < 4; channel++) { - stbi_uc* p; + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; - p = out + channel; - if (channel >= channelCount) { - // Fill this channel with default data. - for (i = 0; i < pixelCount; i++, p += 4) - *p = (channel == 3 ? 255 : 0); - } - else { - // Read the RLE data. - if (!stbi__psd_decode_rle(s, p, pixelCount)) { - STBI_FREE(out); - return stbi__errpuc("corrupt", "bad RLE data"); + p = out + channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", + "bad RLE data"); + } + } + } + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = + ((stbi__uint16 *)out) + channel; + stbi__uint16 val = + channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out + channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = + ((stbi__uint16 *)out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) + stbi__get16be(s); + } else { + stbi_uc *p = out + channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; + i++, p += 4) + *p = (stbi_uc)(stbi__get16be( + s) >> + 8); + } else { + for (i = 0; i < pixelCount; + i++, p += 4) + *p = stbi__get8(s); + } + } + } } - } } - } - else { - // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) - // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. - // Read the data by channel. - for (channel = 0; channel < 4; channel++) { - if (channel >= channelCount) { - // Fill this channel with default data. - if (bitdepth == 16 && bpc == 16) { - stbi__uint16* q = ((stbi__uint16*)out) + channel; - stbi__uint16 val = channel == 3 ? 65535 : 0; - for (i = 0; i < pixelCount; i++, q += 4) - *q = val; + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i = 0; i < w * h; ++i) { + stbi__uint16 *pixel = + (stbi__uint16 *)out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = + (stbi__uint16)(pixel[0] * ra + + inv_a); + pixel[1] = + (stbi__uint16)(pixel[1] * ra + + inv_a); + pixel[2] = + (stbi__uint16)(pixel[2] * ra + + inv_a); + } + } + } else { + for (i = 0; i < w * h; ++i) { + unsigned char *pixel = out + 4 * i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = + (unsigned char)(pixel[0] * ra + + inv_a); + pixel[1] = + (unsigned char)(pixel[1] * ra + + inv_a); + pixel[2] = + (unsigned char)(pixel[2] * ra + + inv_a); + } + } } - else { - stbi_uc* p = out + channel; - stbi_uc val = channel == 3 ? 255 : 0; - for (i = 0; i < pixelCount; i++, p += 4) - *p = val; - } - } - else { - if (ri->bits_per_channel == 16) { // output bpc - stbi__uint16* q = ((stbi__uint16*)out) + channel; - for (i = 0; i < pixelCount; i++, q += 4) - *q = (stbi__uint16)stbi__get16be(s); - } - else { - stbi_uc* p = out + channel; - if (bitdepth == 16) { // input bpc - for (i = 0; i < pixelCount; i++, p += 4) - *p = (stbi_uc)(stbi__get16be(s) >> 8); - } - else { - for (i = 0; i < pixelCount; i++, p += 4) - *p = stbi__get8(s); - } - } - } } - } - // remove weird white matte from PSD - if (channelCount >= 4) { - if (ri->bits_per_channel == 16) { - for (i = 0; i < w * h; ++i) { - stbi__uint16* pixel = (stbi__uint16*)out + 4 * i; - if (pixel[3] != 0 && pixel[3] != 65535) { - float a = pixel[3] / 65535.0f; - float ra = 1.0f / a; - float inv_a = 65535.0f * (1 - ra); - pixel[0] = (stbi__uint16)(pixel[0] * ra + inv_a); - pixel[1] = (stbi__uint16)(pixel[1] * ra + inv_a); - pixel[2] = (stbi__uint16)(pixel[2] * ra + inv_a); - } - } + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *)stbi__convert_format16( + (stbi__uint16 *)out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) + return out; // stbi__convert_format frees input on failure } - else { - for (i = 0; i < w * h; ++i) { - unsigned char* pixel = out + 4 * i; - if (pixel[3] != 0 && pixel[3] != 255) { - float a = pixel[3] / 255.0f; - float ra = 1.0f / a; - float inv_a = 255.0f * (1 - ra); - pixel[0] = (unsigned char)(pixel[0] * ra + inv_a); - pixel[1] = (unsigned char)(pixel[1] * ra + inv_a); - pixel[2] = (unsigned char)(pixel[2] * ra + inv_a); - } - } - } - } - // convert to desired output format - if (req_comp && req_comp != 4) { - if (ri->bits_per_channel == 16) - out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, 4, req_comp, w, h); - else - out = stbi__convert_format(out, 4, req_comp, w, h); - if (out == NULL) return out; // stbi__convert_format frees input on failure - } + if (comp) + *comp = 4; + *y = h; + *x = w; - if (comp) *comp = 4; - *y = h; - *x = w; - - return out; + return out; } #endif @@ -5881,217 +7163,256 @@ static void* stbi__psd_load(stbi__context* s, int* x, int* y, int* comp, int req // See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ #ifndef STBI_NO_PIC -static int stbi__pic_is4(stbi__context* s, const char* str) +static int stbi__pic_is4(stbi__context *s, const char *str) { - int i; - for (i = 0; i < 4; ++i) - if (stbi__get8(s) != (stbi_uc)str[i]) - return 0; + int i; + for (i = 0; i < 4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; - return 1; + return 1; } -static int stbi__pic_test_core(stbi__context* s) +static int stbi__pic_test_core(stbi__context *s) { - int i; + int i; - if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) - return 0; + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) + return 0; - for (i = 0; i < 84; ++i) - stbi__get8(s); + for (i = 0; i < 84; ++i) + stbi__get8(s); - if (!stbi__pic_is4(s, "PICT")) - return 0; + if (!stbi__pic_is4(s, "PICT")) + return 0; - return 1; + return 1; } -typedef struct -{ - stbi_uc size, type, channel; +typedef struct { + stbi_uc size, type, channel; } stbi__pic_packet; -static stbi_uc* stbi__readval(stbi__context* s, int channel, stbi_uc* dest) +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) { - int mask = 0x80, i; + int mask = 0x80, i; - for (i = 0; i < 4; ++i, mask >>= 1) { - if (channel & mask) { - if (stbi__at_eof(s)) return stbi__errpuc("bad file", "PIC file too short"); - dest[i] = stbi__get8(s); - } - } - - return dest; -} - -static void stbi__copyval(int channel, stbi_uc* dest, const stbi_uc* src) -{ - int mask = 0x80, i; - - for (i = 0; i < 4; ++i, mask >>= 1) - if (channel & mask) - dest[i] = src[i]; -} - -static stbi_uc* stbi__pic_load_core(stbi__context* s, int width, int height, int* comp, stbi_uc* result) -{ - int act_comp = 0, num_packets = 0, y, chained; - stbi__pic_packet packets[10]; - - // this will (should...) cater for even some bizarre stuff like having data - // for the same channel in multiple packets. - do { - stbi__pic_packet* packet; - - if (num_packets == sizeof(packets) / sizeof(packets[0])) - return stbi__errpuc("bad format", "too many packets"); - - packet = &packets[num_packets++]; - - chained = stbi__get8(s); - packet->size = stbi__get8(s); - packet->type = stbi__get8(s); - packet->channel = stbi__get8(s); - - act_comp |= packet->channel; - - if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (reading packets)"); - if (packet->size != 8) return stbi__errpuc("bad format", "packet isn't 8bpp"); - } while (chained); - - *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? - - for (y = 0; y < height; ++y) { - int packet_idx; - - for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { - stbi__pic_packet* packet = &packets[packet_idx]; - stbi_uc* dest = result + y * width * 4; - - switch (packet->type) { - default: - return stbi__errpuc("bad format", "packet has bad compression type"); - - case 0: {//uncompressed - int x; - - for (x = 0; x < width; ++x, dest += 4) - if (!stbi__readval(s, packet->channel, dest)) - return 0; - break; - } - - case 1://Pure RLE - { - int left = width, i; - - while (left > 0) { - stbi_uc count, value[4]; - - count = stbi__get8(s); - if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pure read count)"); - - if (count > left) - count = (stbi_uc)left; - - if (!stbi__readval(s, packet->channel, value)) return 0; - - for (i = 0; i < count; ++i, dest += 4) - stbi__copyval(packet->channel, dest, value); - left -= count; + for (i = 0; i < 4; ++i, mask >>= 1) { + if (channel & mask) { + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", + "PIC file too short"); + dest[i] = stbi__get8(s); } - } - break; - - case 2: {//Mixed RLE - int left = width; - while (left > 0) { - int count = stbi__get8(s), i; - if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (mixed read count)"); - - if (count >= 128) { // Repeated - stbi_uc value[4]; - - if (count == 128) - count = stbi__get16be(s); - else - count -= 127; - if (count > left) - return stbi__errpuc("bad file", "scanline overrun"); - - if (!stbi__readval(s, packet->channel, value)) - return 0; - - for (i = 0; i < count; ++i, dest += 4) - stbi__copyval(packet->channel, dest, value); - } - else { // Raw - ++count; - if (count > left) return stbi__errpuc("bad file", "scanline overrun"); - - for (i = 0; i < count; ++i, dest += 4) - if (!stbi__readval(s, packet->channel, dest)) - return 0; - } - left -= count; - } - break; - } - } } - } - return result; + return dest; } -static void* stbi__pic_load(stbi__context* s, int* px, int* py, int* comp, int req_comp, stbi__result_info* ri) +static void stbi__copyval(int channel, stbi_uc *dest, const stbi_uc *src) { - stbi_uc* result; - int i, x, y, internal_comp; - STBI_NOTUSED(ri); + int mask = 0x80, i; - if (!comp) comp = &internal_comp; - - for (i = 0; i < 92; ++i) - stbi__get8(s); - - x = stbi__get16be(s); - y = stbi__get16be(s); - - if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - - if (stbi__at_eof(s)) return stbi__errpuc("bad file", "file too short (pic header)"); - if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); - - stbi__get32be(s); //skip `ratio' - stbi__get16be(s); //skip `fields' - stbi__get16be(s); //skip `pad' - - // intermediate buffer is RGBA - result = (stbi_uc*)stbi__malloc_mad3(x, y, 4, 0); - if (!result) return stbi__errpuc("outofmem", "Out of memory"); - memset(result, 0xff, x * y * 4); - - if (!stbi__pic_load_core(s, x, y, comp, result)) { - STBI_FREE(result); - result = 0; - } - *px = x; - *py = y; - if (req_comp == 0) req_comp = *comp; - result = stbi__convert_format(result, 4, req_comp, x, y); - - return result; + for (i = 0; i < 4; ++i, mask >>= 1) + if (channel & mask) + dest[i] = src[i]; } -static int stbi__pic_test(stbi__context* s) +static stbi_uc *stbi__pic_load_core(stbi__context *s, int width, int height, + int *comp, stbi_uc *result) { - int r = stbi__pic_test_core(s); - stbi__rewind(s); - return r; + int act_comp = 0, num_packets = 0, y, chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return stbi__errpuc("bad format", "too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", + "file too short (reading packets)"); + if (packet->size != 8) + return stbi__errpuc("bad format", "packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for (y = 0; y < height; ++y) { + int packet_idx; + + for (packet_idx = 0; packet_idx < num_packets; ++packet_idx) { + stbi__pic_packet *packet = &packets[packet_idx]; + stbi_uc *dest = result + y * width * 4; + + switch (packet->type) { + default: + return stbi__errpuc( + "bad format", + "packet has bad compression type"); + + case 0: { //uncompressed + int x; + + for (x = 0; x < width; ++x, dest += 4) + if (!stbi__readval(s, packet->channel, + dest)) + return 0; + break; + } + + case 1: //Pure RLE + { + int left = width, i; + + while (left > 0) { + stbi_uc count, value[4]; + + count = stbi__get8(s); + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (pure read count)"); + + if (count > left) + count = (stbi_uc)left; + + if (!stbi__readval(s, packet->channel, + value)) + return 0; + + for (i = 0; i < count; ++i, dest += 4) + stbi__copyval(packet->channel, + dest, value); + left -= count; + } + } break; + + case 2: { //Mixed RLE + int left = width; + while (left > 0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) + return stbi__errpuc( + "bad file", + "file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count == 128) + count = stbi__get16be( + s); + else + count -= 127; + if (count > left) + return stbi__errpuc( + "bad file", + "scanline overrun"); + + if (!stbi__readval( + s, packet->channel, + value)) + return 0; + + for (i = 0; i < count; + ++i, dest += 4) + stbi__copyval( + packet->channel, + dest, value); + } else { // Raw + ++count; + if (count > left) + return stbi__errpuc( + "bad file", + "scanline overrun"); + + for (i = 0; i < count; + ++i, dest += 4) + if (!stbi__readval( + s, + packet->channel, + dest)) + return 0; + } + left -= count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s, int *px, int *py, int *comp, + int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x, y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) + comp = &internal_comp; + + for (i = 0; i < 92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + if (stbi__at_eof(s)) + return stbi__errpuc("bad file", "file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) + return stbi__errpuc("too large", + "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *)stbi__malloc_mad3(x, y, 4, 0); + if (!result) + return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x * y * 4); + + if (!stbi__pic_load_core(s, x, y, comp, result)) { + STBI_FREE(result); + result = 0; + } + *px = x; + *py = y; + if (req_comp == 0) + req_comp = *comp; + result = stbi__convert_format(result, 4, req_comp, x, y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; } #endif @@ -6099,549 +7420,610 @@ static int stbi__pic_test(stbi__context* s) // GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb #ifndef STBI_NO_GIF -typedef struct -{ - stbi__int16 prefix; - stbi_uc first; - stbi_uc suffix; +typedef struct { + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; } stbi__gif_lzw; -typedef struct -{ - int w, h; - stbi_uc* out; // output buffer (always 4 components) - stbi_uc* background; // The current "background" as far as a gif is concerned - stbi_uc* history; - int flags, bgindex, ratio, transparent, eflags; - stbi_uc pal[256][4]; - stbi_uc lpal[256][4]; - stbi__gif_lzw codes[8192]; - stbi_uc* color_table; - int parse, step; - int lflags; - int start_x, start_y; - int max_x, max_y; - int cur_x, cur_y; - int line_size; - int delay; +typedef struct { + int w, h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; } stbi__gif; -static int stbi__gif_test_raw(stbi__context* s) +static int stbi__gif_test_raw(stbi__context *s) { - int sz; - if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; - sz = stbi__get8(s); - if (sz != '9' && sz != '7') return 0; - if (stbi__get8(s) != 'a') return 0; - return 1; + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || + stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') + return 0; + if (stbi__get8(s) != 'a') + return 0; + return 1; } -static int stbi__gif_test(stbi__context* s) +static int stbi__gif_test(stbi__context *s) { - int r = stbi__gif_test_raw(s); - stbi__rewind(s); - return r; -} - -static void stbi__gif_parse_colortable(stbi__context* s, stbi_uc pal[256][4], int num_entries, int transp) -{ - int i; - for (i = 0; i < num_entries; ++i) { - pal[i][2] = stbi__get8(s); - pal[i][1] = stbi__get8(s); - pal[i][0] = stbi__get8(s); - pal[i][3] = transp == i ? 0 : 255; - } -} - -static int stbi__gif_header(stbi__context* s, stbi__gif* g, int* comp, int is_info) -{ - stbi_uc version; - if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') - return stbi__err("not GIF", "Corrupt GIF"); - - version = stbi__get8(s); - if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); - if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); - - stbi__g_failure_reason = ""; - g->w = stbi__get16le(s); - g->h = stbi__get16le(s); - g->flags = stbi__get8(s); - g->bgindex = stbi__get8(s); - g->ratio = stbi__get8(s); - g->transparent = -1; - - if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large", "Very large image (corrupt?)"); - - if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments - - if (is_info) return 1; - - if (g->flags & 0x80) - stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); - - return 1; -} - -static int stbi__gif_info_raw(stbi__context* s, int* x, int* y, int* comp) -{ - stbi__gif* g = (stbi__gif*)stbi__malloc(sizeof(stbi__gif)); - if (!g) return stbi__err("outofmem", "Out of memory"); - if (!stbi__gif_header(s, g, comp, 1)) { - STBI_FREE(g); + int r = stbi__gif_test_raw(s); stbi__rewind(s); - return 0; - } - if (x) *x = g->w; - if (y) *y = g->h; - STBI_FREE(g); - return 1; + return r; } -static void stbi__out_gif_code(stbi__gif* g, stbi__uint16 code) +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], + int num_entries, int transp) { - stbi_uc* p, * c; - int idx; - - // recurse to decode the prefixes, since the linked-list is backwards, - // and working backwards through an interleaved image would be nasty - if (g->codes[code].prefix >= 0) - stbi__out_gif_code(g, g->codes[code].prefix); - - if (g->cur_y >= g->max_y) return; - - idx = g->cur_x + g->cur_y; - p = &g->out[idx]; - g->history[idx / 4] = 1; - - c = &g->color_table[g->codes[code].suffix * 4]; - if (c[3] > 128) { // don't render transparent pixels; - p[0] = c[2]; - p[1] = c[1]; - p[2] = c[0]; - p[3] = c[3]; - } - g->cur_x += 4; - - if (g->cur_x >= g->max_x) { - g->cur_x = g->start_x; - g->cur_y += g->step; - - while (g->cur_y >= g->max_y && g->parse > 0) { - g->step = (1 << g->parse) * g->line_size; - g->cur_y = g->start_y + (g->step >> 1); - --g->parse; + int i; + for (i = 0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; } - } } -static stbi_uc* stbi__process_gif_raster(stbi__context* s, stbi__gif* g) +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, + int is_info) { - stbi_uc lzw_cs; - stbi__int32 len, init_code; - stbi__uint32 first; - stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; - stbi__gif_lzw* p; + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || + stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); - lzw_cs = stbi__get8(s); - if (lzw_cs > 12) return NULL; - clear = 1 << lzw_cs; - first = 1; - codesize = lzw_cs + 1; - codemask = (1 << codesize) - 1; - bits = 0; - valid_bits = 0; - for (init_code = 0; init_code < clear; init_code++) { - g->codes[init_code].prefix = -1; - g->codes[init_code].first = (stbi_uc)init_code; - g->codes[init_code].suffix = (stbi_uc)init_code; - } + version = stbi__get8(s); + if (version != '7' && version != '9') + return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') + return stbi__err("not GIF", "Corrupt GIF"); - // support no starting clear code - avail = clear + 2; - oldcode = -1; + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; - len = 0; - for (;;) { - if (valid_bits < codesize) { - if (len == 0) { - len = stbi__get8(s); // start new block - if (len == 0) - return g->out; - } - --len; - bits |= (stbi__int32)stbi__get8(s) << valid_bits; - valid_bits += 8; + if (g->w > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) + return stbi__err("too large", "Very large image (corrupt?)"); + + if (comp != 0) + *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) + return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s, g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif *g = (stbi__gif *)stbi__malloc(sizeof(stbi__gif)); + if (!g) + return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind(s); + return 0; } - else { - stbi__int32 code = bits & codemask; - bits >>= codesize; - valid_bits -= codesize; - // @OPTIMIZE: is there some way we can accelerate the non-clear path? - if (code == clear) { // clear code - codesize = lzw_cs + 1; - codemask = (1 << codesize) - 1; - avail = clear + 2; - oldcode = -1; - first = 0; - } - else if (code == clear + 1) { // end of stream code - stbi__skip(s, len); - while ((len = stbi__get8(s)) > 0) - stbi__skip(s, len); - return g->out; - } - else if (code <= avail) { - if (first) { - return stbi__errpuc("no clear code", "Corrupt GIF"); - } + if (x) + *x = g->w; + if (y) + *y = g->h; + STBI_FREE(g); + return 1; +} - if (oldcode >= 0) { - p = &g->codes[avail++]; - if (avail > 8192) { - return stbi__errpuc("too many codes", "Corrupt GIF"); - } +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; - p->prefix = (stbi__int16)oldcode; - p->first = g->codes[oldcode].first; - p->suffix = (code == avail) ? p->first : g->codes[code].first; - } - else if (code == avail) - return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); - stbi__out_gif_code(g, (stbi__uint16)code); + if (g->cur_y >= g->max_y) + return; - if ((avail & codemask) == 0 && avail <= 0x0FFF) { - codesize++; - codemask = (1 << codesize) - 1; - } + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; - oldcode = code; - } - else { - return stbi__errpuc("illegal code in raster", "Corrupt GIF"); - } + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) + return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc)init_code; + g->codes[init_code].suffix = (stbi_uc)init_code; + } + + // support no starting clear code + avail = clear + 2; + oldcode = -1; + + len = 0; + for (;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32)stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s, len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", + "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc( + "too many codes", + "Corrupt GIF"); + } + + p->prefix = (stbi__int16)oldcode; + p->first = g->codes[oldcode].first; + p->suffix = + (code == avail) ? + p->first : + g->codes[code].first; + } else if (code == avail) + return stbi__errpuc( + "illegal code in raster", + "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16)code); + + if ((avail & codemask) == 0 && + avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", + "Corrupt GIF"); + } + } } - } } // this function is designed to support animated gifs, although stb_image doesn't support it // two back is the image from two frames ago, used for a very specific disposal format -static stbi_uc* stbi__gif_load_next(stbi__context* s, stbi__gif* g, int* comp, int req_comp, stbi_uc* two_back) +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, + int req_comp, stbi_uc *two_back) { - int dispose; - int first_frame; - int pi; - int pcount; - STBI_NOTUSED(req_comp); + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); - // on first frame, any non-written pixels get the background colour (non-transparent) - first_frame = 0; - if (g->out == 0) { - if (!stbi__gif_header(s, g, comp, 0)) return 0; // stbi__g_failure_reason set by stbi__gif_header - if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) - return stbi__errpuc("too large", "GIF image is too large"); - pcount = g->w * g->h; - g->out = (stbi_uc*)stbi__malloc(4 * pcount); - g->background = (stbi_uc*)stbi__malloc(4 * pcount); - g->history = (stbi_uc*)stbi__malloc(pcount); - if (!g->out || !g->background || !g->history) - return stbi__errpuc("outofmem", "Out of memory"); + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp, 0)) + return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", + "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *)stbi__malloc(4 * pcount); + g->background = (stbi_uc *)stbi__malloc(4 * pcount); + g->history = (stbi_uc *)stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); - // image is treated as "transparent" at the start - ie, nothing overwrites the current background; - // background colour is only used for pixels that are not rendered first frame, after that "background" - // color refers to the color that was there the previous frame. - memset(g->out, 0x00, 4 * pcount); - memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) - memset(g->history, 0x00, pcount); // pixels that were affected previous frame - first_frame = 1; - } - else { - // second frame - how do we dispose of the previous one? - dispose = (g->eflags & 0x1C) >> 2; - pcount = g->w * g->h; + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, + 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, + pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; - if ((dispose == 3) && (two_back == 0)) { - dispose = 2; // if I don't have an image to revert back to, default to the old background - } - - if (dispose == 3) { // use previous graphic - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi]) { - memcpy(&g->out[pi * 4], &two_back[pi * 4], 4); + if ((dispose == 3) && (two_back == 0)) { + dispose = + 2; // if I don't have an image to revert back to, default to the old background } - } - } - else if (dispose == 2) { - // restore what was changed last frame to background before that frame; - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi]) { - memcpy(&g->out[pi * 4], &g->background[pi * 4], 4); - } - } - } - else { - // This is a non-disposal case eithe way, so just - // leave the pixels as is, and they will become the new background - // 1: do not dispose - // 0: not specified. - } - // background is what out is after the undoing of the previou frame; - memcpy(g->background, g->out, 4 * g->w * g->h); - } - - // clear my history; - memset(g->history, 0x00, g->w * g->h); // pixels that were affected previous frame - - for (;;) { - int tag = stbi__get8(s); - switch (tag) { - case 0x2C: /* Image Descriptor */ - { - stbi__int32 x, y, w, h; - stbi_uc* o; - - x = stbi__get16le(s); - y = stbi__get16le(s); - w = stbi__get16le(s); - h = stbi__get16le(s); - if (((x + w) > (g->w)) || ((y + h) > (g->h))) - return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); - - g->line_size = g->w * 4; - g->start_x = x * 4; - g->start_y = y * g->line_size; - g->max_x = g->start_x + w * 4; - g->max_y = g->start_y + h * g->line_size; - g->cur_x = g->start_x; - g->cur_y = g->start_y; - - // if the width of the specified rectangle is 0, that means - // we may not see *any* pixels or the image is malformed; - // to make sure this is caught, move the current y down to - // max_y (which is what out_gif_code checks). - if (w == 0) - g->cur_y = g->max_y; - - g->lflags = stbi__get8(s); - - if (g->lflags & 0x40) { - g->step = 8 * g->line_size; // first interlaced spacing - g->parse = 3; - } - else { - g->step = g->line_size; - g->parse = 0; - } - - if (g->lflags & 0x80) { - stbi__gif_parse_colortable(s, g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); - g->color_table = (stbi_uc*)g->lpal; - } - else if (g->flags & 0x80) { - g->color_table = (stbi_uc*)g->pal; - } - else - return stbi__errpuc("missing color table", "Corrupt GIF"); - - o = stbi__process_gif_raster(s, g); - if (!o) return NULL; - - // if this was the first frame, - pcount = g->w * g->h; - if (first_frame && (g->bgindex > 0)) { - // if first frame, any pixel not drawn to gets the background color - for (pi = 0; pi < pcount; ++pi) { - if (g->history[pi] == 0) { - g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; - memcpy(&g->out[pi * 4], &g->pal[g->bgindex], 4); - } - } - } - - return o; - } - - case 0x21: // Comment Extension. - { - int len; - int ext = stbi__get8(s); - if (ext == 0xF9) { // Graphic Control Extension. - len = stbi__get8(s); - if (len == 4) { - g->eflags = stbi__get8(s); - g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. - - // unset old transparent - if (g->transparent >= 0) { - g->pal[g->transparent][3] = 255; - } - if (g->eflags & 0x01) { - g->transparent = stbi__get8(s); - if (g->transparent >= 0) { - g->pal[g->transparent][3] = 0; + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], + &two_back[pi * 4], 4); + } } - } - else { - // don't need transparent - stbi__skip(s, 1); - g->transparent = -1; - } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy(&g->out[pi * 4], + &g->background[pi * 4], 4); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. } - else { - stbi__skip(s, len); - break; - } - } - while ((len = stbi__get8(s)) != 0) { - stbi__skip(s, len); - } - break; + + // background is what out is after the undoing of the previou frame; + memcpy(g->background, g->out, 4 * g->w * g->h); } - case 0x3B: // gif stream termination code - return (stbi_uc*)s; // using '1' causes warning on some compilers + // clear my history; + memset(g->history, 0x00, + g->w * g->h); // pixels that were affected previous frame - default: - return stbi__errpuc("unknown code", "Corrupt GIF"); + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", + "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = + 8 * + g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable( + s, g->lpal, 2 << (g->lflags & 7), + g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *)g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *)g->pal; + } else + return stbi__errpuc("missing color table", + "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) + return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = + 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy(&g->out[pi * 4], + &g->pal[g->bgindex], 4); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = + 10 * + stbi__get16le( + s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent] + [3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) + s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } } - } } -static void* stbi__load_gif_main_outofmem(stbi__gif* g, stbi_uc* out, int** delays) +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, + int **delays) { - STBI_FREE(g->out); - STBI_FREE(g->history); - STBI_FREE(g->background); + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); - if (out) STBI_FREE(out); - if (delays && *delays) STBI_FREE(*delays); - return stbi__errpuc("outofmem", "Out of memory"); + if (out) + STBI_FREE(out); + if (delays && *delays) + STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); } -static void* stbi__load_gif_main(stbi__context* s, int** delays, int* x, int* y, int* z, int* comp, int req_comp) +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, + int *z, int *comp, int req_comp) { - if (stbi__gif_test(s)) { - int layers = 0; - stbi_uc* u = 0; - stbi_uc* out = 0; - stbi_uc* two_back = 0; + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, + two_back); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = + (stbi_uc *)STBI_REALLOC_SIZED( + out, out_size, + layers * stride); + if (!tmp) + return stbi__load_gif_main_outofmem( + &g, out, delays); + else { + out = (stbi_uc *)tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int *) + STBI_REALLOC_SIZED( + *delays, + delays_size, + sizeof(int) * + layers); + if (!new_delays) + return stbi__load_gif_main_outofmem( + &g, out, + delays); + *delays = new_delays; + delays_size = + layers * sizeof(int); + } + } else { + out = (stbi_uc *)stbi__malloc(layers * + stride); + if (!out) + return stbi__load_gif_main_outofmem( + &g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int *)stbi__malloc( + layers * sizeof(int)); + if (!*delays) + return stbi__load_gif_main_outofmem( + &g, out, + delays); + delays_size = + layers * sizeof(int); + } + } + memcpy(out + ((layers - 1) * stride), u, + stride); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, + layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; stbi__gif g; - int stride; - int out_size = 0; - int delays_size = 0; - - STBI_NOTUSED(out_size); - STBI_NOTUSED(delays_size); - memset(&g, 0, sizeof(g)); - if (delays) { - *delays = 0; - } + STBI_NOTUSED(ri); - do { - u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); - if (u == (stbi_uc*)s) u = 0; // end of animated gif marker - - if (u) { + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *)s) + u = 0; // end of animated gif marker + if (u) { *x = g.w; *y = g.h; - ++layers; - stride = g.w * g.h * 4; - if (out) { - void* tmp = (stbi_uc*)STBI_REALLOC_SIZED(out, out_size, layers * stride); - if (!tmp) - return stbi__load_gif_main_outofmem(&g, out, delays); - else { - out = (stbi_uc*)tmp; - out_size = layers * stride; - } + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } - if (delays) { - int* new_delays = (int*)STBI_REALLOC_SIZED(*delays, delays_size, sizeof(int) * layers); - if (!new_delays) - return stbi__load_gif_main_outofmem(&g, out, delays); - *delays = new_delays; - delays_size = layers * sizeof(int); - } - } - else { - out = (stbi_uc*)stbi__malloc(layers * stride); - if (!out) - return stbi__load_gif_main_outofmem(&g, out, delays); - out_size = layers * stride; - if (delays) { - *delays = (int*)stbi__malloc(layers * sizeof(int)); - if (!*delays) - return stbi__load_gif_main_outofmem(&g, out, delays); - delays_size = layers * sizeof(int); - } - } - memcpy(out + ((layers - 1) * stride), u, stride); - if (layers >= 2) { - two_back = out - 2 * stride; - } - - if (delays) { - (*delays)[layers - 1U] = g.delay; - } - } - } while (u != 0); - - // free temp buffer; - STBI_FREE(g.out); + // free buffers needed for multiple frame loading; STBI_FREE(g.history); STBI_FREE(g.background); - // do the final conversion after loading everything; - if (req_comp && req_comp != 4) - out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); - - *z = layers; - return out; - } - else { - return stbi__errpuc("not GIF", "Image was not as a gif type."); - } + return u; } -static void* stbi__gif_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) { - stbi_uc* u = 0; - stbi__gif g; - memset(&g, 0, sizeof(g)); - STBI_NOTUSED(ri); - - u = stbi__gif_load_next(s, &g, comp, req_comp, 0); - if (u == (stbi_uc*)s) u = 0; // end of animated gif marker - if (u) { - *x = g.w; - *y = g.h; - - // moved conversion to after successful load so that the same - // can be done for multiple frames. - if (req_comp && req_comp != 4) - u = stbi__convert_format(u, 4, req_comp, g.w, g.h); - } - else if (g.out) { - // if there was an error and we allocated an image buffer, free it! - STBI_FREE(g.out); - } - - // free buffers needed for multiple frame loading; - STBI_FREE(g.history); - STBI_FREE(g.background); - - return u; -} - -static int stbi__gif_info(stbi__context* s, int* x, int* y, int* comp) -{ - return stbi__gif_info_raw(s, x, y, comp); + return stbi__gif_info_raw(s, x, y, comp); } #endif @@ -6649,400 +8031,462 @@ static int stbi__gif_info(stbi__context* s, int* x, int* y, int* comp) // Radiance RGBE HDR loader // originally by Nicolas Schulz #ifndef STBI_NO_HDR -static int stbi__hdr_test_core(stbi__context* s, const char* signature) +static int stbi__hdr_test_core(stbi__context *s, const char *signature) { - int i; - for (i = 0; signature[i]; ++i) - if (stbi__get8(s) != signature[i]) - return 0; - stbi__rewind(s); - return 1; -} - -static int stbi__hdr_test(stbi__context* s) -{ - int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); - stbi__rewind(s); - if (!r) { - r = stbi__hdr_test_core(s, "#?RGBE\n"); + int i; + for (i = 0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; stbi__rewind(s); - } - return r; + return 1; } -#define STBI__HDR_BUFLEN 1024 -static char* stbi__hdr_gettoken(stbi__context* z, char* buffer) +static int stbi__hdr_test(stbi__context *s) { - int len = 0; - char c = '\0'; - - c = (char)stbi__get8(z); - - while (!stbi__at_eof(z) && c != '\n') { - buffer[len++] = c; - if (len == STBI__HDR_BUFLEN - 1) { - // flush to end of line - while (!stbi__at_eof(z) && stbi__get8(z) != '\n') - ; - break; + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if (!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len = 0; + char c = '\0'; + c = (char)stbi__get8(z); - } - buffer[len] = 0; - return buffer; -} - -static void stbi__hdr_convert(float* output, stbi_uc* input, int req_comp) -{ - if (input[3] != 0) { - float f1; - // Exponent - f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8)); - if (req_comp <= 2) - output[0] = (input[0] + input[1] + input[2]) * f1 / 3; - else { - output[0] = input[0] * f1; - output[1] = input[1] * f1; - output[2] = input[2] * f1; - } - if (req_comp == 2) output[1] = 1; - if (req_comp == 4) output[3] = 1; - } - else { - switch (req_comp) { - case 4: output[3] = 1; /* fallthrough */ - case 3: output[0] = output[1] = output[2] = 0; - break; - case 2: output[1] = 1; /* fallthrough */ - case 1: output[0] = 0; - break; - } - } -} - -static float* stbi__hdr_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) -{ - char buffer[STBI__HDR_BUFLEN]; - char* token; - int valid = 0; - int width, height; - stbi_uc* scanline; - float* hdr_data; - int len; - unsigned char count, value; - int i, j, k, c1, c2, z; - const char* headerToken; - STBI_NOTUSED(ri); - - // Check identifier - headerToken = stbi__hdr_gettoken(s, buffer); - if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) - return stbi__errpf("not HDR", "Corrupt HDR image"); - - // Parse header - for (;;) { - token = stbi__hdr_gettoken(s, buffer); - if (token[0] == 0) break; - if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; - } - - if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); - - // Parse width and height - // can't use sscanf() if we're not using stdio! - token = stbi__hdr_gettoken(s, buffer); - if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); - token += 3; - height = (int)strtol(token, &token, 10); - while (*token == ' ') ++token; - if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); - token += 3; - width = (int)strtol(token, NULL, 10); - - if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large", "Very large image (corrupt?)"); - if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large", "Very large image (corrupt?)"); - - *x = width; - *y = height; - - if (comp) *comp = 3; - if (req_comp == 0) req_comp = 3; - - if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) - return stbi__errpf("too large", "HDR image is too large"); - - // Read data - hdr_data = (float*)stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); - if (!hdr_data) - return stbi__errpf("outofmem", "Out of memory"); - - // Load image data - // image data is stored as some number of sca - if (width < 8 || width >= 32768) { - // Read flat data - for (j = 0; j < height; ++j) { - for (i = 0; i < width; ++i) { - stbi_uc rgbe[4]; - main_decode_loop: - stbi__getn(s, rgbe, 4); - stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); - } - } - } - else { - // Read RLE-encoded data - scanline = NULL; - - for (j = 0; j < height; ++j) { - c1 = stbi__get8(s); - c2 = stbi__get8(s); - len = stbi__get8(s); - if (c1 != 2 || c2 != 2 || (len & 0x80)) { - // not run-length encoded, so we have to actually use THIS data as a decoded - // pixel (note this can't be a valid pixel--one of RGB must be >= 128) - stbi_uc rgbe[4]; - rgbe[0] = (stbi_uc)c1; - rgbe[1] = (stbi_uc)c2; - rgbe[2] = (stbi_uc)len; - rgbe[3] = (stbi_uc)stbi__get8(s); - stbi__hdr_convert(hdr_data, rgbe, req_comp); - i = 1; - j = 0; - STBI_FREE(scanline); - goto main_decode_loop; // yes, this makes no sense - } - len <<= 8; - len |= stbi__get8(s); - if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } - if (scanline == NULL) { - scanline = (stbi_uc*)stbi__malloc_mad2(width, 4, 0); - if (!scanline) { - STBI_FREE(hdr_data); - return stbi__errpf("outofmem", "Out of memory"); + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN - 1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; } - } - - for (k = 0; k < 4; ++k) { - int nleft; - i = 0; - while ((nleft = width - i) > 0) { - count = stbi__get8(s); - if (count > 128) { - // Run - value = stbi__get8(s); - count -= 128; - if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } - for (z = 0; z < count; ++z) - scanline[i++ * 4 + k] = value; - } - else { - // Dump - if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } - for (z = 0; z < count; ++z) - scanline[i++ * 4 + k] = stbi__get8(s); - } - } - } - for (i = 0; i < width; ++i) - stbi__hdr_convert(hdr_data + (j * width + i) * req_comp, scanline + i * 4, req_comp); + c = (char)stbi__get8(z); } - if (scanline) - STBI_FREE(scanline); - } - return hdr_data; + buffer[len] = 0; + return buffer; } -static int stbi__hdr_info(stbi__context* s, int* x, int* y, int* comp) +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) { - char buffer[STBI__HDR_BUFLEN]; - char* token; - int valid = 0; - int dummy; + if (input[3] != 0) { + float f1; + // Exponent + f1 = (float)ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) + output[1] = 1; + if (req_comp == 4) + output[3] = 1; + } else { + switch (req_comp) { + case 4: + output[3] = 1; /* fallthrough */ + case 3: + output[0] = output[1] = output[2] = 0; + break; + case 2: + output[1] = 1; /* fallthrough */ + case 1: + output[0] = 0; + break; + } + } +} - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1, c2, z; + const char *headerToken; + STBI_NOTUSED(ri); - if (stbi__hdr_test(s) == 0) { - stbi__rewind(s); - return 0; - } + // Check identifier + headerToken = stbi__hdr_gettoken(s, buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && + strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); - for (;;) { + // Parse header + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) + return stbi__errpf("unsupported format", + "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! token = stbi__hdr_gettoken(s, buffer); - if (token[0] == 0) break; - if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; - } + if (strncmp(token, "-Y ", 3)) + return stbi__errpf("unsupported data layout", + "Unsupported HDR format"); + token += 3; + height = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) + return stbi__errpf("unsupported data layout", + "Unsupported HDR format"); + token += 3; + width = (int)strtol(token, NULL, 10); - if (!valid) { - stbi__rewind(s); - return 0; - } - token = stbi__hdr_gettoken(s, buffer); - if (strncmp(token, "-Y ", 3)) { - stbi__rewind(s); - return 0; - } - token += 3; - *y = (int)strtol(token, &token, 10); - while (*token == ' ') ++token; - if (strncmp(token, "+X ", 3)) { - stbi__rewind(s); - return 0; - } - token += 3; - *x = (int)strtol(token, NULL, 10); - *comp = 3; - return 1; + if (height > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) + return stbi__errpf("too large", "Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) + *comp = 3; + if (req_comp == 0) + req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *)stbi__malloc_mad4(width, height, req_comp, + sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if (width < 8 || width >= 32768) { + // Read flat data + for (j = 0; j < height; ++j) { + for (i = 0; i < width; ++i) { + stbi_uc rgbe[4]; +main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + + j * width * req_comp + + i * req_comp, + rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc)c1; + rgbe[1] = (stbi_uc)c2; + rgbe[2] = (stbi_uc)len; + rgbe[3] = (stbi_uc)stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf( + "invalid decoded scanline length", + "corrupt HDR"); + } + if (scanline == NULL) { + scanline = (stbi_uc *)stbi__malloc_mad2(width, + 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", + "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || + (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf( + "corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = + value; + } else { + // Dump + if ((count == 0) || + (count > nleft)) { + STBI_FREE(hdr_data); + STBI_FREE(scanline); + return stbi__errpf( + "corrupt", + "bad RLE data in HDR"); + } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = + stbi__get8(s); + } + } + } + for (i = 0; i < width; ++i) + stbi__hdr_convert(hdr_data + (j * width + i) * + req_comp, + scanline + i * 4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind(s); + return 0; + } + + for (;;) { + token = stbi__hdr_gettoken(s, buffer); + if (token[0] == 0) + break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) + valid = 1; + } + + if (!valid) { + stbi__rewind(s); + return 0; + } + token = stbi__hdr_gettoken(s, buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *y = (int)strtol(token, &token, 10); + while (*token == ' ') + ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind(s); + return 0; + } + token += 3; + *x = (int)strtol(token, NULL, 10); + *comp = 3; + return 1; } #endif // STBI_NO_HDR #ifndef STBI_NO_BMP -static int stbi__bmp_info(stbi__context* s, int* x, int* y, int* comp) +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) { - void* p; - stbi__bmp_data info; + void *p; + stbi__bmp_data info; - info.all_a = 255; - p = stbi__bmp_parse_header(s, &info); - if (p == NULL) { - stbi__rewind(s); - return 0; - } - if (x) *x = s->img_x; - if (y) *y = s->img_y; - if (comp) { - if (info.bpp == 24 && info.ma == 0xff000000) - *comp = 3; - else - *comp = info.ma ? 4 : 3; - } - return 1; + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind(s); + return 0; + } + if (x) + *x = s->img_x; + if (y) + *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; } #endif #ifndef STBI_NO_PSD -static int stbi__psd_info(stbi__context* s, int* x, int* y, int* comp) +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) { - int channelCount, dummy, depth; - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - if (stbi__get32be(s) != 0x38425053) { - stbi__rewind(s); - return 0; - } - if (stbi__get16be(s) != 1) { - stbi__rewind(s); - return 0; - } - stbi__skip(s, 6); - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) { - stbi__rewind(s); - return 0; - } - *y = stbi__get32be(s); - *x = stbi__get32be(s); - depth = stbi__get16be(s); - if (depth != 8 && depth != 16) { - stbi__rewind(s); - return 0; - } - if (stbi__get16be(s) != 3) { - stbi__rewind(s); - return 0; - } - *comp = 4; - return 1; + int channelCount, dummy, depth; + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind(s); + return 0; + } + *comp = 4; + return 1; } -static int stbi__psd_is16(stbi__context* s) +static int stbi__psd_is16(stbi__context *s) { - int channelCount, depth; - if (stbi__get32be(s) != 0x38425053) { - stbi__rewind(s); - return 0; - } - if (stbi__get16be(s) != 1) { - stbi__rewind(s); - return 0; - } - stbi__skip(s, 6); - channelCount = stbi__get16be(s); - if (channelCount < 0 || channelCount > 16) { - stbi__rewind(s); - return 0; - } - STBI_NOTUSED(stbi__get32be(s)); - STBI_NOTUSED(stbi__get32be(s)); - depth = stbi__get16be(s); - if (depth != 16) { - stbi__rewind(s); - return 0; - } - return 1; + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind(s); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind(s); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind(s); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind(s); + return 0; + } + return 1; } #endif #ifndef STBI_NO_PIC -static int stbi__pic_info(stbi__context* s, int* x, int* y, int* comp) +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) { - int act_comp = 0, num_packets = 0, chained, dummy; - stbi__pic_packet packets[10]; + int act_comp = 0, num_packets = 0, chained, dummy; + stbi__pic_packet packets[10]; - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; - if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) { - stbi__rewind(s); - return 0; - } + if (!stbi__pic_is4(s, "\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } - stbi__skip(s, 88); - - *x = stbi__get16be(s); - *y = stbi__get16be(s); - if (stbi__at_eof(s)) { - stbi__rewind(s); - return 0; - } - if ((*x) != 0 && (1 << 28) / (*x) < (*y)) { - stbi__rewind(s); - return 0; - } - - stbi__skip(s, 8); - - do { - stbi__pic_packet* packet; - - if (num_packets == sizeof(packets) / sizeof(packets[0])) - return 0; - - packet = &packets[num_packets++]; - chained = stbi__get8(s); - packet->size = stbi__get8(s); - packet->type = stbi__get8(s); - packet->channel = stbi__get8(s); - act_comp |= packet->channel; + stbi__skip(s, 88); + *x = stbi__get16be(s); + *y = stbi__get16be(s); if (stbi__at_eof(s)) { - stbi__rewind(s); - return 0; + stbi__rewind(s); + return 0; } - if (packet->size != 8) { - stbi__rewind(s); - return 0; + if ((*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind(s); + return 0; } - } while (chained); - *comp = (act_comp & 0x10 ? 4 : 3); + stbi__skip(s, 8); - return 1; + do { + stbi__pic_packet *packet; + + if (num_packets == sizeof(packets) / sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind(s); + return 0; + } + if (packet->size != 8) { + stbi__rewind(s); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; } #endif @@ -7059,273 +8503,317 @@ static int stbi__pic_info(stbi__context* s, int* x, int* y, int* comp) #ifndef STBI_NO_PNM -static int stbi__pnm_test(stbi__context* s) +static int stbi__pnm_test(stbi__context *s) { - char p, t; - p = (char)stbi__get8(s); - t = (char)stbi__get8(s); - if (p != 'P' || (t != '5' && t != '6')) { - stbi__rewind(s); - return 0; - } - return 1; -} - -static void* stbi__pnm_load(stbi__context* s, int* x, int* y, int* comp, int req_comp, stbi__result_info* ri) -{ - stbi_uc* out; - STBI_NOTUSED(ri); - - ri->bits_per_channel = stbi__pnm_info(s, (int*)&s->img_x, (int*)&s->img_y, (int*)&s->img_n); - if (ri->bits_per_channel == 0) - return 0; - - if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large", "Very large image (corrupt?)"); - - *x = s->img_x; - *y = s->img_y; - if (comp) *comp = s->img_n; - - if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) - return stbi__errpuc("too large", "PNM too large"); - - out = (stbi_uc*)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); - if (!out) return stbi__errpuc("outofmem", "Out of memory"); - if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { - STBI_FREE(out); - return stbi__errpuc("bad PNM", "PNM file truncated"); - } - - if (req_comp && req_comp != s->img_n) { - if (ri->bits_per_channel == 16) { - out = (stbi_uc*)stbi__convert_format16((stbi__uint16*)out, s->img_n, req_comp, s->img_x, s->img_y); + char p, t; + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; } - else { - out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); - } - if (out == NULL) return out; // stbi__convert_format frees input on failure - } - return out; -} - -static int stbi__pnm_isspace(char c) -{ - return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; -} - -static void stbi__pnm_skip_whitespace(stbi__context* s, char* c) -{ - for (;;) { - while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) - *c = (char)stbi__get8(s); - - if (stbi__at_eof(s) || *c != '#') - break; - - while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') - *c = (char)stbi__get8(s); - } -} - -static int stbi__pnm_isdigit(char c) -{ - return c >= '0' && c <= '9'; -} - -static int stbi__pnm_getinteger(stbi__context* s, char* c) -{ - int value = 0; - - while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { - value = value * 10 + (*c - '0'); - *c = (char)stbi__get8(s); - if ((value > 214748364) || (value == 214748364 && *c > '7')) - return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); - } - - return value; -} - -static int stbi__pnm_info(stbi__context* s, int* x, int* y, int* comp) -{ - int maxv, dummy; - char c, p, t; - - if (!x) x = &dummy; - if (!y) y = &dummy; - if (!comp) comp = &dummy; - - stbi__rewind(s); - - // Get identifier - p = (char)stbi__get8(s); - t = (char)stbi__get8(s); - if (p != 'P' || (t != '5' && t != '6')) { - stbi__rewind(s); - return 0; - } - - *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm - - c = (char)stbi__get8(s); - stbi__pnm_skip_whitespace(s, &c); - - *x = stbi__pnm_getinteger(s, &c); // read width - if (*x == 0) - return stbi__err("invalid width", "PPM image header had zero or overflowing width"); - stbi__pnm_skip_whitespace(s, &c); - - *y = stbi__pnm_getinteger(s, &c); // read height - if (*y == 0) - return stbi__err("invalid width", "PPM image header had zero or overflowing width"); - stbi__pnm_skip_whitespace(s, &c); - - maxv = stbi__pnm_getinteger(s, &c); // read max value - if (maxv > 65535) - return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); - else if (maxv > 255) - return 16; - else - return 8; -} - -static int stbi__pnm_is16(stbi__context* s) -{ - if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) return 1; - return 0; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, + int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info( + s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) + return stbi__errpuc("too large", "Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) + *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, + ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *)stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, + ri->bits_per_channel / 8, 0); + if (!out) + return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, + s->img_n * s->img_x * s->img_y * + (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *)stbi__convert_format16( + (stbi__uint16 *)out, s->img_n, req_comp, + s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, + s->img_x, s->img_y); + } + if (out == NULL) + return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || + c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char)stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r') + *c = (char)stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value * 10 + (*c - '0'); + *c = (char)stbi__get8(s); + if ((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err( + "integer parse overflow", + "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) + x = &dummy; + if (!y) + y = &dummy; + if (!comp) + comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char)stbi__get8(s); + t = (char)stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? + 3 : + 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char)stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if (*x == 0) + return stbi__err( + "invalid width", + "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err( + "invalid width", + "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err( + "max value > 65535", + "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; } #endif -static int stbi__info_main(stbi__context* s, int* x, int* y, int* comp) +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) { #ifndef STBI_NO_JPEG - if (stbi__jpeg_info(s, x, y, comp)) return 1; + if (stbi__jpeg_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_PNG - if (stbi__png_info(s, x, y, comp)) return 1; + if (stbi__png_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_GIF - if (stbi__gif_info(s, x, y, comp)) return 1; + if (stbi__gif_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_BMP - if (stbi__bmp_info(s, x, y, comp)) return 1; + if (stbi__bmp_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_PSD - if (stbi__psd_info(s, x, y, comp)) return 1; + if (stbi__psd_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_PIC - if (stbi__pic_info(s, x, y, comp)) return 1; + if (stbi__pic_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_PNM - if (stbi__pnm_info(s, x, y, comp)) return 1; + if (stbi__pnm_info(s, x, y, comp)) + return 1; #endif #ifndef STBI_NO_HDR - if (stbi__hdr_info(s, x, y, comp)) return 1; + if (stbi__hdr_info(s, x, y, comp)) + return 1; #endif - // test tga last because it's a crappy test! + // test tga last because it's a crappy test! #ifndef STBI_NO_TGA - if (stbi__tga_info(s, x, y, comp)) - return 1; + if (stbi__tga_info(s, x, y, comp)) + return 1; #endif - return stbi__err("unknown image type", "Image not of any known type, or corrupt"); + return stbi__err("unknown image type", + "Image not of any known type, or corrupt"); } -static int stbi__is_16_main(stbi__context* s) +static int stbi__is_16_main(stbi__context *s) { #ifndef STBI_NO_PNG - if (stbi__png_is16(s)) return 1; + if (stbi__png_is16(s)) + return 1; #endif #ifndef STBI_NO_PSD - if (stbi__psd_is16(s)) return 1; + if (stbi__psd_is16(s)) + return 1; #endif #ifndef STBI_NO_PNM - if (stbi__pnm_is16(s)) return 1; + if (stbi__pnm_is16(s)) + return 1; #endif - return 0; + return 0; } #ifndef STBI_NO_STDIO -STBIDEF int stbi_info(char const* filename, int* x, int* y, int* comp) +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) { - FILE* f = stbi__fopen(filename, "rb"); - int result; - if (!f) return stbi__err("can't fopen", "Unable to open file"); - result = stbi_info_from_file(f, x, y, comp); - fclose(f); - return result; + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; } -STBIDEF int stbi_info_from_file(FILE* f, int* x, int* y, int* comp) +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) { - int r; - stbi__context s; - long pos = ftell(f); - stbi__start_file(&s, f); - r = stbi__info_main(&s, x, y, comp); - fseek(f, pos, SEEK_SET); - return r; + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s, x, y, comp); + fseek(f, pos, SEEK_SET); + return r; } -STBIDEF int stbi_is_16_bit(char const* filename) +STBIDEF int stbi_is_16_bit(char const *filename) { - FILE* f = stbi__fopen(filename, "rb"); - int result; - if (!f) return stbi__err("can't fopen", "Unable to open file"); - result = stbi_is_16_bit_from_file(f); - fclose(f); - return result; + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) + return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; } -STBIDEF int stbi_is_16_bit_from_file(FILE* f) +STBIDEF int stbi_is_16_bit_from_file(FILE *f) { - int r; - stbi__context s; - long pos = ftell(f); - stbi__start_file(&s, f); - r = stbi__is_16_main(&s); - fseek(f, pos, SEEK_SET); - return r; + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f, pos, SEEK_SET); + return r; } #endif // !STBI_NO_STDIO -STBIDEF int stbi_info_from_memory(stbi_uc const* buffer, int len, int* x, int* y, int* comp) +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, + int *y, int *comp) { - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__info_main(&s, x, y, comp); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__info_main(&s, x, y, comp); } -STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const* c, void* user, int* x, int* y, int* comp) +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, + int *x, int *y, int *comp) { - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)c, user); - return stbi__info_main(&s, x, y, comp); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__info_main(&s, x, y, comp); } -STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const* buffer, int len) +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) { - stbi__context s; - stbi__start_mem(&s, buffer, len); - return stbi__is_16_main(&s); + stbi__context s; + stbi__start_mem(&s, buffer, len); + return stbi__is_16_main(&s); } -STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const* c, void* user) +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, + void *user) { - stbi__context s; - stbi__start_callbacks(&s, (stbi_io_callbacks*)c, user); - return stbi__is_16_main(&s); + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)c, user); + return stbi__is_16_main(&s); } /* @@ -7551,4 +9039,4 @@ AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------ -*/ \ No newline at end of file +*/ diff --git a/源代码/StgSharpC/vector.c b/源代码/StgSharpC/vector.c index 406ddfbe..c62fde5b 100644 --- a/源代码/StgSharpC/vector.c +++ b/源代码/StgSharpC/vector.c @@ -1,31 +1,38 @@ #include "StgSharpC.h" -#include "ssgc_internal.h" +#include "ssc_internal.h" -SSCAPI void SSCDECL normalize(__m128* source, __m128* target) +SSCAPI void SSCDECL normalize(__m128 *source, __m128 *target) { - // ¼ÆËãsourceµij¤¶ȵÄƽ·½ - __m128 a_length_sq = _mm_mul_ps(*source, *source); // ÏòÁ¿µã³Ë×ÔÉí - a_length_sq = _mm_add_ps(a_length_sq, _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); - a_length_sq = _mm_add_ss(a_length_sq, _mm_shuffle_ps(a_length_sq, a_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); + __m128 a_length_sq = _mm_mul_ps(*source, *source); + a_length_sq = _mm_add_ps(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, + _MM_SHUFFLE(2, 3, 0, 1))); + a_length_sq = _mm_add_ss(a_length_sq, + _mm_shuffle_ps(a_length_sq, a_length_sq, + _MM_SHUFFLE(0, 0, 3, 2))); - // ¹éһ»¯ÏòÁ¿source - __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); // ¼ÆËãsource³¤¶ȵĵ¹Êýƽ·½¸ù - *source = _mm_mul_ps(*source, a_inv_length); // ÓÃsource³ËÒÔÆ䳤¶ȵĵ¹Êýƽ·½¸ùµõ½µ¥λÏòÁ¿ + __m128 a_inv_length = _mm_rsqrt_ps(a_length_sq); + *source = _mm_mul_ps(*source, a_inv_length); - // ¼ÆËãtargetÓësourceµĵã»ý - __m128 dot_product = _mm_mul_ps(*target, *source); - dot_product = _mm_add_ps(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(2, 3, 0, 1))); - dot_product = _mm_add_ss(dot_product, _mm_shuffle_ps(dot_product, dot_product, _MM_SHUFFLE(0, 0, 3, 2))); + __m128 dot_product = _mm_mul_ps(*target, *source); + dot_product = _mm_add_ps(dot_product, + _mm_shuffle_ps(dot_product, dot_product, + _MM_SHUFFLE(2, 3, 0, 1))); + dot_product = _mm_add_ss(dot_product, + _mm_shuffle_ps(dot_product, dot_product, + _MM_SHUFFLE(0, 0, 3, 2))); - // ´ÓtargetÖмõȥsourceµķ½Ïò·ÖÁ¿£¬ʹÆ䴹ֱÓÚsource - __m128 b_orthogonal = _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product)); + __m128 b_orthogonal = + _mm_sub_ps(*target, _mm_mul_ps(*source, dot_product)); - // ¹éһ»¯ÏòÁ¿b_orthogonal - __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); - b_length_sq = _mm_add_ps(b_length_sq, _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(2, 3, 0, 1))); - b_length_sq = _mm_add_ss(b_length_sq, _mm_shuffle_ps(b_length_sq, b_length_sq, _MM_SHUFFLE(0, 0, 3, 2))); - - __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); - *target = _mm_mul_ps(b_orthogonal, b_inv_length); + __m128 b_length_sq = _mm_mul_ps(b_orthogonal, b_orthogonal); + b_length_sq = _mm_add_ps(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, + _MM_SHUFFLE(2, 3, 0, 1))); + b_length_sq = _mm_add_ss(b_length_sq, + _mm_shuffle_ps(b_length_sq, b_length_sq, + _MM_SHUFFLE(0, 0, 3, 2))); + __m128 b_inv_length = _mm_rsqrt_ps(b_length_sq); + *target = _mm_mul_ps(b_orthogonal, b_inv_length); } diff --git a/源代码/StgSharpDebug/AlphaDemo/Program.cs b/源代码/StgSharpDebug/AlphaDemo/Program.cs new file mode 100644 index 00000000..d01d5b5b --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/Program.cs @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Program.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- + +using StgSharp.Controlling.UsrActivity; +using StgSharp.Geometries; +using StgSharp.Graphics; + +using StgSharp.Math; +using StgSharp.MVVM; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Runtime.CompilerServices; +using System.Runtime.Intrinsics; +using System.Runtime.Intrinsics.X86; +using System.Xml.XPath; + +namespace StgSharp +{ + internal static class Program + { + + internal static unsafe void Main( string[] args ) + { + try { + Vector128 v1 = Vector128.Create( 0.0f ); + Vector128 v2 = Vector128.Create( 1.0f ); + + Vector128 v3 = Sse.Shuffle( v1, v2, 0b_01001011 ); + Vector128 v4 = Sse.Shuffle( v3, v2, 0b_01001011 ); + v3 = Sse.Add( v3, v4 ); + + Console.WriteLine( v3 ); + + /**/ + StgSharp.Init(); + StgSharp.InitGL( 4, 6 ); + StgSharp.GlobalSetting.VSyncActivated = false; + + ViewPort vp = new ViewPort(); + + ViewModelBase mainModel = new ViewModelMain( vp ); + mainModel.CreateAndBindView( "MainView", (1, 1, 1) ); + + mainModel.UseViewModel( "MainView" ); + + StgSharp.Terminate(); + /**/ + } + catch( Exception ex ) { + InternalIO.InternalWriteLog( $"{ex}", LogType.Error ); + if( true ) { } + Environment.FailFast( $"{ex.Message}\n{ex.StackTrace}" ); + } + } + + } +} \ No newline at end of file diff --git a/源代码/StgSharpDebug/AlphaDemo/RenderStream/Partical.cs b/源代码/StgSharpDebug/AlphaDemo/RenderStream/Partical.cs new file mode 100644 index 00000000..32178f33 --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/RenderStream/Partical.cs @@ -0,0 +1,428 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Partical.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Controls; +using StgSharp.Geometries; +using StgSharp.Graphics; +using StgSharp.Graphics.OpenGL; + +using StgSharp.Math; +using StgSharp.Timing; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ParticleRenderStream : glRender + { + + private AutoTextureGL autoT; + + private ElementBuffer ebo; + private ElementBuffer f_ebo; + private FrameBuffer fbo; + private Image i; + + private int temp = 0; + private PlainInstancingBuffer buffer; + private RenderBuffer rbo; + private ShaderProgram frameMainShader; + private ShaderProgram s; + private TextureGL f_t; + private TextureGL t; + private Uniform texUniform; + private Uniform time; + private VertexArray f_vao; + private VertexArray vao; + + private VertexBuffer f_vbo; + private VertexBuffer vbo; + + public ParticleRenderStream() { } + + public override bool IsContextSharable => true; + + public Rectangle ButtonBounding + { + get; + private set; + } + + public TextureProvider ButtonTextureProvider + { + get; + private set; + } + + //render a controlling item + public void ButtonMain( IEnumerable items ) + { + //Console.WriteLine("Render Button Itself"); + + GL.BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); //GL.Assert(true); + GL.ClearColor( 0.4f, TimePassed % 1.0f, 0f, 1.0f ); //GL.Assert(true); + GL.Clear( MaskBufferBit.COLOR /**/ | MaskBufferBit.DEPTH/**/ ); //GL.Assert(true); + + f_vao.Bind( 0 ); //GL.Assert(true); + + foreach( PlainGeometryMesh mesh in items ) { + //autoT.SelectTextureAndBind(mesh.TextureImage); + f_t.LoadTexture( 0, mesh.TextureImage ); + + //GL.Assert(true); + + frameMainShader.Use(); //GL.Assert(true); + + GL.DrawElements( + GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); + } + + //GL.ClearError(); + //GL.Assert(true); + } + + public void Main() + { + temp++; + + GL.ClearError(); + GL.Viewport( 0, 0, ( uint )Width, ( uint )Height ); + + //Console.Clear(); + buffer.UpdateAllParticles(); + + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + + fbo.Bind( 0 ); //GL.Assert(true); + vao.Bind( 0 ); //GL.Assert(true); + t.Bind2D( 0 ); //GL.Assert(false); + + GL.Viewport( 0, 0, ( uint )Width, ( uint )Height ); + + /**/ + + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, null ); + /**/ + + //GL.Assert(false); + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + + GL.ClearColor( ( 0.6f + TimePassed ) % 1.0f, 0.1f, 0.3f, 1 ); + GL.Assert( false ); + + //Console.WriteLine(GL.CheckFrameBufferStatus(FrameBufferTarget.All)); + GL.Clear( MaskBufferBit.COLOR /**/ | MaskBufferBit.DEPTH /**/ ); + + + //GL.Assert(false); + + vbo.Bind( 1 ); + vbo.WriteVectorData( + 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + + + s.Use(); + NativeCamera.SetAllUniforms(); + GL.SetUniformValue( time, TimePassed ); + + GL.DrawElementsInstanced( + GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, 100 ); + + //Console.WriteLine(TimePassed); + //GL.Assert(true); + + GL.WaitAccomplishment(); + GL.BindVertexArray( GlHandle.Zero ); + /**/ + + //GL.Assert(true); + + ImageHelper.Resize( i, Width, Height, ImageMovement.Discard ); + + //GL.ClearError(); + //Console.Write($"size set to {Height},{Width}"); + //Console.WriteLine($"Image resized to {i.Height} {i.Width}"); + GL.GetTextureImage( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, i.PixelBuffer ); + /* + for (int num = 0; num < i.PixelBuffer.Length; num+=10000) + { + Console.Write($"{i.PixelBuffer[num]}\t"); + } + /**/ + + //GL.Assert(true); + //Array.Fill(i.PixelBuffer, 24); + + GL.BindFrameBuffer( FrameBufferTarget.All, GlHandle.Zero ); + + //GL.Assert(true); + /**/ + } + + public void NothingMain() + { + GL.ClearError(); + + //GL.BindFrameBuffer(FrameBufferTarget.All, GlHandle.Zero); + GL.ClearColor( 0.5f, 0.2f, 0.3f, 1.0f ); + GL.Assert( false ); + } + + public void RenderButton( + ButtonStatus status, + float statusBegin, + in TextureProvider provider ) + { + provider.UpdateFromImage( i ); + } + + internal static Vec3 DefaultRotation( + TimeSpanProvider provider, + out float rotation ) + { + rotation = provider.SpanLengthLowPrecession; + float angle = provider.CurrentSecond * 2; + return ( new Vec3( Scaler.Cos( angle ), Scaler.Sin( angle ), + 0 ) ) * provider.SpanLengthLowPrecession; + } + + protected override void CustomizeDeinit() { } + + protected override void CustomizeInit() + { + //GL.ClearError(); + //GL.Assert(true); + + buffer = new PlainInstancingBuffer(); + for( int i = 0; i < 10; i++ ) { + float ai = Scaler.Abs( i - 5.0f ); + for( int t = 0; t < 10; t++ ) { + float at = Scaler.Abs( t - 5.0f ); + + ParticleOnPlain p = new ParticleOnPlain( buffer ); + ( ( IInstancing )p ).Coord = new Vec3( + ( ( ( -5 ) + i ) * 0.2f ) + 0.1f, + ( ( ( -5 ) + t ) * 0.2f ) + 0.1f, 0 ); + ( ( IInstancing )p ).Scale = + Scaler.MinOf( i, t ) * 0.15f; + ( ( IInstancing )p ).Motion = new GeometryMotion( + true, this._timeProvider, DefaultRotation ); + } + } + + //GL.Assert(true); + + //SetSizeLimit(800, 800, 800, 800); + + s = CreateShaderProgram(); + frameMainShader = CreateShaderProgram(); + Shader pvs = CreateShaderSegment( ShaderType.Vertex, 2 ); + Shader pfs = CreateShaderSegment( ShaderType.Fragment, 2 ); + + //GL.Assert(true); + pvs.Compile( 0, Shader.FromCodeFile( "Shader\\particle.vert" ) ); + + //GL.Assert(true); + pvs.AttachTo( 0, s ); + + //GL.Assert(true); + pfs.Compile( 0, Shader.FromCodeFile( "Shader\\particle.frag" ) ); + pfs.AttachTo( 0, s ); + s.Link(); + + //GL.Assert(true); + + pvs.Compile( 1, Shader.FromCodeFile( "Shader\\fbo.vert" ) ); + pvs.AttachTo( 1, frameMainShader ); + pfs.Compile( 1, Shader.FromCodeFile( "Shader\\fbo.frag" ) ); + pfs.AttachTo( 1, frameMainShader ); + frameMainShader.Link(); + + //GL.Assert(true); + vbo = CreateVertexBuffer( 3 ); + vao = CreateVertexArray( 1 ); + ebo = CreateElementBuffer( 1 ); + vbo.Bind( 0 ); + + Rectangle rec = new Rectangle( + 0.05f, 0.05f, 0.05f, -0.05f, -0.05f, -0.05f, -0.05f, 0.05f ); + + //GL.Assert(true); + vao.Bind( 0 ); + vbo.WriteVectorData( 0, rec.VertexStream, BufferUsage.StaticDraw ); + ebo.SetValue( 0, rec.VertexIndices, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + vbo.WriteVectorData( + 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( + 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + vao.SetVertexAttribute( + 2, 1, TypeCode.Single, false, 4 * sizeof( float ), + 3 * sizeof( float ) ); + + GL.VertexAttributeDivisor( 1, 1 ); + GL.VertexAttributeDivisor( 2, 1 ); + + vbo.WriteScalerData( + 2, buffer.ScalingSpan, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( + 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); + + GL.VertexAttributeDivisor( 3, 1 ); + + vbo.Unbind(); + GL.BindVertexArray( GlHandle.Zero ); + + NativeCameraViewTarget( (0, 0, -100), (0, 0, 0), (0, 1, 0) ); + NativeCameraViewRange( new Degree( 1.5f ), Vec2.Zero, (50, 50) ); + NativeCameraUniform( s, "Camera" ); + + s.Use(); + + fbo = CreateFrameBuffer( 1 ); + rbo = CreateRenderBuffer( 1 ); + fbo.Bind( 0 ); + rbo.Bind( 0 ); + + //GL.Assert(true); + t = CreateTexture( 1 ); + t.Bind2D( 0 ); + GL.TextureImage2d( + Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, + ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, + PixelChannelLayout.Byte, null ); + t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + t.Set2dFilterProperty( + 0, TextureFilter.Linear, TextureFilter.Linear ); + + //GL.Assert(true); + GL.FrameBufferTexture2d( + FrameBufferTarget.All, glAttachment.Color( 0 ), + Texture2DTarget.Texture2D, t[ 0 ], 0 ); + + GL.SetRenderBufferStorage( + RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + GL.CombineFrameBufferRenderBuffer( + FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); + + Console.WriteLine( + GL.CheckFrameBufferStatus( FrameBufferTarget.All ) ); + + FrameBuffer.BindNull(); + + //GL.Assert(true); + int streamLength = this.Width * this.Height * 4; + byte[] imageStream = new byte[streamLength]; + i = Image.FromMemory( + this.Size, ImageChannel.WithAlphaChannel, imageStream ); + + + time = s.GetUniform( "time" ); + + Vec2[] buttonTextureCoordArray = { + (0f, 1f), + (1f, 1f), + (1f, 0f), + (0f, 0f) + }; + ButtonBounding = new Rectangle( + -0.9f, 0.9f, 0.9f, 0.9f, 0.9f, -0.9f, -0.9f, -0.9f ); + + //GL.Assert(true); + ButtonTextureProvider = new TextureProvider( + i, buttonTextureCoordArray ); + + f_vao = CreateVertexArray( 1 ); + f_vbo = CreateVertexBuffer( 2 ); + f_ebo = CreateElementBuffer( 1 ); + + //GL.Assert(true); + f_vao.Bind( 0 ); + + f_ebo.Bind( 0 ); + f_ebo.SetValue( + 0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw ); + + //GL.Assert(true); + f_vbo.Bind( 0 ); + f_vbo.WriteVectorData( + 0, ButtonBounding.VertexStream, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( + 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + //GL.Assert(true); + f_vbo.Bind( 1 ); + f_vbo.WriteVectorData( + 1, buttonTextureCoordArray, BufferUsage.StaticDraw ); + f_vao.SetVertexAttribute( + 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); + + //GL.Assert(true); + + autoT = CreateAutoTexture( 4 ); + autoT.DefaultTextureProperty = new TextureProperty( + TextureFilter.Nearest, TextureFilter.Nearest, + TextureWrap.Repeat, TextureWrap.Repeat ); + + f_t = CreateTexture( 1 ); + f_t.Bind2D( 0 ); + f_t.Set2dWrapProperty( 0, TextureWrap.Repeat, TextureWrap.Repeat ); + f_t.Set2dFilterProperty( + 0, TextureFilter.Nearest, TextureFilter.Nearest ); + + //GL.Assert(true); + f_t.ActivateAs( TextureUnit.Unit1 ); + + //GL.Assert(true); + frameMainShader.Use(); + texUniform = frameMainShader.GetUniform( "tex" ); + + //GL.Assert(true); + GL.SetUniformValue( texUniform, 1 ); + + //GL.Assert(true); + + GL.ClearError(); + GL.Assert( true ); + } + + } +} diff --git a/源代码/StgSharpDebug/AlphaDemo/View/Control.cs b/源代码/StgSharpDebug/AlphaDemo/View/Control.cs new file mode 100644 index 00000000..c5b8cb66 --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/View/Control.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Control.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Controlling.UsrActivity; +using StgSharp.MVVM.View; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain + { + + protected class Control : ViewResponder + { + + public Control( ViewMain view ) : base( view ) { } + + public override void CustomizedInitialize( + Func keyRegister ) { } + + public override bool ValidateInitializing() + { + return true; + } + + } + + } +} diff --git a/源代码/StgSharpDebug/AlphaDemo/View/Design.cs b/源代码/StgSharpDebug/AlphaDemo/View/Design.cs new file mode 100644 index 00000000..b174c17e --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/View/Design.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Design.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Controlling; +using StgSharp.Controlling.UsrActivity; +using StgSharp.Controls; + +using StgSharp.Geometries; +using StgSharp.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain + { + + internal DemoButtonGroup Group + { + get; + set; + } + + internal TriggerButton OnlyButton + { + get; + set; + } + + internal class Design : ViewDesigner + { + + public Design( ViewMain view ) : base( view ) { } + + public override sealed void CustomizedInitialize() + { + Binding.Group = CreateKeyboardButtonGroup( + new KeyTrigger( KeyboardKey.Left, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Right, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Up, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Down, KeyStatus.PRESS ), + new KeyTrigger( KeyboardKey.Enter, KeyStatus.PRESS ) ); + Binding.OnlyButton = CreateKeyboardButton( + Binding.Stream.ButtonBounding, + Binding.Stream.ButtonTextureProvider, true ); + Binding.OnlyButton.RenderButtonTexture += Binding.Stream.RenderButton; + } + + public override bool ValidateInitializing() + { + return true; + } + + } + + } + + public class DemoButtonGroup : KeyboardButtonGroup + { + + public override sealed void Confirm() + { + return; + } + + } +} diff --git a/源代码/StgSharpDebug/AlphaDemo/View/NewRender.cs b/源代码/StgSharpDebug/AlphaDemo/View/NewRender.cs new file mode 100644 index 00000000..3fc9939f --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/View/NewRender.cs @@ -0,0 +1,71 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="NewRender.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Data; +using StgSharp.Graphics; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain + { + + public ParticleRenderStream Stream + { + get; + set; + } + + private class NewRender : ViewRender + { + + public NewRender( ViewMain view ) : base( view ) { } + + public override void CustomizedInitialize() + { + Binding.Stream = CreateRenderStream( + (1, 1, 1) ); + Render[ "only".AsLabel() ] = Binding.Stream; + } + + public override bool ValidateInitializing() + { + return Binding.Stream != null; + } + + } + + } +} diff --git a/源代码/StgSharpDebug/AlphaDemo/View/ViewMain.cs b/源代码/StgSharpDebug/AlphaDemo/View/ViewMain.cs new file mode 100644 index 00000000..57795a8e --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/View/ViewMain.cs @@ -0,0 +1,100 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewMain.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; +using StgSharp.MVVM; +using StgSharp.MVVM.View; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public partial class ViewMain : ViewBase + { + + private Dictionary _databindingIndexMap; + + public ViewMain() + { + _databindingIndexMap = new Dictionary(); + } + + public override void CustomizedInitialize( + [NotNull]ViewModelBase viewModelBinding ) + { + Designer = new Design( this ); + Responder = new Control( this ); + Render = new NewRender( this ); + + Render.Initialize(); + Designer.Initialize(); + Responder.Initialize( viewModelBinding.MethodLookup ); + } + + public override bool TryGetObjectReference( + string name, + out DataBindingEntry entry ) + { + if( _databindingIndexMap.TryGetValue( name, out entry ) ) { + return true; + } + try { + entry = name switch + { + _ => default( DataBindingEntry ), + }; + return !entry.ExactEqual( default( DataBindingEntry ) ); + } + catch( Exception ) { + entry = default( DataBindingEntry ); + return false; + } + } + + protected internal override void Show() + { + Stream.RenderStart(); + + //Stream.NothingMain(); + + Stream.Main(); + Stream.ButtonMain( OnlyButton ); + Stream.RenderEnd(); + } + + } +} diff --git a/源代码/StgSharpDebug/AlphaDemo/ViewModelMain.cs b/源代码/StgSharpDebug/AlphaDemo/ViewModelMain.cs new file mode 100644 index 00000000..e0ec6b45 --- /dev/null +++ b/源代码/StgSharpDebug/AlphaDemo/ViewModelMain.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ViewModelMain.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +using StgSharp.Graphics; + +using StgSharp.MVVM; +using StgSharp.MVVM.ViewModel; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp +{ + public class ViewModelMain : ViewModelBase + { + + private Dictionary dataBindingEntryIndexmap; + + public ViewModelMain( ViewPort vp ) + : base( vp, 60 ) + { + dataBindingEntryIndexmap = new Dictionary( + ); + } + + public override void CustomizeInitialize() { } + + public override bool TryGetObjectReference( + string name, + out DataBindingEntry entry ) + { + if( dataBindingEntryIndexmap.TryGetValue( name, out entry ) ) { + return true; + } + entry = name switch + { + _ => DataBindingEntry.NullBinding, + }; + + if( entry.ExactEqual( DataBindingEntry.NullBinding ) ) { + return false; + } + dataBindingEntryIndexmap.Add( name, entry ); + return true; + } + + }//------------------------------------- End of Class ------------------------------------------ +} diff --git a/源代码/StgSharpDebug/Properties/launchSettings.json b/源代码/StgSharpDebug/Properties/launchSettings.json index fbcd94d1..32cd25bd 100644 --- a/源代码/StgSharpDebug/Properties/launchSettings.json +++ b/源代码/StgSharpDebug/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "StgSharpDebug": { "commandName": "Project", - "nativeDebugging": false + "nativeDebugging": true } } } \ No newline at end of file diff --git a/源代码/StgSharpDebug/StgSharpDebug.csproj b/源代码/StgSharpDebug/StgSharpDebug.csproj index 8e591d6c..5c96976e 100644 --- a/源代码/StgSharpDebug/StgSharpDebug.csproj +++ b/源代码/StgSharpDebug/StgSharpDebug.csproj @@ -87,9 +87,6 @@ Linux - - - @@ -99,14 +96,14 @@ - + - all + diff --git a/源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json b/源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json index 727d9d9a..a1e9b780 100644 --- a/源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json +++ b/源代码/StgSharpDebug/obj/StgSharpDebug.csproj.nuget.dgspec.json @@ -26,7 +26,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -50,14 +49,14 @@ "net6.0": { "targetAlias": "net6.0", "dependencies": { - "BidirectionalDict": { - "target": "Package", - "version": "[1.2.0, )" - }, "Microsoft.Windows.CsWin32": { "suppressParent": "All", "target": "Package", "version": "[0.3.49-beta, )" + }, + "System.Collections.Concurrent": { + "target": "Package", + "version": "[4.3.0, )" } }, "imports": [ diff --git a/源代码/StgSharpDebug/obj/project.assets.json b/源代码/StgSharpDebug/obj/project.assets.json index cdba4e32..c05d8a4b 100644 --- a/源代码/StgSharpDebug/obj/project.assets.json +++ b/源代码/StgSharpDebug/obj/project.assets.json @@ -2,17 +2,22 @@ "version": 3, "targets": { "net6.0": { - "BidirectionalDict/1.2.0": { + "Microsoft.NETCore.Platforms/1.1.0": { "type": "package", "compile": { - "lib/netcoreapp3.1/BidirectionalDict.dll": { - "related": ".xml" - } + "lib/netstandard1.0/_._": {} }, "runtime": { - "lib/netcoreapp3.1/BidirectionalDict.dll": { - "related": ".xml" - } + "lib/netstandard1.0/_._": {} + } + }, + "Microsoft.NETCore.Targets/1.1.0": { + "type": "package", + "compile": { + "lib/netstandard1.0/_._": {} + }, + "runtime": { + "lib/netstandard1.0/_._": {} } }, "Microsoft.Windows.CsWin32/0.3.49-beta": { @@ -59,6 +64,96 @@ "buildTransitive/netstandard1.0/Microsoft.Windows.WDK.Win32Metadata.props": {} } }, + "System.Collections/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Collections.Concurrent/4.3.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Collections.Concurrent.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Collections.Concurrent.dll": {} + } + }, + "System.Diagnostics.Debug/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Diagnostics.Tracing/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Globalization/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.IO/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, "System.Memory/4.5.5": { "type": "package", "compile": { @@ -68,6 +163,61 @@ "lib/netcoreapp2.1/_._": {} } }, + "System.Reflection/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Reflection.Primitives/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + } + }, + "System.Resources.ResourceManager/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.0/_._": { + "related": ".xml" + } + } + }, + "System.Runtime/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + }, + "compile": { + "ref/netstandard1.5/System.Runtime.dll": { + "related": ".xml" + } + } + }, "System.Runtime.CompilerServices.Unsafe/6.0.0": { "type": "package", "compile": { @@ -83,26 +233,92 @@ "build": { "buildTransitive/netcoreapp3.1/_._": {} } + }, + "System.Runtime.Extensions/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.5/_._": { + "related": ".xml" + } + } + }, + "System.Text.Encoding/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + } + }, + "System.Threading/4.3.0": { + "type": "package", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.3/System.Threading.dll": {} + } + }, + "System.Threading.Tasks/4.3.0": { + "type": "package", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + }, + "compile": { + "ref/netstandard1.3/System.Threading.Tasks.dll": { + "related": ".xml" + } + } } } }, "libraries": { - "BidirectionalDict/1.2.0": { - "sha512": "hjLTwpPTQBdseFVTVH1vf7Pbaj5ATKIM3DQN8Hup22ixyC14+r1bE4YFjtZmWfcegvJR74zYtatBTwpOHmIMNQ==", + "Microsoft.NETCore.Platforms/1.1.0": { + "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", "type": "package", - "path": "bidirectionaldict/1.2.0", + "path": "microsoft.netcore.platforms/1.1.0", "files": [ ".nupkg.metadata", ".signature.p7s", - "LICENSE", - "bidirectionaldict.1.2.0.nupkg.sha512", - "bidirectionaldict.nuspec", - "lib/net48/BidirectionalDict.dll", - "lib/net48/BidirectionalDict.xml", - "lib/netcoreapp3.1/BidirectionalDict.dll", - "lib/netcoreapp3.1/BidirectionalDict.xml", - "lib/netstandard2.1/BidirectionalDict.dll", - "lib/netstandard2.1/BidirectionalDict.xml" + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.platforms.1.1.0.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", + "runtime.json" + ] + }, + "Microsoft.NETCore.Targets/1.1.0": { + "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", + "type": "package", + "path": "microsoft.netcore.targets/1.1.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.0.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" ] }, "Microsoft.Windows.CsWin32/0.3.49-beta": { @@ -190,6 +406,449 @@ "sdk_license.txt" ] }, + "System.Collections/4.3.0": { + "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "type": "package", + "path": "system.collections/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.dll", + "ref/netcore50/System.Collections.xml", + "ref/netcore50/de/System.Collections.xml", + "ref/netcore50/es/System.Collections.xml", + "ref/netcore50/fr/System.Collections.xml", + "ref/netcore50/it/System.Collections.xml", + "ref/netcore50/ja/System.Collections.xml", + "ref/netcore50/ko/System.Collections.xml", + "ref/netcore50/ru/System.Collections.xml", + "ref/netcore50/zh-hans/System.Collections.xml", + "ref/netcore50/zh-hant/System.Collections.xml", + "ref/netstandard1.0/System.Collections.dll", + "ref/netstandard1.0/System.Collections.xml", + "ref/netstandard1.0/de/System.Collections.xml", + "ref/netstandard1.0/es/System.Collections.xml", + "ref/netstandard1.0/fr/System.Collections.xml", + "ref/netstandard1.0/it/System.Collections.xml", + "ref/netstandard1.0/ja/System.Collections.xml", + "ref/netstandard1.0/ko/System.Collections.xml", + "ref/netstandard1.0/ru/System.Collections.xml", + "ref/netstandard1.0/zh-hans/System.Collections.xml", + "ref/netstandard1.0/zh-hant/System.Collections.xml", + "ref/netstandard1.3/System.Collections.dll", + "ref/netstandard1.3/System.Collections.xml", + "ref/netstandard1.3/de/System.Collections.xml", + "ref/netstandard1.3/es/System.Collections.xml", + "ref/netstandard1.3/fr/System.Collections.xml", + "ref/netstandard1.3/it/System.Collections.xml", + "ref/netstandard1.3/ja/System.Collections.xml", + "ref/netstandard1.3/ko/System.Collections.xml", + "ref/netstandard1.3/ru/System.Collections.xml", + "ref/netstandard1.3/zh-hans/System.Collections.xml", + "ref/netstandard1.3/zh-hant/System.Collections.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.4.3.0.nupkg.sha512", + "system.collections.nuspec" + ] + }, + "System.Collections.Concurrent/4.3.0": { + "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "type": "package", + "path": "system.collections.concurrent/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Collections.Concurrent.dll", + "lib/netstandard1.3/System.Collections.Concurrent.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Collections.Concurrent.dll", + "ref/netcore50/System.Collections.Concurrent.xml", + "ref/netcore50/de/System.Collections.Concurrent.xml", + "ref/netcore50/es/System.Collections.Concurrent.xml", + "ref/netcore50/fr/System.Collections.Concurrent.xml", + "ref/netcore50/it/System.Collections.Concurrent.xml", + "ref/netcore50/ja/System.Collections.Concurrent.xml", + "ref/netcore50/ko/System.Collections.Concurrent.xml", + "ref/netcore50/ru/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", + "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.1/System.Collections.Concurrent.dll", + "ref/netstandard1.1/System.Collections.Concurrent.xml", + "ref/netstandard1.1/de/System.Collections.Concurrent.xml", + "ref/netstandard1.1/es/System.Collections.Concurrent.xml", + "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.1/it/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", + "ref/netstandard1.3/System.Collections.Concurrent.dll", + "ref/netstandard1.3/System.Collections.Concurrent.xml", + "ref/netstandard1.3/de/System.Collections.Concurrent.xml", + "ref/netstandard1.3/es/System.Collections.Concurrent.xml", + "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", + "ref/netstandard1.3/it/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", + "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", + "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.collections.concurrent.4.3.0.nupkg.sha512", + "system.collections.concurrent.nuspec" + ] + }, + "System.Diagnostics.Debug/4.3.0": { + "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "type": "package", + "path": "system.diagnostics.debug/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Diagnostics.Debug.dll", + "ref/netcore50/System.Diagnostics.Debug.xml", + "ref/netcore50/de/System.Diagnostics.Debug.xml", + "ref/netcore50/es/System.Diagnostics.Debug.xml", + "ref/netcore50/fr/System.Diagnostics.Debug.xml", + "ref/netcore50/it/System.Diagnostics.Debug.xml", + "ref/netcore50/ja/System.Diagnostics.Debug.xml", + "ref/netcore50/ko/System.Diagnostics.Debug.xml", + "ref/netcore50/ru/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Debug.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/System.Diagnostics.Debug.dll", + "ref/netstandard1.0/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/System.Diagnostics.Debug.dll", + "ref/netstandard1.3/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/de/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/es/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/it/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.debug.4.3.0.nupkg.sha512", + "system.diagnostics.debug.nuspec" + ] + }, + "System.Diagnostics.Tracing/4.3.0": { + "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "type": "package", + "path": "system.diagnostics.tracing/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Diagnostics.Tracing.dll", + "lib/portable-net45+win8+wpa81/_._", + "lib/win8/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.dll", + "ref/netcore50/System.Diagnostics.Tracing.xml", + "ref/netcore50/de/System.Diagnostics.Tracing.xml", + "ref/netcore50/es/System.Diagnostics.Tracing.xml", + "ref/netcore50/fr/System.Diagnostics.Tracing.xml", + "ref/netcore50/it/System.Diagnostics.Tracing.xml", + "ref/netcore50/ja/System.Diagnostics.Tracing.xml", + "ref/netcore50/ko/System.Diagnostics.Tracing.xml", + "ref/netcore50/ru/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/System.Diagnostics.Tracing.dll", + "ref/netstandard1.1/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/System.Diagnostics.Tracing.dll", + "ref/netstandard1.2/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/System.Diagnostics.Tracing.dll", + "ref/netstandard1.3/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/System.Diagnostics.Tracing.dll", + "ref/netstandard1.5/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", + "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", + "ref/portable-net45+win8+wpa81/_._", + "ref/win8/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.diagnostics.tracing.4.3.0.nupkg.sha512", + "system.diagnostics.tracing.nuspec" + ] + }, + "System.Globalization/4.3.0": { + "sha512": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "type": "package", + "path": "system.globalization/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Globalization.dll", + "ref/netcore50/System.Globalization.xml", + "ref/netcore50/de/System.Globalization.xml", + "ref/netcore50/es/System.Globalization.xml", + "ref/netcore50/fr/System.Globalization.xml", + "ref/netcore50/it/System.Globalization.xml", + "ref/netcore50/ja/System.Globalization.xml", + "ref/netcore50/ko/System.Globalization.xml", + "ref/netcore50/ru/System.Globalization.xml", + "ref/netcore50/zh-hans/System.Globalization.xml", + "ref/netcore50/zh-hant/System.Globalization.xml", + "ref/netstandard1.0/System.Globalization.dll", + "ref/netstandard1.0/System.Globalization.xml", + "ref/netstandard1.0/de/System.Globalization.xml", + "ref/netstandard1.0/es/System.Globalization.xml", + "ref/netstandard1.0/fr/System.Globalization.xml", + "ref/netstandard1.0/it/System.Globalization.xml", + "ref/netstandard1.0/ja/System.Globalization.xml", + "ref/netstandard1.0/ko/System.Globalization.xml", + "ref/netstandard1.0/ru/System.Globalization.xml", + "ref/netstandard1.0/zh-hans/System.Globalization.xml", + "ref/netstandard1.0/zh-hant/System.Globalization.xml", + "ref/netstandard1.3/System.Globalization.dll", + "ref/netstandard1.3/System.Globalization.xml", + "ref/netstandard1.3/de/System.Globalization.xml", + "ref/netstandard1.3/es/System.Globalization.xml", + "ref/netstandard1.3/fr/System.Globalization.xml", + "ref/netstandard1.3/it/System.Globalization.xml", + "ref/netstandard1.3/ja/System.Globalization.xml", + "ref/netstandard1.3/ko/System.Globalization.xml", + "ref/netstandard1.3/ru/System.Globalization.xml", + "ref/netstandard1.3/zh-hans/System.Globalization.xml", + "ref/netstandard1.3/zh-hant/System.Globalization.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.globalization.4.3.0.nupkg.sha512", + "system.globalization.nuspec" + ] + }, + "System.IO/4.3.0": { + "sha512": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", + "type": "package", + "path": "system.io/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.IO.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.IO.dll", + "ref/netcore50/System.IO.dll", + "ref/netcore50/System.IO.xml", + "ref/netcore50/de/System.IO.xml", + "ref/netcore50/es/System.IO.xml", + "ref/netcore50/fr/System.IO.xml", + "ref/netcore50/it/System.IO.xml", + "ref/netcore50/ja/System.IO.xml", + "ref/netcore50/ko/System.IO.xml", + "ref/netcore50/ru/System.IO.xml", + "ref/netcore50/zh-hans/System.IO.xml", + "ref/netcore50/zh-hant/System.IO.xml", + "ref/netstandard1.0/System.IO.dll", + "ref/netstandard1.0/System.IO.xml", + "ref/netstandard1.0/de/System.IO.xml", + "ref/netstandard1.0/es/System.IO.xml", + "ref/netstandard1.0/fr/System.IO.xml", + "ref/netstandard1.0/it/System.IO.xml", + "ref/netstandard1.0/ja/System.IO.xml", + "ref/netstandard1.0/ko/System.IO.xml", + "ref/netstandard1.0/ru/System.IO.xml", + "ref/netstandard1.0/zh-hans/System.IO.xml", + "ref/netstandard1.0/zh-hant/System.IO.xml", + "ref/netstandard1.3/System.IO.dll", + "ref/netstandard1.3/System.IO.xml", + "ref/netstandard1.3/de/System.IO.xml", + "ref/netstandard1.3/es/System.IO.xml", + "ref/netstandard1.3/fr/System.IO.xml", + "ref/netstandard1.3/it/System.IO.xml", + "ref/netstandard1.3/ja/System.IO.xml", + "ref/netstandard1.3/ko/System.IO.xml", + "ref/netstandard1.3/ru/System.IO.xml", + "ref/netstandard1.3/zh-hans/System.IO.xml", + "ref/netstandard1.3/zh-hant/System.IO.xml", + "ref/netstandard1.5/System.IO.dll", + "ref/netstandard1.5/System.IO.xml", + "ref/netstandard1.5/de/System.IO.xml", + "ref/netstandard1.5/es/System.IO.xml", + "ref/netstandard1.5/fr/System.IO.xml", + "ref/netstandard1.5/it/System.IO.xml", + "ref/netstandard1.5/ja/System.IO.xml", + "ref/netstandard1.5/ko/System.IO.xml", + "ref/netstandard1.5/ru/System.IO.xml", + "ref/netstandard1.5/zh-hans/System.IO.xml", + "ref/netstandard1.5/zh-hant/System.IO.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.io.4.3.0.nupkg.sha512", + "system.io.nuspec" + ] + }, "System.Memory/4.5.5": { "sha512": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", "type": "package", @@ -213,6 +872,293 @@ "version.txt" ] }, + "System.Reflection/4.3.0": { + "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", + "type": "package", + "path": "system.reflection/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Reflection.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Reflection.dll", + "ref/netcore50/System.Reflection.dll", + "ref/netcore50/System.Reflection.xml", + "ref/netcore50/de/System.Reflection.xml", + "ref/netcore50/es/System.Reflection.xml", + "ref/netcore50/fr/System.Reflection.xml", + "ref/netcore50/it/System.Reflection.xml", + "ref/netcore50/ja/System.Reflection.xml", + "ref/netcore50/ko/System.Reflection.xml", + "ref/netcore50/ru/System.Reflection.xml", + "ref/netcore50/zh-hans/System.Reflection.xml", + "ref/netcore50/zh-hant/System.Reflection.xml", + "ref/netstandard1.0/System.Reflection.dll", + "ref/netstandard1.0/System.Reflection.xml", + "ref/netstandard1.0/de/System.Reflection.xml", + "ref/netstandard1.0/es/System.Reflection.xml", + "ref/netstandard1.0/fr/System.Reflection.xml", + "ref/netstandard1.0/it/System.Reflection.xml", + "ref/netstandard1.0/ja/System.Reflection.xml", + "ref/netstandard1.0/ko/System.Reflection.xml", + "ref/netstandard1.0/ru/System.Reflection.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.xml", + "ref/netstandard1.3/System.Reflection.dll", + "ref/netstandard1.3/System.Reflection.xml", + "ref/netstandard1.3/de/System.Reflection.xml", + "ref/netstandard1.3/es/System.Reflection.xml", + "ref/netstandard1.3/fr/System.Reflection.xml", + "ref/netstandard1.3/it/System.Reflection.xml", + "ref/netstandard1.3/ja/System.Reflection.xml", + "ref/netstandard1.3/ko/System.Reflection.xml", + "ref/netstandard1.3/ru/System.Reflection.xml", + "ref/netstandard1.3/zh-hans/System.Reflection.xml", + "ref/netstandard1.3/zh-hant/System.Reflection.xml", + "ref/netstandard1.5/System.Reflection.dll", + "ref/netstandard1.5/System.Reflection.xml", + "ref/netstandard1.5/de/System.Reflection.xml", + "ref/netstandard1.5/es/System.Reflection.xml", + "ref/netstandard1.5/fr/System.Reflection.xml", + "ref/netstandard1.5/it/System.Reflection.xml", + "ref/netstandard1.5/ja/System.Reflection.xml", + "ref/netstandard1.5/ko/System.Reflection.xml", + "ref/netstandard1.5/ru/System.Reflection.xml", + "ref/netstandard1.5/zh-hans/System.Reflection.xml", + "ref/netstandard1.5/zh-hant/System.Reflection.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.4.3.0.nupkg.sha512", + "system.reflection.nuspec" + ] + }, + "System.Reflection.Primitives/4.3.0": { + "sha512": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "type": "package", + "path": "system.reflection.primitives/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Reflection.Primitives.dll", + "ref/netcore50/System.Reflection.Primitives.xml", + "ref/netcore50/de/System.Reflection.Primitives.xml", + "ref/netcore50/es/System.Reflection.Primitives.xml", + "ref/netcore50/fr/System.Reflection.Primitives.xml", + "ref/netcore50/it/System.Reflection.Primitives.xml", + "ref/netcore50/ja/System.Reflection.Primitives.xml", + "ref/netcore50/ko/System.Reflection.Primitives.xml", + "ref/netcore50/ru/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hans/System.Reflection.Primitives.xml", + "ref/netcore50/zh-hant/System.Reflection.Primitives.xml", + "ref/netstandard1.0/System.Reflection.Primitives.dll", + "ref/netstandard1.0/System.Reflection.Primitives.xml", + "ref/netstandard1.0/de/System.Reflection.Primitives.xml", + "ref/netstandard1.0/es/System.Reflection.Primitives.xml", + "ref/netstandard1.0/fr/System.Reflection.Primitives.xml", + "ref/netstandard1.0/it/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ja/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ko/System.Reflection.Primitives.xml", + "ref/netstandard1.0/ru/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml", + "ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.reflection.primitives.4.3.0.nupkg.sha512", + "system.reflection.primitives.nuspec" + ] + }, + "System.Resources.ResourceManager/4.3.0": { + "sha512": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "type": "package", + "path": "system.resources.resourcemanager/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Resources.ResourceManager.dll", + "ref/netcore50/System.Resources.ResourceManager.xml", + "ref/netcore50/de/System.Resources.ResourceManager.xml", + "ref/netcore50/es/System.Resources.ResourceManager.xml", + "ref/netcore50/fr/System.Resources.ResourceManager.xml", + "ref/netcore50/it/System.Resources.ResourceManager.xml", + "ref/netcore50/ja/System.Resources.ResourceManager.xml", + "ref/netcore50/ko/System.Resources.ResourceManager.xml", + "ref/netcore50/ru/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hans/System.Resources.ResourceManager.xml", + "ref/netcore50/zh-hant/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/System.Resources.ResourceManager.dll", + "ref/netstandard1.0/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/de/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/es/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/fr/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/it/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ja/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ko/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/ru/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml", + "ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.resources.resourcemanager.4.3.0.nupkg.sha512", + "system.resources.resourcemanager.nuspec" + ] + }, + "System.Runtime/4.3.0": { + "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "type": "package", + "path": "system.runtime/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.dll", + "lib/portable-net45+win8+wp80+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.dll", + "ref/netcore50/System.Runtime.dll", + "ref/netcore50/System.Runtime.xml", + "ref/netcore50/de/System.Runtime.xml", + "ref/netcore50/es/System.Runtime.xml", + "ref/netcore50/fr/System.Runtime.xml", + "ref/netcore50/it/System.Runtime.xml", + "ref/netcore50/ja/System.Runtime.xml", + "ref/netcore50/ko/System.Runtime.xml", + "ref/netcore50/ru/System.Runtime.xml", + "ref/netcore50/zh-hans/System.Runtime.xml", + "ref/netcore50/zh-hant/System.Runtime.xml", + "ref/netstandard1.0/System.Runtime.dll", + "ref/netstandard1.0/System.Runtime.xml", + "ref/netstandard1.0/de/System.Runtime.xml", + "ref/netstandard1.0/es/System.Runtime.xml", + "ref/netstandard1.0/fr/System.Runtime.xml", + "ref/netstandard1.0/it/System.Runtime.xml", + "ref/netstandard1.0/ja/System.Runtime.xml", + "ref/netstandard1.0/ko/System.Runtime.xml", + "ref/netstandard1.0/ru/System.Runtime.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.xml", + "ref/netstandard1.2/System.Runtime.dll", + "ref/netstandard1.2/System.Runtime.xml", + "ref/netstandard1.2/de/System.Runtime.xml", + "ref/netstandard1.2/es/System.Runtime.xml", + "ref/netstandard1.2/fr/System.Runtime.xml", + "ref/netstandard1.2/it/System.Runtime.xml", + "ref/netstandard1.2/ja/System.Runtime.xml", + "ref/netstandard1.2/ko/System.Runtime.xml", + "ref/netstandard1.2/ru/System.Runtime.xml", + "ref/netstandard1.2/zh-hans/System.Runtime.xml", + "ref/netstandard1.2/zh-hant/System.Runtime.xml", + "ref/netstandard1.3/System.Runtime.dll", + "ref/netstandard1.3/System.Runtime.xml", + "ref/netstandard1.3/de/System.Runtime.xml", + "ref/netstandard1.3/es/System.Runtime.xml", + "ref/netstandard1.3/fr/System.Runtime.xml", + "ref/netstandard1.3/it/System.Runtime.xml", + "ref/netstandard1.3/ja/System.Runtime.xml", + "ref/netstandard1.3/ko/System.Runtime.xml", + "ref/netstandard1.3/ru/System.Runtime.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.xml", + "ref/netstandard1.5/System.Runtime.dll", + "ref/netstandard1.5/System.Runtime.xml", + "ref/netstandard1.5/de/System.Runtime.xml", + "ref/netstandard1.5/es/System.Runtime.xml", + "ref/netstandard1.5/fr/System.Runtime.xml", + "ref/netstandard1.5/it/System.Runtime.xml", + "ref/netstandard1.5/ja/System.Runtime.xml", + "ref/netstandard1.5/ko/System.Runtime.xml", + "ref/netstandard1.5/ru/System.Runtime.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.xml", + "ref/portable-net45+win8+wp80+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.nuspec" + ] + }, "System.Runtime.CompilerServices.Unsafe/6.0.0": { "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", "type": "package", @@ -237,12 +1183,300 @@ "system.runtime.compilerservices.unsafe.nuspec", "useSharedDesignerContext.txt" ] + }, + "System.Runtime.Extensions/4.3.0": { + "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "type": "package", + "path": "system.runtime.extensions/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net462/System.Runtime.Extensions.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net462/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.dll", + "ref/netcore50/System.Runtime.Extensions.xml", + "ref/netcore50/de/System.Runtime.Extensions.xml", + "ref/netcore50/es/System.Runtime.Extensions.xml", + "ref/netcore50/fr/System.Runtime.Extensions.xml", + "ref/netcore50/it/System.Runtime.Extensions.xml", + "ref/netcore50/ja/System.Runtime.Extensions.xml", + "ref/netcore50/ko/System.Runtime.Extensions.xml", + "ref/netcore50/ru/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hans/System.Runtime.Extensions.xml", + "ref/netcore50/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.0/System.Runtime.Extensions.dll", + "ref/netstandard1.0/System.Runtime.Extensions.xml", + "ref/netstandard1.0/de/System.Runtime.Extensions.xml", + "ref/netstandard1.0/es/System.Runtime.Extensions.xml", + "ref/netstandard1.0/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.0/it/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.0/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.3/System.Runtime.Extensions.dll", + "ref/netstandard1.3/System.Runtime.Extensions.xml", + "ref/netstandard1.3/de/System.Runtime.Extensions.xml", + "ref/netstandard1.3/es/System.Runtime.Extensions.xml", + "ref/netstandard1.3/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.3/it/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.3/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml", + "ref/netstandard1.5/System.Runtime.Extensions.dll", + "ref/netstandard1.5/System.Runtime.Extensions.xml", + "ref/netstandard1.5/de/System.Runtime.Extensions.xml", + "ref/netstandard1.5/es/System.Runtime.Extensions.xml", + "ref/netstandard1.5/fr/System.Runtime.Extensions.xml", + "ref/netstandard1.5/it/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ja/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ko/System.Runtime.Extensions.xml", + "ref/netstandard1.5/ru/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml", + "ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.nuspec" + ] + }, + "System.Text.Encoding/4.3.0": { + "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "type": "package", + "path": "system.text.encoding/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Text.Encoding.dll", + "ref/netcore50/System.Text.Encoding.xml", + "ref/netcore50/de/System.Text.Encoding.xml", + "ref/netcore50/es/System.Text.Encoding.xml", + "ref/netcore50/fr/System.Text.Encoding.xml", + "ref/netcore50/it/System.Text.Encoding.xml", + "ref/netcore50/ja/System.Text.Encoding.xml", + "ref/netcore50/ko/System.Text.Encoding.xml", + "ref/netcore50/ru/System.Text.Encoding.xml", + "ref/netcore50/zh-hans/System.Text.Encoding.xml", + "ref/netcore50/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.0/System.Text.Encoding.dll", + "ref/netstandard1.0/System.Text.Encoding.xml", + "ref/netstandard1.0/de/System.Text.Encoding.xml", + "ref/netstandard1.0/es/System.Text.Encoding.xml", + "ref/netstandard1.0/fr/System.Text.Encoding.xml", + "ref/netstandard1.0/it/System.Text.Encoding.xml", + "ref/netstandard1.0/ja/System.Text.Encoding.xml", + "ref/netstandard1.0/ko/System.Text.Encoding.xml", + "ref/netstandard1.0/ru/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.0/zh-hant/System.Text.Encoding.xml", + "ref/netstandard1.3/System.Text.Encoding.dll", + "ref/netstandard1.3/System.Text.Encoding.xml", + "ref/netstandard1.3/de/System.Text.Encoding.xml", + "ref/netstandard1.3/es/System.Text.Encoding.xml", + "ref/netstandard1.3/fr/System.Text.Encoding.xml", + "ref/netstandard1.3/it/System.Text.Encoding.xml", + "ref/netstandard1.3/ja/System.Text.Encoding.xml", + "ref/netstandard1.3/ko/System.Text.Encoding.xml", + "ref/netstandard1.3/ru/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hans/System.Text.Encoding.xml", + "ref/netstandard1.3/zh-hant/System.Text.Encoding.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.text.encoding.4.3.0.nupkg.sha512", + "system.text.encoding.nuspec" + ] + }, + "System.Threading/4.3.0": { + "sha512": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "type": "package", + "path": "system.threading/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Threading.dll", + "lib/netstandard1.3/System.Threading.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.dll", + "ref/netcore50/System.Threading.xml", + "ref/netcore50/de/System.Threading.xml", + "ref/netcore50/es/System.Threading.xml", + "ref/netcore50/fr/System.Threading.xml", + "ref/netcore50/it/System.Threading.xml", + "ref/netcore50/ja/System.Threading.xml", + "ref/netcore50/ko/System.Threading.xml", + "ref/netcore50/ru/System.Threading.xml", + "ref/netcore50/zh-hans/System.Threading.xml", + "ref/netcore50/zh-hant/System.Threading.xml", + "ref/netstandard1.0/System.Threading.dll", + "ref/netstandard1.0/System.Threading.xml", + "ref/netstandard1.0/de/System.Threading.xml", + "ref/netstandard1.0/es/System.Threading.xml", + "ref/netstandard1.0/fr/System.Threading.xml", + "ref/netstandard1.0/it/System.Threading.xml", + "ref/netstandard1.0/ja/System.Threading.xml", + "ref/netstandard1.0/ko/System.Threading.xml", + "ref/netstandard1.0/ru/System.Threading.xml", + "ref/netstandard1.0/zh-hans/System.Threading.xml", + "ref/netstandard1.0/zh-hant/System.Threading.xml", + "ref/netstandard1.3/System.Threading.dll", + "ref/netstandard1.3/System.Threading.xml", + "ref/netstandard1.3/de/System.Threading.xml", + "ref/netstandard1.3/es/System.Threading.xml", + "ref/netstandard1.3/fr/System.Threading.xml", + "ref/netstandard1.3/it/System.Threading.xml", + "ref/netstandard1.3/ja/System.Threading.xml", + "ref/netstandard1.3/ko/System.Threading.xml", + "ref/netstandard1.3/ru/System.Threading.xml", + "ref/netstandard1.3/zh-hans/System.Threading.xml", + "ref/netstandard1.3/zh-hant/System.Threading.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "runtimes/aot/lib/netcore50/System.Threading.dll", + "system.threading.4.3.0.nupkg.sha512", + "system.threading.nuspec" + ] + }, + "System.Threading.Tasks/4.3.0": { + "sha512": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "type": "package", + "path": "system.threading.tasks/4.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Threading.Tasks.dll", + "ref/netcore50/System.Threading.Tasks.xml", + "ref/netcore50/de/System.Threading.Tasks.xml", + "ref/netcore50/es/System.Threading.Tasks.xml", + "ref/netcore50/fr/System.Threading.Tasks.xml", + "ref/netcore50/it/System.Threading.Tasks.xml", + "ref/netcore50/ja/System.Threading.Tasks.xml", + "ref/netcore50/ko/System.Threading.Tasks.xml", + "ref/netcore50/ru/System.Threading.Tasks.xml", + "ref/netcore50/zh-hans/System.Threading.Tasks.xml", + "ref/netcore50/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.0/System.Threading.Tasks.dll", + "ref/netstandard1.0/System.Threading.Tasks.xml", + "ref/netstandard1.0/de/System.Threading.Tasks.xml", + "ref/netstandard1.0/es/System.Threading.Tasks.xml", + "ref/netstandard1.0/fr/System.Threading.Tasks.xml", + "ref/netstandard1.0/it/System.Threading.Tasks.xml", + "ref/netstandard1.0/ja/System.Threading.Tasks.xml", + "ref/netstandard1.0/ko/System.Threading.Tasks.xml", + "ref/netstandard1.0/ru/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml", + "ref/netstandard1.3/System.Threading.Tasks.dll", + "ref/netstandard1.3/System.Threading.Tasks.xml", + "ref/netstandard1.3/de/System.Threading.Tasks.xml", + "ref/netstandard1.3/es/System.Threading.Tasks.xml", + "ref/netstandard1.3/fr/System.Threading.Tasks.xml", + "ref/netstandard1.3/it/System.Threading.Tasks.xml", + "ref/netstandard1.3/ja/System.Threading.Tasks.xml", + "ref/netstandard1.3/ko/System.Threading.Tasks.xml", + "ref/netstandard1.3/ru/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.threading.tasks.4.3.0.nupkg.sha512", + "system.threading.tasks.nuspec" + ] } }, "projectFileDependencyGroups": { "net6.0": [ - "BidirectionalDict >= 1.2.0", - "Microsoft.Windows.CsWin32 >= 0.3.49-beta" + "Microsoft.Windows.CsWin32 >= 0.3.49-beta", + "System.Collections.Concurrent >= 4.3.0" ] }, "packageFolders": { @@ -271,7 +1505,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -295,14 +1528,14 @@ "net6.0": { "targetAlias": "net6.0", "dependencies": { - "BidirectionalDict": { - "target": "Package", - "version": "[1.2.0, )" - }, "Microsoft.Windows.CsWin32": { "suppressParent": "All", "target": "Package", "version": "[0.3.49-beta, )" + }, + "System.Collections.Concurrent": { + "target": "Package", + "version": "[4.3.0, )" } }, "imports": [ diff --git a/源代码/StgSharpDebug/obj/x64/Benchmark/net6.0/StgSharpDebug.AssemblyInfo.cs b/源代码/StgSharpDebug/obj/x64/Benchmark/net6.0/StgSharpDebug.AssemblyInfo.cs index 59b97f26..e0efe855 100644 --- a/源代码/StgSharpDebug/obj/x64/Benchmark/net6.0/StgSharpDebug.AssemblyInfo.cs +++ b/源代码/StgSharpDebug/obj/x64/Benchmark/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Benchmark")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b207f16616b7bd967d647a809cc27e7174063451")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs index 038bd533..a7bb5045 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/.NETCoreApp,Version=v6.0.AssemblyAttributes.cs @@ -31,4 +31,6 @@ // using System; using System.Reflection; -[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")] +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute( + ".NETCoreApp,Version=v6.0", + FrameworkDisplayName = ".NET 6.0" )] diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs index 4bc4f976..725658ea 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.AssemblyInfo.cs @@ -1,3 +1,33 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StgSharpDebug.AssemblyInfo.cs" +// Project: StgSharp +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- //------------------------------------------------------------------------------ // // 此代码由工具生成。 @@ -11,13 +41,14 @@ using System; using System.Reflection; -[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] -[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] -[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ee4e4a42f2a6b8609a6fce1d36c8da7f4182da6")] -[assembly: System.Reflection.AssemblyProductAttribute("StgSharpDebug")] -[assembly: System.Reflection.AssemblyTitleAttribute("StgSharpDebug")] -[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyCompanyAttribute( "StgSharpDebug" )] +[assembly: System.Reflection.AssemblyConfigurationAttribute( "Debug" )] +[assembly: System.Reflection.AssemblyFileVersionAttribute( "1.0.0.0" )] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute( + "1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e" )] +[assembly: System.Reflection.AssemblyProductAttribute( "StgSharpDebug" )] +[assembly: System.Reflection.AssemblyTitleAttribute( "StgSharpDebug" )] +[assembly: System.Reflection.AssemblyVersionAttribute( "1.0.0.0" )] // 由 MSBuild WriteCodeFragment 类生成。 diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt index ee592c48..d81ba894 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.csproj.FileListAbsolute.txt @@ -7,11 +7,7 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharp D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.dll D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.pdb D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\bin\x64\Debug\net6.0\StgSharpDebug.xml -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfoInputs.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfo.cs -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.CoreCompileInputs.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.dll D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.exe D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\Shader\awesomeface.png D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\Shader\fbo.frag @@ -23,12 +19,14 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\Shader\particle.vert D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.deps.json D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.runtimeconfig.json -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.dll D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.pdb D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\Output\x64\Debug\net6.0\StgSharpDebug.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.sourcelink.json D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.dll D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.xml D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.pdb D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.genruntimeconfig.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharpDebug.csproj.AssemblyReference.cache -D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpDebug\obj\x64\Debug\net6.0\StgSharp.D6C465D7.Up2Date diff --git a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json index ad6e3f88..b229cf6b 100644 --- a/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json +++ b/源代码/StgSharpDebug/obj/x64/Debug/net6.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/1ee4e4a42f2a6b8609a6fce1d36c8da7f4182da6/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e/*"}} \ No newline at end of file diff --git a/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index cf050289..606ef183 100644 --- a/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/源代码/StgsharpEnvDebug/obj/Debug/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+1ee4e4a42f2a6b8609a6fce1d36c8da7f4182da6")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/源代码/StgsharpEnvDebug/obj/StgsharpEnvDebug.csproj.nuget.dgspec.json b/源代码/StgsharpEnvDebug/obj/StgsharpEnvDebug.csproj.nuget.dgspec.json index 44a22f7b..5a44e468 100644 --- a/源代码/StgsharpEnvDebug/obj/StgsharpEnvDebug.csproj.nuget.dgspec.json +++ b/源代码/StgsharpEnvDebug/obj/StgsharpEnvDebug.csproj.nuget.dgspec.json @@ -26,7 +26,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { @@ -95,7 +94,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/StgsharpEnvDebug/obj/project.assets.json b/源代码/StgsharpEnvDebug/obj/project.assets.json index ebe836fe..fd2fe53c 100644 --- a/源代码/StgsharpEnvDebug/obj/project.assets.json +++ b/源代码/StgsharpEnvDebug/obj/project.assets.json @@ -133,7 +133,6 @@ ], "sources": { "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, - "C:\\Program Files\\dotnet\\library-packs": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/源代码/StgsharpEnvDebug/obj/x64/Benchmark/net6.0/StgsharpEnvDebug.AssemblyInfo.cs b/源代码/StgsharpEnvDebug/obj/x64/Benchmark/net6.0/StgsharpEnvDebug.AssemblyInfo.cs index a602a638..b4bd3cc7 100644 --- a/源代码/StgsharpEnvDebug/obj/x64/Benchmark/net6.0/StgsharpEnvDebug.AssemblyInfo.cs +++ b/源代码/StgsharpEnvDebug/obj/x64/Benchmark/net6.0/StgsharpEnvDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Benchmark")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b207f16616b7bd967d647a809cc27e7174063451")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+0979123ac08c4f5e39b2f34d0d4ccd2d83b92b4e")] [assembly: System.Reflection.AssemblyProductAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyTitleAttribute("StgsharpEnvDebug")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]