From c624a8ca38fb17f15f058e4007e9bb1570161c3c Mon Sep 17 00:00:00 2001 From: Nitload Date: Wed, 18 Jun 2025 05:17:14 +0800 Subject: [PATCH] Daily update on 20250618-051714 by Nitload Youmu. Additional Message : Brief support to collection operation in EXPRESS. A collection type added in core lib and compilestack. Signed-off-by: Nitload --- StgSharp.C/hash.c | 2 +- .../x64/Debug/StgSharp.C.Build.CppClean.log | 52 +- StgSharp.C/x64/Debug/StgSharp.C.ilk | Bin 2045592 -> 2020544 bytes .../Debug/StgSharp.C.tlog/CL.command.1.tlog | Bin 10872 -> 10872 bytes .../x64/Debug/StgSharp.C.tlog/CL.read.1.tlog | Bin 223378 -> 222762 bytes .../x64/Debug/StgSharp.C.tlog/CL.write.1.tlog | Bin 14706 -> 12522 bytes .../Debug/StgSharp.C.tlog/link.read.1.tlog | Bin 8410 -> 8864 bytes StgSharp.C/x64/Debug/StgSharpC.log | 3 + StgSharp.C/x64/Debug/StgSharpC.obj | Bin 137205 -> 137205 bytes StgSharp.C/x64/Debug/dllmain.obj | Bin 32873 -> 32873 bytes StgSharp.C/x64/Debug/hash.cod | 2 +- StgSharp.C/x64/Debug/hash.obj | Bin 35388 -> 35388 bytes StgSharp.C/x64/Debug/intrinsic.obj | Bin 43943 -> 43943 bytes StgSharp.C/x64/Debug/mat2.obj | Bin 40342 -> 40342 bytes StgSharp.C/x64/Debug/mat3.obj | Bin 47303 -> 47303 bytes StgSharp.C/x64/Debug/mat4.obj | Bin 46374 -> 46374 bytes StgSharp.C/x64/Debug/stb_image.obj | Bin 476867 -> 476867 bytes StgSharp.C/x64/Debug/string.obj | Bin 36127 -> 36127 bytes StgSharp.C/x64/Debug/vc143.idb | Bin 347136 -> 347136 bytes StgSharp.C/x64/Debug/vc143.pdb | Bin 241664 -> 241664 bytes StgSharp.C/x64/Debug/vector.obj | Bin 33265 -> 33265 bytes StgSharp.C/x64/Debug/vector_dot.obj | Bin 46694 -> 46694 bytes StgSharp.C/x64/Release/StgSharp.C.dll.recipe | 11 + StgSharp.C/x64/Release/StgSharp.C.iobj | Bin 0 -> 823261 bytes .../Release/StgSharp.C.tlog/CL.command.1.tlog | Bin 0 -> 9882 bytes .../Release/StgSharp.C.tlog/CL.read.1.tlog | Bin 0 -> 222762 bytes .../Release/StgSharp.C.tlog/CL.write.1.tlog | Bin 0 -> 7950 bytes .../x64/Release/StgSharp.C.tlog/Cl.items.tlog | 11 + .../StgSharp.C.tlog/StgSharp.C.lastbuildstate | 2 + .../StgSharp.C.tlog/link.command.1.tlog | Bin 0 -> 4632 bytes .../Release/StgSharp.C.tlog/link.read.1.tlog | Bin 0 -> 8736 bytes .../StgSharp.C.tlog/link.secondary.1.tlog | 4 + .../Release/StgSharp.C.tlog/link.write.1.tlog | Bin 0 -> 2742 bytes StgSharp.C/x64/Release/StgSharpC.log | 4371 +++++++++++++++++ StgSharp.C/x64/Release/StgSharpC.obj | Bin 0 -> 284248 bytes StgSharp.C/x64/Release/dllmain.obj | Bin 0 -> 143903 bytes StgSharp.C/x64/Release/hash.obj | Bin 0 -> 144394 bytes StgSharp.C/x64/Release/intrinsic.obj | Bin 0 -> 151336 bytes StgSharp.C/x64/Release/mat2.obj | Bin 0 -> 149248 bytes StgSharp.C/x64/Release/mat3.obj | Bin 0 -> 154251 bytes StgSharp.C/x64/Release/mat4.obj | Bin 0 -> 153504 bytes StgSharp.C/x64/Release/stb_image.obj | Bin 0 -> 464217 bytes StgSharp.C/x64/Release/string.obj | Bin 0 -> 146298 bytes StgSharp.C/x64/Release/vc143.pdb | Bin 0 -> 241664 bytes StgSharp.C/x64/Release/vector.obj | Bin 0 -> 144958 bytes StgSharp.C/x64/Release/vector_dot.obj | Bin 0 -> 156384 bytes .../Collections/BidirectionalDictionary.cs | 33 +- .../Collections/CapacityFixedList.cs | 45 +- .../Collections/IBidrirectionalDictionary.cs | 53 +- .../Collections/IHashMultiplexer.cs | 6 +- StgSharp.Common/Collections/ListSegment.cs | 28 +- .../Collections/PartialDictionary.cs | 44 +- .../Collections/PartialDictionaryValues.cs | 9 +- .../Collections/RandomAccessibleStack.cs | 185 + .../Collections/StringHashMultiplexer.cs | 16 +- .../Controlling/Controls/BattleField.cs | 12 +- .../Controlling/Controls/ButtonGroup.cs | 12 +- .../Controls/CharacterIndexImage.cs | 15 +- .../Controlling/Controls/ControllingIntem.cs | 22 +- .../Controlling/Controls/DecorationBox.cs | 12 +- .../Controlling/Controls/MarkingLable.cs | 12 +- .../Controlling/Controls/TriggerButton.cs | 78 +- StgSharp.Common/Controlling/KeyEnum.cs | 6 +- .../Controlling/UsrActivity/IClickTrigger.cs | 10 +- .../UsrActivity/JoystickTrigger.cs | 8 +- .../Controlling/UsrActivity/KeyTrigger.cs | 3 +- .../Controlling/UsrActivity/TriggetFactory.cs | 25 +- StgSharp.Common/Data/GlobalData/root.cs | 2 +- StgSharp.Common/Data/SSD/Area.cs | 6 +- StgSharp.Common/Data/SSD/DataHead.cs | 3 +- StgSharp.Common/Data/SSD/DataSegment.cs | 43 +- StgSharp.Common/Data/SSD/SSD.cs | 3 +- StgSharp.Common/Data/SSD/SSDraw.cs | 12 +- StgSharp.Common/Data/Serialize/Define.cs | 2 +- .../Data/Serialize/ISSDSerializable.cs | 11 +- StgSharp.Common/Data/ValueBox.cs | 25 +- StgSharp.Common/Entities/Enemy.cs | 19 +- StgSharp.Common/Entities/IEntity.cs | 35 +- StgSharp.Common/Environment/Dialogue.cs | 96 +- StgSharp.Common/Environment/GlobalSetting.cs | 6 +- StgSharp.Common/Environment/Monitors.cs | 8 +- StgSharp.Common/Environment/Platform.cs | 57 +- StgSharp.Common/Environment/globalKeyStat.cs | 2 +- .../Coordination/PlainCoordinate.cs | 12 +- .../Coordination/SpaceCoordinate.cs | 10 +- StgSharp.Common/Geometries/GemoryException.cs | 14 +- .../GeometryOperation/GeometryOperation.cs | 35 +- StgSharp.Common/Geometries/IGeometry.cs | 27 +- StgSharp.Common/Geometries/IInstancing.cs | 58 +- .../Geometries/IInstancingBuffer.cs | 30 +- .../Geometries/PlainGeometry/Cordinate.cs | 11 +- .../PlainGeometry/Define/IPlainEntity.cs | 6 +- .../PlainGeometry/Define/ParticleOnPlain.cs | 24 +- .../PlainGeometry/Define/PlainGeometry.cs | 7 +- .../Define/PlainInstancingBuffer.cs | 29 +- .../Geometries/PlainGeometry/Parallelogram.cs | 41 +- .../Geometries/PlainGeometry/Polygon4.cs | 53 +- .../Geometries/PlainGeometry/Polygon5.cs | 43 +- .../Geometries/PlainGeometry/Polygon6.cs | 17 +- .../Geometries/PlainGeometry/Rectangle.cs | 44 +- .../Geometries/PlainGeometry/Square.cs | 18 +- .../Geometries/PlainGeometry/Triangle.cs | 31 +- StgSharp.Common/Geometries/Point.cs | 2 +- .../SpaceGeometry/TriangulatedSurface.cs | 145 + StgSharp.Common/Global.cs | 102 +- .../Graphics/CPUanimation/ImageHelper.cs | 9 +- .../Graphics/Define/BufferObjectBase.cs | 18 +- StgSharp.Common/Graphics/Image.cs | 44 +- .../Graphics/OpenGL/Buffer/AutoTexture.cs | 51 +- StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs | 26 +- StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs | 24 +- StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs | 10 +- .../Graphics/OpenGL/Buffer/TextureGL.cs | 79 +- StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs | 17 +- StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs | 120 +- .../OpenGL/ShaderEdit/IglConvertable.cs | 8 +- .../Graphics/OpenGL/ShaderEdit/Shader.cs | 17 +- .../Graphics/OpenGL/ShaderEdit/Uniform.cs | 60 +- .../Graphics/OpenGL/glApiManager.cs | 2667 ++++++---- StgSharp.Common/Graphics/OpenGL/glClampf.cs | 6 +- StgSharp.Common/Graphics/OpenGL/glConst.cs | 3 +- StgSharp.Common/Graphics/OpenGL/glContext.cs | 57 +- StgSharp.Common/Graphics/OpenGL/glEnum.cs | 32 +- .../Graphics/OpenGL/glException.cs | 19 +- .../OpenGL/glFucntionSourceManager.cs | 19 +- StgSharp.Common/Graphics/OpenGL/glFunction.cs | 58 +- StgSharp.Common/Graphics/OpenGL/glHalfNV.cs | 18 +- StgSharp.Common/Graphics/OpenGL/glHandle.cs | 21 +- .../Graphics/OpenGL/glRenderObjectGenrator.cs | 42 +- .../Graphics/OpenGL/glRenderStream.cs | 56 +- StgSharp.Common/Graphics/OpenGL/glType.cs | 94 +- StgSharp.Common/Graphics/Pixels.cs | 29 +- StgSharp.Common/Graphics/PlainGeometryMesh.cs | 9 +- StgSharp.Common/Graphics/RenderStream.cs | 96 +- .../Graphics/ShaderEdit/ShaderGenerator.cs | 44 +- .../Graphics/ShaderEdit/ShaderStruct.cs | 9 +- StgSharp.Common/Graphics/TexturePipeline.cs | 1 - StgSharp.Common/Graphics/TextureProvider.cs | 6 +- StgSharp.Common/Graphics/framework.cs | 83 +- .../Graphics/frameworkSyncContext.cs | 9 +- StgSharp.Common/HighPerformance/Lable.cs | 3 +- StgSharp.Common/HighPerformance/M128.cs | 6 +- StgSharp.Common/HighPerformance/M64.cs | 1 - .../HighPerformance/UnsafeCompute.cs | 13 +- StgSharp.Common/Internal/ClangLoad/gl.cs | 25 +- StgSharp.Common/Internal/InternalIO.cs | 39 +- .../Internal/Intrinsic/ColumnSet2.cs | 3 +- .../Internal/Intrinsic/ColumnSet3.cs | 5 +- .../Internal/Intrinsic/ColumnSet4.cs | 13 +- .../Internal/Intrinsic/IntrinsicContext.cs | 1 - .../Intrinsic/intrinsicContextProvider.cs | 9 +- StgSharp.Common/Internal/StructDefine.cs | 33 +- StgSharp.Common/Internal/glfw.cs | 439 +- StgSharp.Common/MVVM/View/ViewBase.cs | 73 +- StgSharp.Common/MVVM/View/ViewDesigner.cs | 43 +- StgSharp.Common/MVVM/View/ViewRender.cs | 28 +- StgSharp.Common/MVVM/View/ViewResponder.cs | 52 +- StgSharp.Common/MVVM/ViewModel/DataBinding.cs | 39 +- .../MVVM/ViewModel/ShowViewPort.cs | 39 +- StgSharp.Common/MVVM/ViewModel/ViewManage.cs | 6 +- StgSharp.Common/MVVM/ViewModel/ViewModel.cs | 99 +- StgSharp.Common/MVVM/ViewPort.cs | 57 +- StgSharp.Common/Math/Graphic/Camera.cs | 66 +- StgSharp.Common/Math/HighPrecision/Vec2HP.cs | 67 + StgSharp.Common/Math/HighPrecision/Vec3HP.cs | 86 + StgSharp.Common/Math/HighPrecision/Vec4HP.cs | 70 + StgSharp.Common/Math/Linear/IVector.cs | 22 +- StgSharp.Common/Math/Linear/Matrix22.cs | 23 +- StgSharp.Common/Math/Linear/Matrix23.cs | 40 +- StgSharp.Common/Math/Linear/Matrix24.cs | 2 +- StgSharp.Common/Math/Linear/Matrix32.cs | 33 +- StgSharp.Common/Math/Linear/Matrix33.cs | 41 +- StgSharp.Common/Math/Linear/Matrix34.cs | 52 +- StgSharp.Common/Math/Linear/Matrix42.cs | 45 +- StgSharp.Common/Math/Linear/Matrix43.cs | 55 +- StgSharp.Common/Math/Linear/Matrix44.cs | 85 +- StgSharp.Common/Math/Linear/Vec2.cs | 4 +- StgSharp.Common/Math/Linear/Vec3.cs | 10 +- StgSharp.Common/Math/Linear/Vector.Cross.cs | 2 +- .../Math/Linear/Vector.GetAngle.cs | 3 +- .../Math/Linear/Vector.Normalize.cs | 13 +- .../Math/Linear/Vector.Orthogonalize.cs | 35 +- StgSharp.Common/Math/Scalar/ASin.cs | 14 +- StgSharp.Common/Math/Scalar/BasicOps.cs | 3 +- StgSharp.Common/Math/Scalar/Compare.cs | 6 +- StgSharp.Common/Math/Scalar/Ctor.cs | 13 +- StgSharp.Common/Math/Scalar/Exp.cs | 19 +- StgSharp.Common/Math/Scalar/Log.cs | 6 +- StgSharp.Common/Math/Scalar/Pow.cs | 23 +- StgSharp.Common/Math/Scalar/Random.cs | 28 +- StgSharp.Common/Math/Scalar/Sqrt.cs | 9 +- StgSharp.Common/Math/Scalar/Tan.cs | 4 +- .../PipeLine/CrossFramePipelineNode.cs | 10 +- .../PipeLine/IConvertableToPipelineNode.cs | 20 +- StgSharp.Common/PipeLine/PipeLineRunner.cs | 162 +- StgSharp.Common/PipeLine/PipelineMarshal.cs | 118 + StgSharp.Common/PipeLine/PipelineNodeLabel.cs | 77 + StgSharp.Common/PipeLine/PipelineNodePort.cs | 175 +- StgSharp.Common/PipeLine/PipelineScheduler.cs | 241 +- StgSharp.Common/PipeLine/PortArgs.cs | 10 +- StgSharp.Common/PipeLine/SideNode.cs | 20 +- .../PlainGeometryCollisionSensor.cs | 24 +- StgSharp.Common/Stg/Bullet.cs | 47 +- StgSharp.Common/Stg/CollisionTexture.cs | 64 +- .../Stg/Touhou/View/OpenningView.cs | 5 +- StgSharp.Common/StgSharp.Common.csproj | 2 +- StgSharp.Common/Threading/CancellableTask.cs | 76 +- StgSharp.Common/Threading/EmptyThread.cs | 7 +- StgSharp.Common/Timing/TimeFunction.cs | 34 +- StgSharp.Common/Timing/TimeProvider.cs | 44 +- StgSharp.Common/Timing/TimeSourceProvider.cs | 27 +- .../Timing/TimeSpanAwaitingToken.cs | 27 +- StgSharp.Common/Timing/TimeSpanProvider.cs | 109 +- .../Release/net8.0/StgSharp.Common.deps.json | 43 + .../net8.0/StgSharp.Common.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Common.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Common.sourcelink.json | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/StgSharp.Common.AssemblyInfo.cs | 24 + ...tgSharp.Common.csproj.FileListAbsolute.txt | 11 + .../STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs | 68 + .../STEP/Items/StepBSplineSurface.cs | 185 + .../STEP/Items/StepBoundedSurface.cs | 54 + .../STEP/Items/StepBoundedSurfaceCurve.cs | 59 + .../STEP/Items/StepPcurveOrSurface.cs | 52 + StgSharp.Model/STEP/Items/StepSurfaceCurve.cs | 54 + StgSharp.Model/STEP/StepEntityLabel.cs | 61 + .../STEP/StepEntityUnsupportedException.cs | 40 + .../STEP/StepUncertainEntity.Parse.cs | 83 + StgSharp.Model/STEP/StepUncertainEntity.cs | 238 + StgSharp.Model/STEP/StepUnsupportedEntity.cs | 57 + StgSharp.Model/StgSharp.Model.csproj | 1 + .../Release/net8.0/StgSharp.Model.deps.json | 244 + .../net8.0/StgSharp.Model.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Model.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Model.sourcelink.json | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/StgSharp.Model.AssemblyInfo.cs | 23 + ...StgSharp.Model.csproj.FileListAbsolute.txt | 18 + .../net8.0/StgSharp.Model.sourcelink.json | 1 + StgSharp.Script/Common/CodeLineHelper.cs | 11 +- StgSharp.Script/Common/CompileStack.cs | 58 +- .../Common/IScriptSourceProvider.cs | 20 +- StgSharp.Script/Common/ITypeSource.cs | 3 +- .../Common/ScriptSourceTransmitter.cs | 26 +- StgSharp.Script/Express/Builtin/ExpLogic.cs | 23 +- .../ExpAstNode/ExpBinaryOperatorNode.cs | 16 +- .../Express/ExpAstNode/ExpEnumLiteralNode.cs | 68 + .../Express/ExpAstNode/ExpLiteralNode.cs | 15 +- .../ExpAstNode/ExpRangeAndIndexNode.cs | 61 + .../Express/ExpAstNode/ExpRepeatNode.cs | 6 +- .../Express/ExpAstNode/ExpTupleNode.cs | 4 +- .../Express/ExpAstNode/_ExpNode.cs | 7 +- StgSharp.Script/Express/ExpNodeFlag.cs | 27 + .../Express/ExpNodeTempEnumerator.cs | 200 + StgSharp.Script/Express/ExpPostProcessor.cs | 63 +- StgSharp.Script/Express/ExpSchemaSource.cs | 135 +- StgSharp.Script/Express/ExpSource.cs | 31 +- .../Express/ExpSyntaxAnalyzer.CaseOf.cs | 6 +- .../Express/ExpSyntaxAnalyzer.Common.cs | 6 +- .../Express/ExpSyntaxAnalyzer.If.cs | 2 +- .../ExpSyntaxAnalyzer.RangeAndIndex.cs | 123 + .../Express/ExpSyntaxAnalyzer.RepeatLoop.cs | 19 +- .../ExpSyntaxAnalyzer.ReverseAnalysing.cs | 94 + StgSharp.Script/Express/ExpSyntaxAnalyzer.cs | 4 +- StgSharp.Script/Express/ExpTokenReader.cs | 32 +- .../Express/IExpConvertableFrom.cs | 303 ++ .../Release/net8.0/StgSharp.Script.deps.json | 227 + .../net8.0/StgSharp.Script.AssemblyInfo.cs | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 2 +- .../net8.0/StgSharp.Script.AssemblyInfo.cs | 2 +- .../net8.0/StgSharp.Script.sourcelink.json | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/StgSharp.Script.AssemblyInfo.cs | 23 + ...tgSharp.Script.csproj.FileListAbsolute.txt | 16 + .../net8.0/StgSharp.Script.sourcelink.json | 1 + ...gSharp.TerminalDialogue.runtimeconfig.json | 1 + .../StgSharp.TerminalDialogue.AssemblyInfo.cs | 2 +- .../StgSharp.TerminalDialogue.AssemblyInfo.cs | 2 +- ...rminalDialogue.csproj.FileListAbsolute.txt | 21 + .../StgSharp.TerminalDialogue.sourcelink.json | 1 + StgSharpDebug/ExpLinearExpressionTest.cs | 1 - StgSharpDebug/Program.cs | 17 +- StgSharpDebug/RenderStream/Partical.cs | 120 +- StgSharpDebug/SimdDemo.cs | 15 + StgSharpDebug/StepReadingTest.cs | 17 +- StgSharpDebug/TestFileRead.cs | 3 +- StgSharpDebug/TestRender.cs | 6 +- StgSharpDebug/View/Control.cs | 4 +- StgSharpDebug/View/Design.cs | 15 +- StgSharpDebug/View/NewRender.cs | 6 +- StgSharpDebug/View/ViewMain.cs | 14 +- StgSharpDebug/ViewModelMain.cs | 7 +- .../net8.0/StgSharpDebug.AssemblyInfo.cs | 2 +- .../net8.0/StgSharpDebug.sourcelink.json | 2 +- ...CoreApp,Version=v8.0.AssemblyAttributes.cs | 4 + .../net8.0/StgSharpDebug.AssemblyInfo.cs | 23 + .../net8.0/StgSharpDebug.GlobalUsings.g.cs | 8 + StgSharpDevelop.sln | 14 - ...gSharp.TerminalDialogue.runtimeconfig.json | 1 + 300 files changed, 12227 insertions(+), 4303 deletions(-) create mode 100644 StgSharp.C/x64/Release/StgSharp.C.dll.recipe create mode 100644 StgSharp.C/x64/Release/StgSharp.C.iobj create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/CL.read.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/link.secondary.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharp.C.tlog/link.write.1.tlog create mode 100644 StgSharp.C/x64/Release/StgSharpC.log create mode 100644 StgSharp.C/x64/Release/StgSharpC.obj create mode 100644 StgSharp.C/x64/Release/dllmain.obj create mode 100644 StgSharp.C/x64/Release/hash.obj create mode 100644 StgSharp.C/x64/Release/intrinsic.obj create mode 100644 StgSharp.C/x64/Release/mat2.obj create mode 100644 StgSharp.C/x64/Release/mat3.obj create mode 100644 StgSharp.C/x64/Release/mat4.obj create mode 100644 StgSharp.C/x64/Release/stb_image.obj create mode 100644 StgSharp.C/x64/Release/string.obj create mode 100644 StgSharp.C/x64/Release/vc143.pdb create mode 100644 StgSharp.C/x64/Release/vector.obj create mode 100644 StgSharp.C/x64/Release/vector_dot.obj create mode 100644 StgSharp.Common/Collections/RandomAccessibleStack.cs create mode 100644 StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs create mode 100644 StgSharp.Common/Math/HighPrecision/Vec2HP.cs create mode 100644 StgSharp.Common/Math/HighPrecision/Vec3HP.cs create mode 100644 StgSharp.Common/Math/HighPrecision/Vec4HP.cs create mode 100644 StgSharp.Common/PipeLine/PipelineMarshal.cs create mode 100644 StgSharp.Common/PipeLine/PipelineNodeLabel.cs create mode 100644 StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json create mode 100644 StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs create mode 100644 StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt create mode 100644 StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs create mode 100644 StgSharp.Model/STEP/Items/StepBSplineSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepBoundedSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs create mode 100644 StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs create mode 100644 StgSharp.Model/STEP/Items/StepSurfaceCurve.cs create mode 100644 StgSharp.Model/STEP/StepEntityLabel.cs create mode 100644 StgSharp.Model/STEP/StepEntityUnsupportedException.cs create mode 100644 StgSharp.Model/STEP/StepUncertainEntity.Parse.cs create mode 100644 StgSharp.Model/STEP/StepUncertainEntity.cs create mode 100644 StgSharp.Model/STEP/StepUnsupportedEntity.cs create mode 100644 StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json create mode 100644 StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs create mode 100644 StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt create mode 100644 StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json create mode 100644 StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs create mode 100644 StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs create mode 100644 StgSharp.Script/Express/ExpNodeTempEnumerator.cs create mode 100644 StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs create mode 100644 StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs create mode 100644 StgSharp.Script/Express/IExpConvertableFrom.cs create mode 100644 StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json create mode 100644 StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs create mode 100644 StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt create mode 100644 StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json create mode 100644 StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt create mode 100644 StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json create mode 100644 StgSharpDebug/SimdDemo.cs create mode 100644 StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs create mode 100644 StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs create mode 100644 StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs diff --git a/StgSharp.C/hash.c b/StgSharp.C/hash.c index a4256a4d..c9ab3b06 100644 --- a/StgSharp.C/hash.c +++ b/StgSharp.C/hash.c @@ -15,7 +15,7 @@ INTERNAL int SSCDECL city_hash_simplify_sse(byte const *str, int const length) for (; ptr < end; ptr += 4) { hash = _mm_crc32_u32(hash, *(uint32_t *)ptr); } - for (; ptr < end; ptr++) { + for (; ptr < end; ptr++) { hash = _mm_crc32_u16(hash, *ptr); } } else { diff --git a/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log index b7b69115..de590052 100644 --- a/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log +++ b/StgSharp.C/x64/Debug/StgSharp.C.Build.CppClean.log @@ -1,30 +1,25 @@ -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.bsc -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.pdb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.idb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.sbr -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.obj -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.cod +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.bsc d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stb_image.cod d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat2.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\hash.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\string.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat4.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharpc.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vector.cod d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\mat3.cod @@ -34,18 +29,23 @@ d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\st d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.sbr d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.obj d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\dllmain.cod -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.dll -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.pdb -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.lib -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\build\stgsharp.c.exp +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.sbr +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.obj +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\intrinsic.cod +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.pdb +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.dll +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.pdb +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.lib +c:\users\youmu\onedrive - msft\大学\毕业设计\graduationproject\build\stgsharp.c.exp d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.ilk +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\vc143.idb d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.read.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\bscmake.write.1.tlog +d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.12408.write.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.items.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.read.1.tlog -d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\cl.write.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.command.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.read.1.tlog d:\nitloadindustry\研究项目\1-flagship\th2020\projectfile\内核源代码\stgsharp.c\x64\debug\stgsharp.c.tlog\link.secondary.1.tlog diff --git a/StgSharp.C/x64/Debug/StgSharp.C.ilk b/StgSharp.C/x64/Debug/StgSharp.C.ilk index aee14176fd3187e765f7f785fc160f2ee397a419..59ae81620cc8ed6ddc57e8c203652aab8a8a0183 100644 GIT binary patch delta 56728 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≧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 delta 64050 zcmcGXd3+PaANME6#uj>{^h(=M0#BAn>co5frc})GE*^ z0yQ3Bk;AIkpaKRtEC{74V3EV9fZz`>C=`&x=QBIA*_3vl=l9POU*mV!otgK1k2!WW zZN2MXEV?+mAT7Rq{P)9WZ9T3d86gB8*SJOXiT!xw#}9|b?p$q`i~9EGe>! z{=VOq4U0T%>fNOxBzyI;w&u=JMpi|9(w=+o{dx5AIz#lbJaYqMM&%IQvSRal`oFV3 z?GyEi-hd1It}i;(kftB=X>`ob1;&)$uFYHaORu({rmWpq5L)_G@%!_1gqS?XI_cWk z!K5W2HC>i%W^UQyKXOQ@M>6Lcj z-}IC%G|BViGrFgBtaQU1i5GUcw#udLHZEN|_l=73T%4?XnU}K~csaXY-1l)wGWL#& zq9|wed^}ZYbQ;65&of`jjk+9M+FN{!Mte9#qtx+vLTKzQFYo4cE?tu<0^QV27cElr zOkGHv?cbepQTN5|yxEydGp^D4=S0!udqhvkPN9)g$bprC(nDv8(ruP1);cY$H9~Z? z@pm$V>p_TZ2bi9VvvkkN_DH@h>bVB;@}w7+-tg)G<(*umPj4%flY(-TOZ&^;2TBik zLFv;q1?m?j*>zp+i}(H;HTpyf?x0U+UerA!_lc$+jth;w?crtq;nL+|lH2HwIUrE) zthjouI3aWSHeR^<7qawb3a2U^xQ5D}HuH4<(S@Ea^F95|(}aA2ux~}38Bu2HHpPZY z-;c(qqH{+`O-$~{hY*>bCsE&h(R|FSMo7ZU#WoJoydweR=X7wDSTGi3de z?Rh3&H&|yV+L2Aad|fx*;6>)%0^LQ~t`=?z>l|C&u-enYoL_W&DB37&3m>TEhI z8=-;#p+wI(!eDgPGTmFcNE)?V_mS>ix^p>(Vmq3!LiaGl#1*;^*u6qrjHD9_QRD%d zKy}NEOd(oIbs44sQ?p?o&mF4kThk_kSLz1Kvkfg?scXq=99XIAX|1Vy6VbDA(gCJ> z)3<_kr>>WE7LQ|S;Y%o)w>O)vVwv(i+0?KNnT-9}^cj{3`8J#Wz%u3E zW_!AC*KINy@(yIv|L$b>%CkL>eyy8nG&rtj({K0UlKb~;Pls=G59&2d#QH=F_vyOn zp7eaTPq#}ihsnKj2nnI>PKUQDoT3Y*+Yg3Ens}Ue&K}TptZ9e)Di9m)*V&v#XI1E0 z2DR|rN?j7|S=`V>lZzYHlPz&~XxM~#Vx)u2Jk=Go&68TG>lUM_fn06TX)EZqhO}(jW zu3JDy-qbY;bsg_553gK0|EBISL-Qlq^!QC(wju8bynah}U%0__Ih&3R)sHv0Fe1JU z)jy$WAGvG&>*HgxVNMRp(HcbC2UAR&gjfF*`dExrTy6N=8 zaJ{pBgGxRZK+^jn^q32BWt)w;l#oaZBJ|v5ylus1Cb}Otth_3-6q^a!3zMC`=aB5~ z2z}5@Add!`YSxE^vtrILZUx`6#v$?4Usc~soo0Q85yOJe`73qt=w<{BeMo9l7^NRA zPe)3Xg5|yBA~DnzrC$>n)R=n5-ax-vqmq4Q10yv?>x(q*dq0me(%stkT`}5C$7JJ;GrXf<&dJGbvEh|G(7COj2s5S_3spll}*$*~)8%8r6zU>;F)(QdESR4Fky3 zhW|s&f`&?Goymck{{N+BX0lQE5S|32!5P`v22k zsWzoic{bvnF0koa-#s=X;;HLJjEB=UeOirH(+U-!e7|qwyY2@%v@BO=_LMf(XVf?3 z?aQV&TkAU+&UvvKw$ZmSl$T?sYa_0#Vpq;#I{dbco@!2cY-*u%+v*dQ$t;%o@^m4z zye(!AG#r>cBZBCo0p&i;ZKuzozN?ajo@=L1;TsZjdwqs!Y{W#i#T(OJKPk|m80u@U|GLH| zZ&L^TAn6l%Ucb{pFLpGoJL>P=(aaQ2U!y;%WOMkUj7@|qO*-Qdz1dR`DvhqkE$fe#GEChcWE%_GGe!zp zIDIh^TR8QxlB-^HKHHj_7f0vQC9%>VlXHo@PdXJV3Hye{Nj*GTHLNPLl0>ZnU$!Ans_dc`8~ z^{)2)%Gu#Yx+OvLzB5tcOKI(@jyEEVv}2NHRmU3KzoLB~DgkZPtY7+~&PZo8yz72o zYN4sg5})gouGLu8jC6UjbX}gc>bx)SA490Okz}X7WGO@A89YZ7SG-dN&`aGjNScM6+Gy~5V@k;B@jR&_MFt3Ne(iY84I zP2BeeptgJehnlW?m70!}KuzEOQq!KI)XeM=sOe6*i>X@AS1p+f@00jKqu2oft}Hae z?z_vdH5VGsmiwd&^$i#S^u2Zx9)do|ruEw+<0#3d&#{beJ@(TqV?(A-2X<>iHr>E7 z?hmtRbVpX^lWh88M+pnjJK6Npj?y8`DS{1BTHHyRM7ak8jw#v`!@-q5ov^7RNv>(@PrSnHf&8WYN zWLKF+U)O#?OI%KxJRQB7COI1gJ=0@aQqD9AP@au}jx?dG)Wwv_pYtzO#3oW_SBdZK z)BX9pNc$)HF)-9tp8a__E4?Auc+HfaV9GZekkSDIvW{jG$HtDlr2KY#9@M#x^- z>s9?Ei+K8`)%}7Onxg))XTRt#xoSM2^?Ohn*wrR`5&agQ5+$R^4DJN>&vA<)nUm`8PSEhJWn?q!f8y=;~L?weD5AR9ZejGKVq0GVkD6qNaae zlzpbuRbA^1i8s=X4@oQ86P$8eohamKcJe^s1Lb}VmmBGUfztK6yQa(}GuG)^Q_El} ztOmcP6Y1e~x{e;#VCg4qPcoCxS;OGTl3#@d<$trOfn8@CJ|?Sz z%h5K&rF;2-F3ToS=Ww>@un(PsTMgwb{ueTW+c|3-mvXCg`*7)5zB@@Bf!&FEv=`K| z!pEeV+rER3Ndrx0akiJG>`Mk^VP8`7BuhQTJIO*|T~>_{U?*ABH&U`0TxW4?^|+KB z#{4XsV3ax^@$u{_eOyY_g?rEO0vXewg?tQBI9jrY6EOx$s~wntbG>E^Lgdx=}-%vgzX%ecnDGI2N9p{J)}oHVTFVOE<7Fa{YfZ-VDe zP>iv0g4F*mW3&^V*mln;W{ilZYZxOnM@lm|&f!EeN4nptIRnU5%N9tF=-E*|^*5{+ za-Z*layHJ-f9+!pqvf{%itDeiBi$aaNUQic_5$Vlm;6N9wN;!<+thR8gvAoo(aMeq zVJ%r{ua2J@yBq@Xx3MPTP8mCLj#w-umc1suYKX35*`RCkrS1`4+WIJal|gn4Vn=9a z^QB>T*$F3!@@Mpc)67mIUYDkirK#t!P-Y%VGIQ^E&io~HH<}zKcKS@4UXyOsN$hl8 zN)I2=8)eYqu>q{?-0QV~!v)a((s>5FbY0T-T;>=ULR}>hpt3 z#aoxv9nPY?S9&^3NcVVpIzm4D#pE{1*16Ox^h%wKtGz?h!^uNGurAvwWb5?o6MA=- z9~WJ&ZYx`7bDz-Fed}y4I}gn{)8!s#%p1abye_X+bN7hmil2}z5VtsV*gbVNH>Uv2 zz0VCwxF&lGYBi_KmmO!FVFvB|M(C1=I-5K4Hk$M9|6cabwZW`+$?jUsO%T0HeM4?8 z-yIs(yUyk|{fg%1bK8~X$+oNhwN`WeM00a{$jwdoE%ZS5I-Bd)s9yI7yN$Q!E0^2L zZ&Xjq7k^y%m1%pYQN0vro$YlhsFxmo^?(+R=x%_SQW}E74uHi0O+i&IWxwy6ycGYTcgy>$&p0c(_ zchy_av(EOW=V?&gT_yUn*qwD-l!a(l^< z;RnXm+1~Bv!qdZZ_!Q>9BRAK7My=-LZy%t^7beNgmCXqMOJb{Wo6gDzXvJ1TtOKQ7 zk}H?^J6F*U`|>}rAfJ38e0$vs<)*pl#?eeZG0%P!(o;P*JWO|2>@^V0nH&*EP$bzE z9#&st zG?0Jnkc-@LhcB-ix%NFEH&n>8k?$oIl%7lP)kfYckY6O%W5~F*;qN!lK)#tE7dh(D zLeBXD$k}Xp#!=r~wpM!feo-4Kj!j9^oc0WP>C5oRS}$ggJ}noSwIh63-CCaX0=b_X zwvrpR>CW0nWldOAeh)(q`8qsBYtNkgja($ZTuaMN-vW7^FB{kA$Xd?*7RY;RJ|!rl z=BIBYAh8$u7SBEWsMmWS{2{|#Mm7mQ@Zz4PmEnWx)_CFf!2iSXA>7Cn-`Cby!JB?! zcu(~Y;ghwHqR8AI!&ldhZ1WQ)B=0xts3iKvPvMvE8or8icj)37xA-`Q z#9gW?Urd*FNQK?&rT5w z%o@n4xpI+H{UVHYuM<}@fSk{^J7{n>+oyPX4ycWMOa>D2lQEJZCp;7pmZpJx^P0R) z9hRq}8w<>45SSG#A*WYhX*c~$7V zIAWt#^zA+=7rFC#M0(xE7`zO~qa5kx$iii{k;;)o%a`tF#@MkuVusej@s>+2GGui` zSl!4eZv%OZBMUgP?Csh}`78-Ou;$BC^eK15EiEm_Es={(HDPqvwv#T=8nRt;Qe?_F!ZSRFw8M76iVKVu!uDDv8smw65 z4wxCUx;o-SyoT~kzmbbviijLn_plxx9oZv{yV%8Dyg53umbuw!Bm0CL2xr8jF_Gg! zHHc)tTx3LYPhpsx|fGDKLdZ2<10D7t*^Gm3chuzyfYi| zi+Qvbk{6*Br_C?Ok7B1qY?2G&tH!s)qu2<3fT`Rj`oHifHs_3agM2osKElQE@-DZi zHw)#&VH>M!kNX?-vVRx#sIxlE$lt>MBPv|xAQ!0#^mfJfZaqEDo0sV6qLug#Y1Mzt zuZlsK@haaKv*n!7nHTW-i>$#^FMk=G+V6`pd#Wy&&q)#GvdwTTD@$7Om${qC+m%I- zC*p5&iq3#`XqyoYT6r8-%pdCYDZhEbu9?>um#ue4(ycc&fWvPw;0HBMoRsk&K zz|Hz71xPRHqprxj?L*>Pd!md{>t)_HQ`8zg9S{-~NpnJ@>ef)I7X{$Pn!ucTQ2>?* zpqm57m{nl0Spa1Py-`tI!O1aEgM~@U<1~Qd;~DVX0MOehCd#ufKI(TVqDTM>IB-Wp z6?mti03N&?-`dl-kbimw(bAsT(jjGkw-p5oCniOC&JSid-z;uVuPo`QM^#+%uwa~hxWHX_OxAC8 zL?m@Su7L|5#q?XC=;v{al6@ywF3y_pq{>?NWH77zDbAvUUT>JUD)rRtAZpoMVb+ZY`Fthq*3Kz}%9j=B@He8mM>wtykcXUK9^Ibe zH=<(hK21|5_a^;5Wy^fUn^FHY@EN+iP^0PbG%7tjo^4hzn0d>aY3-Kf=^Qh9`h#-I zr;4Kb2(P5B(rEeMDs}51Rivy$w%?CN}^87E5w>dG07}mFD99e8>2qc(-wY2%Z<%Z z^Xud-{Rq5E3eV&Fhy{yNwg=ubaJ!uSOhq*tsCIQ5 zP(LXsK7VFym*-Ex%i_EtyHsBOF2R%6BIj-~5Uk&@fgtnT`!sl+_Jj9xO*7E z49?51RCyJZg15=ppta}Y?}UD%4+nU@qZ+)KKZ19y8#%YOgtP9FuUxvZn z{7*L6k9~nPBJZ*WwBcWX{;fbg&c9f^*aXkQd9$voyt3=TyrLU|H=6NsZZY1-c~G+a zjs`FLU(9B%+X|4DPK1^_|7BX51vP|I%cKT@0Z}bA;87|^O_iyEyn~@(j9L=f0MzyM z8bs2Num*LH!Zl$H*wUmdg&u!c1E@&^@cL{vZP4llDzI~OFwhdifu7xQ4U}QwOweFS zi4D??rxX+)7CDIx5H^09gRiA<-WZ$8E4B%qyp5UPxB=f2woYk)Ve$DKShTdM2CrW; z@U908%9o>NjOP=)D$Xlzqw-F*3D(csR_HgmT?4Bwa9+rM_(SrPv~SQ=M@O!Qef=FY z`mnGgvu}P)rO$O_ov0L@DCeCx)lKb0a`&K4l%>Iib%VEY44c5sau7eCoFpgwl8ag%_gK?Aws^Ms+R%eApF&d*h^GCys;euDhd9$8U zd1X%pt5!6Yt47mTun{?dL0gyrEzi+_W>18EhXSU=fP{Vpf|tj6WzVX->Su+1m{GZY zOA6R9e6B$YY)G9z`DSXMX3k>zZB$rd%RP&QiAw-;Ij~~33XGT|6qHxP%X7roSnXoI zla~zJ%NoGXUIx(nc}<{Y0RuV(Foy#pUR8lZUKK#T$A3)#Pb_7Dd47IqBuy*O03Ix0 z8ZHX}Z9Sr+Jni0Sz_z3Un8krjsS2DxgI$6*R@2k9Z?+5ep)(YM>#>*;Uykj}wZT(P#H+Tax>qiQYVy7SF`FI1< zl89Z6|2BV>{;^6u`*AR}{1ZW){YJwSTJ%|iJa!Bb=3W0t;M+s&2hd_@>G}pCp3Jfa z^L4cAeoP8Jk4CR%Ze_jN5$F|v{NKu)Z5Osrs**3EKN z=(hV>U~b6xM+0^8AE5RtD9X26H{}=>yz4K@`-09mgADA1MZ0$9L-6Eaocy3Al; z-cX_761E@68WxRHm3_n6B0WNbI`c6`Z5N>OY4kDXMwg&EIkh5NrACaY;l?qF8=nlQ zX&a{j{A?Tpeo!-REaMr_A%K}281ak>9P*3+@G0G^o2faj-Uk#U>@}(mI;~6TECF&eZ^RnunO#S<|9L^BB)A6inp` z<}Xxv6$^uTrHce_^x|lCO#BN@;zE{a@YXD07L8DV9{&;+qz<8*o$FTprpoHPESP0k zE@EbOA!6oSAsZAU4?@9=l^Vd4D;cnf0u+ar8G^hHF^Q>rZKtW7GgY?BIXv&3l8*b`Z8MHD|;5~VD4M_6RerKQ-ift6rOlwJ;dVECgRh~<8#ar z6bmYk4*LPNqeEdEsmp87Qy=>1IqC!Y-f{pU1* z3(qrPXiea`^9)!imZoyPG@bfW1t$B0fMu5jZ{y$0gXgbfqn1^z!Mj+E0e?)H(LDBR zEHH_%rT-THp5$$nwCHva$&+)3qi8yNuu9X#D2q~&A*SxVMH^#Gy7Aj!^`bm)7-QH< zD8sN4a_FLZF@X)n-g+_eUdDqn2mT;VAx!?VKfsZ=04U#VFe*OR@%PQ!-G$DW)vkg?A=VjhJR`fh*uR(|szg|9!!@ z=1n<{USKa4t~ZZ)p8Y6DBz3h4AZs3g$F`2awFYH%>dE9*%%Pv?p&RRD>Wt|-${2}l0_B|BC_joe~$6zFlG)LkY zD^r8@StirVq3FfuCd<$mj9emszG+NJ8u6G49P*eN0C>jA62KFWvv_MU1uu~u*&4vB z*#MFs6y?O`U_p;&AVCTRdWJ%a#m37-VL zv@Uvv@iIk(+j)fNPg8jn(*%z{Voetcj-JUZIC^2$~Q^NQXQ zyuND!GgSH88oX>b3(;ql5cQP0<)J5n#leH6Y@N!gUKi}VV;>0TE%-3N3fZK=TC<6< zW+*Jmy|R?^JoSb_VmZzE+&KM|NI8gqbe>CZ_IZx`yRY(Did*`0*pqa;BjFCR;c0 zC3jik_h6~OvWj3}(ILfq-^VE5aBv^i(5=%E20R@A^2g*O@_3gu!+7T!<{wvq6~}{J z`0)v4{QbGJgrujcHIDX)7 z2XARmuij#6>Xe`n^XP46SG%CvICY32Hn1w?8)AdbSDeOJzEQB=6N_Pg{vzz^4vnpQ z57en%EP&rCcICjLda(eO3gf!Dar4b8u)-V+ER7Pt(J>4tYv_y90M3kOz)LlORq+g1 zAb>6otZ1kLBa#J>pLZn3it~=fu{>09-f?ei-D6{E3V`16iX%O~lvqTLQ?MMIb+)C- zYTAmkJa|Utj~`pw2J}j6r=i!uc1*AH0loMccKcYw3lX04Ju8p-rfDi`LRzpPGr9^x zUg^&Cy3sN&l4kbQ0G{aypuL}>7x!Go1I&<_LODBEu4g|LIJaLg(9vH2!v@4+2p$`U z5wUfk25|5o27FindfbDUAyWm*##!qgQCVjn5r%}*xFKhZV1`VX9t(eEY58j;!;Doh z;(%%-Go)Ft2xpyrLS;2|2)+0l`6qdR(Dd0DcvWL#m1lvp2^z{BoWQ96QK%l<(@Z)4 zKVtHfC2cxI1x}a}Y{-nMiszh6!_OnJFyua`!3v+jSj_{2oS#t5U>bVm5W(chLuJAX zDsbHk!N9y11+e2><~cs*TpGZc^8s}I6o^fJI5nSzic0_;99Z#+3XI4TKtAU3lri_3 zI_8#Y`7l2=-8eU3OkX}Trd^5domNjRjw# zS}(g$2Em0K826D19Pv@GnrWp%&27&^&5%!7khXXOlXcE#8r0jL!K`r#6t8!fSzUtX z;JgvrR9@k>U|#Na!JEzYpBY|e){*lt;$2^B@M3qdxM`~Z`4p48i^YvyP;Hz#b)QPz zyiZVje2s5vzOi4JHT__~tVM@3fNd%nuu=(BkE@btNCe9_MRwt$qbh6f(O?ZreiRy7 z*(#s=Q()LvozMVIIm!IkETAEt$)h~qos|73)8I!=-TRwLHJuhz`Map+PYVr~{~j2M z_CGX$NB#iNJ4zWE+@xv$m4~7LIykWHWfeH}aCK(460jAaxq!>fTXEQXGKKD?qMc zjueNWsT9+xmrti->c<7PFva!b_!fqLl_M-pe3c_I4%6xL#}TEaQ5wL04FGfb(J@z(nY}^Z$gR}Z~P+5yQ z2$nnoCw3IZjOoHy@={UMRfE;08`JH&q8l?N4#m1L?&}tJy^MtUR*hP zf~~%}ed92(onKKO-$C!ML7nm-)3A3yL+^u3!vX=ng@R?X2*4pu-)JXe_nAQJUdS7 z;BU+m|7AZwP%$U2m4U9G2Ums6*Jydoe6(EIl7Bt5h_}qXo?7@)+!q?(PTl%zka1@{Lp3WVS`jWZq}k+<`GIOB%NXCL^6; zTpb;;B#xg3%I8VbmWpv^Er|OJKKdFF?|V}NIAs}tWPlQd9`7=FObeESv-Yl3S*Evw z-E;0O;hyDd0%O|Z)?lr5gXO&u2td9&dWVf^-wnROt&}CbvrYx}{6GNt?x;j4ci_V~ ztU1SaLb>LfG=QINV%GdE0Fq-kRLt25Rj*c_@d0E4f$1ry5iTkbmQ@wF1-FLbD>K> z9UOY;oCHHyFxa|UqnE{&-GnPL!cx(S;E__rmE9F7zXIi?2Z3{$@UR8lT zs|An;=`|%tZv;j~<}D52$y>~M*(D=INn2VwDcqbEZBVKPIM(f2xL5F~5a%g|E3SDGYp{+bQQSp46 z5)%^-i^?8!#%b_w$ANcI;dwIS;}NHJflB455e-#TVZ&flZn8k7G>*sk8~IRTBrUmD z1Jx-d9?sicGg^vL;t?%20W@=9eoGZt(J~lV+DZUNw`IW4;si{esT#m3?ErL5Rh&op zzP%kYW`Q`a&g1LF-YzQ8lokv;mnMMAyE9{cUS+{|b$e(4=kx^7en`>KQ`wVQlL+Pf z*X5U!NBgR*xPHN`>-{*39(W1SQl7!0<=7JzGt~`@f4n^6DPYxKoVCI2yX^{$S`-%YaIW&*^(X;JU7NqOv0%%#P0bIM3nKU;5 z`W!Q5Ct3G22x&+k8p%q`M(1>lpQ2#bz z(bZoC6tsP;_)=pbuV^K zu0tBU@JeRT%LvQD-S` znX^3DSnvnT^!ZS({7OK%=GQb>pIt-9g0c|-1~ zx?%JCuNV_2bQTQ47Spl#<{2$@?<-;@OS*KAD4Ajq}!7RNh&O;PEdr zBv{0k8LW(#5CZ+KCu{H)HnL!nxmZ)dbB&mSF5y52ci^e}RA6$`AO*{s3H>&owk+kgoMl&mW%eM|JVm{PZhiX(bSv+#0UZ7yv*on_kRJ^^$ZY8r zzyc23JXi%@8XOF)93p_ThcaN-Sqa$246|r#V}>yepH@bL$2W{wlL%}2o|Xss*~e8@ z(@}!Ow=ttdpllh#SQGmpFw>sYP;SqYV0ph$l;b;?r+3#kVPEGX?Den96}=FR8%lmx6&+FALy;MFC*QVh!Mm#Zd5%nhIWD%oOy> zj>F8!9eC+=mDjc)m}h=N@U|^uynVf~tG5?w@D3I-1qUh$dTf*hi%YN^oYi!V%9^ky zn3Yj1SXbO|-m-*gc<=q52CB{b4Ao0PG3Vi&^L=JZo3N#s+j7x|DsS(H!Mu_UoJU8q zN5I_87VIYWeSnCmD%GHl|CmMSftnUA|Cm{n2&%tYo~w6wRO%g1Fx9tJXu0IefCtSx zG=OV%z=P8jEj|7n%%DCQfoYnfs&}iX&U=DUmc2s3$$3!lTsc$l^Lw!&%=lJ=cjQ|r zNM2Ncd`zSrkV8gLOF6ae_bPSj_rcW6AB2Lpj<7L!V$Bh1s8T9-|;Q7vI@TQ!Fg7!TDAb;>YD^D^4=;Xk?7gV6> zq5$$2Mi&Kexj*1R%ikKnwSPmw!zz#cDv{7D@|YLn!p6tNof|5z=Rd&)wcQj3J#bs$ zt;kHMb2G8xWCGM1srb*6s!L$gwIKN>$kTP_dlCZsh*|d}1nncTLK5VC1WjLrfN5So zft|*)hqBV}x_Pum1c2VJ1NzCo-s7E!1hxXoG|VxaS{S2JkH!R3x5jd+XPhMg4qUkk z4m_8r0i2nXkZ#J0ei{|d`4%c zpG`o`9NIHoh0aY6hB|r({le@C7=SAq!hu_RYw-H@0q;~zdzSQJJR*4htMZIiJV520 z8W7C$J|uXP2Qz!F-w1p9AJ*W_$z=A-R_sY}5EJG3C6fh=PX=LLc?}c=fu-Y zO?eaQn4|%`IEeuxl@o1`{TUWFE-@q=d`R@4rm_}I6D32vjCV z#jR9PBUTC&HuSAMUEdO>JiyKjLe{WgIW_`|V9whbz^iXF;6w$;=a?)vQ_wD`shm1w zol4DL7o;G5Do1E&{g918*>~j|HGso60Z6KAT6F6s2DAyFnFBX}ssb;48Vs!5B7n0! z%%mfa$75IjMS{kz{tE^?836JhBK(3y3lTv76?xR3^{T+8J2}vEa;J!vExQBJlJ<>; za(li3%RWW1Cg0VU%i~=}V7zlwa)pW-QxUA2{gBY@!gq}Kc>*?}&chnK+lLXI`;`gJ zlX*lQc;ZkwmmeyRIIf}!j|Zc2PjD2yz@7m!ehv)0%3m~i*}pPd?o({(DgBiJy+XHA zu3OnT6P7+7^)=(gYj)9uDVL}tjJ8mtw6GFFAc;*oj%PZlU{0W9FaOIKB3+v;GT z`I-Q3yTO1h!q|@fmIm0=mrr66G4#&w z!{kyGr@Ce)3Q^r)cojq$I+F zHx+|={3(fSKOuBW<+@e3R9T%{1+y%z1#5TP04t-N2J1*Wuv|~nR4%POQ_d!UW)5td zrUIv?1p_m?3gE5o40!&2obC@0ML6zQBE92K9IG`l-Nm{eppc z{W*}{T7UtVH6W2~L0^FjeFHV9QwA|LhbwA&yn~oYiEy89yu9b#`-loOJt}~FH~%OP z7dnW&Y1uj=QQ4wdMrr`pjzr9y3&bctrGK1h>6KyF@^a{%Csb%pN3fQ*CxuxLjAdrs zH>@7MDLg@gcX9%Frvg^x-(-K9@mzxE;JnULRNky9!Mv=g!m1mYRhv&^O5W&zftdH4 z1~hgC3)CTsRr$!soxy^~C;JfdHuvS!7gXxz7lNq;FA6Qw=dzI~kBoCJ4dBfA3|JLV zQ{Glo&6kIwP}9cMtawEQM&tzp{doeo`nACDu;pt2H{~;6Uq!>R*X6JgDBn0aY)mUu zRR0yhsOE*jqD$nReUWU@l^7jat2B6LR)J?9qwu&zGgdPNy)q4P!>K*rRjG5|4W>HY z6AFf{gM#u8^c9o@cs0M*({O!acO2>R@AbI(!iV2zmq=af6Ti^-slHza|H;1GGvdQU ze7Way1Ag&H!6vQdH=}u5L;mHS9NxVAyXRb+6ScnG({m_m9>4#1^W)05duDu;*aoYR z9|NHD;{dAWkNNfZ1OuRnvX|zDbAQ4NS0F;s#Y3@hD-7rDD1W)<=+?wr@{jt-8*1Gb zVo}(*E%78afZ<6v82n0ucb^x$(3-qFFXK4{&%t?f_o}=ddxIV2{zf=z(EdQ^Uq7J1 zTX+z>=$gE92N^F@@a&v->IapVd^m_#c0}Md{ul`S)SonP+kXPiqToE{<8t7O5cG|e z13&H;l{DfPLE`)AU&VZRf<2mqoMC|hB1ASE2&s{>wTi2fj>0;B)Gb zODZ-0QjmTg=bu7B>tD>CE!d$_`4tV|@T*YJSd+K)D&wUJd)l}?H{Vowmu?30DsKti z?0=a-2Q*K@c3PjLv7Oc@r5oD?czidlPr?Lk7CgdvXG4+#@!2#qiEonlL3zC-zG>MK zmZWSV(jt@U-X!gbOu{!(?e__@hpTsw1 z7ZMon^G$G|)2hL{Z3WL|Qh1)shDlgqUBY(`?z<89s;t6$gIT#LoJ9{TLBwPL(5WCXmx5Zw5pv@a6!j_K|{J|@K$sIuXTVYFFn`0 zBq3mk;Q5}ChsC8HDz9zNV4nE_!Q0j=z_a(&;2rGC9GDaU@@;iLreLM;pqG2F=|B}Y zVPG&YW00`w5;hJk4<}(9CS+n-%N?pgl^$W#`vO#1&74P=nx%s3=F~A+Dz!LEQ2FM1 zq=?hjqmyt(&wir3YD|Dva{(IvL=yf8fmnc?Vug4jN$ZQHnf3l+YfrHw2|rQ3etTkM z;W&+kmyScj{%F4RWCblf{&7iKOV7G+);b}%FbFi5$CxEKC z^lZvup>I}fRyL7EzC&0mlUvL5EUe|~fHFGT|JkGi>JOOPogyeMOi#k9(_$P@RWmhE z<7YAV+^?YcG+922xyLSmsT{atwhFv6J2)tOa|CdS3+|xMEoDKU@E`n)xwAk6ce?<%1O>-`Z}F3FFdh*+|7H2% zU<6fpg*2F#TO@cXtH6_^uVhUCS2OxL6(dO8;`bRic#zC3){MRrIk#B!O?^8FJD&mX zz-}e)YPI|xT6WoZ_+^Ne-_vY4eKK$P{iJ#gOpVVUWPcxYZdp=Cef^-neo41)O&VxQ z<&8yro^<-I4H_a>{-l#~_G=d+zDP=}N4>M+LhA?p;Ys;d$9Xb$C%G+k-jjc|Wq3$X z4KrY=ZSH zx{*}t4@f9~yzxRq`7e-c{wL{#*56{;mLwNhr?(z%Q3tURUE11;zi9B*`}1JX=CZXt zM_XHKA(cPo5Y~CZx_S5uifydRwf>00@=ok;R?yAut&_rn{}hgFt-_90n~) zzCyz;=*<=W2M#RU_xJ+`*r9i^{&QCVD1YQ&Qtyvh02HQKYyFV}#hxR^)Av$EWGZ`^aZb*OU4)^rV1pdfb}SgyibUdL$oi z`5;d{uO|msl^676A5v;Do&LDBnQfk)tVNn!97-x7y)He;LY~amld&)9;hA1&t#Rf; zJvo9@!fq|n6F<^&wx|*OM6qdSXMq z67q>d=N_fkjr+$FzaDU$d+I0 z$vKqIgpA(>jZ2Y-jM|Mpvg?rRcI)Sn0{p{^e?;!plWl85i4*eUV|wC7zTlLe>^}`V zpt9qvp3MCnCPlsyGT|ILfikI((dYHV$^eid|Ai7Ch7uQKw@YXfc|T;%pL&w^5!!@2 zkF;O|jOmAO9`x(UY;?i_8G8j0uo)J-swbDK^&}4!oY(YZ=nXwtjeI3!JEH zSl&lNkOz`c5HOn!1=0<~fxNkofjrpXKz6h14;skk3Wn> zxq>p84;#oOBr_|YX&}>(cEe2tkkyYENGYxtJZc~fHVp%WnPRwslq1}1`6;kqjDoQS^2b=iJd%apl5qy|Gg2;Y*v1>kYZDB_#)1v9 z(h03`J@YvOnJ~jZGLbKZynz&kGUk~Eau6vU*U2mc>GmH3In7{@ymx;H3s~0u`K)*ItJ<@VUFdK<2*z zOCSinke!MRqzGC%-Z7A`wxXlRyLTAK%U%P?0hsKBOOR$GUjX^c9#{rtoO=!AfrAF( zlwEQNzWvUC;rhmKYtlSUJ6bwoKIWW`Y!19|h024ecjK(0f%O2`+F!|fOtrI1A@ z48)7r_CfAGX&|={V&s&8wEP)5psow@UY~)S!}UzaXMROrp%3{DMmz(Lz=H*lg})m* zkPQ68b`D;+0IR~nr56ok@g*1l#_&Qu{TCWV<;=egB=jm`Y(0JCQEStBw(AD+7*f>- zbQbWpL%3mYaQjKt469AzZW#~8`` z7^L=CBZ*5fk}8y`Y-S{_S{lh=T(5*|*4jvJA@715)W%58u{>m-RO3A2hbKupBY6&~ z5*{mnT;CCuaoyR;Namy)i4C2w_cW5lNM2lbL$-RrNKUh922y7?l3{H6fxLkfg6pZh zjN~km6W49MjpTQvG?wpUBomQRkazV7F_JEQQTY>E?@?>wBc%@-NqB~l*bxe;klT?g z$on8C4KflJES)(Rm4_HfYg~6g9z&Xp>*Qf0S&(HUxfrDW$Bo4Igps&ErXLQsCXVq> zMVn3|*@lj}A?HpvlDlhWJTV#z(_75U1v%yL|+#f zNd`j14cY${^kWl^8v#$6--IWSPJmwt*?t*}$U+HHx7d zEOH>berY5H$h#rqw?S9r?U3!ZgNeKoa?1|rhP?SJG>J5f<-JDI4=Lt7_z3bKQYP|# z$c{VFy?4QaT!uue9=4k2nZJfrk*v7mfV_g_M&7o|NKPRQLf*XFNUkDnK|Xblkz7Pd zWo7oFmq?Y!mqI@L4I%+~7i6z;gel8IChtQ}kA<{{TK&s{G)Wgkv#J) zEQY)rvgZMW4DwFM4M@4jdm(QkEkWLV&`5qjvbmA3Kptr;%O67HNUK@C(nx+pa<1`~eC7}Hpy6R7Ie>o@Kt6T^qm*q}Af+FTWE`$LAd!{<5>hF>m}yOl^Ztq$`3>=cTYku-GZ<^{(eH;~3}l|e%)}DLrtQ3ue1vp@ zjbF$I|3F-Q3hzR$MlvE_c@Z<1A7c~w)XOmPUx;bs&3_xopGX_o^(#hF|0+C+d?w@v z)fiXElWXYr4U7lmU67CcV|;)V;U5M6U@`c;zEb>0cMMNU!kWa;*jvio; zNXiy;0&<#BBIYgh@v+vX)bW%xePU@niF{UHB55cQzWvy4D|aXvZR$n za*;Q;kucLs#8yTVM_C`5=e=Jdex%u~H>nbN0?C4MF39M15}ASP1(3fZEnsEZOXLxx z)hOeHT#mF2c{k)QNE?wS9iRo$ZshHdPa$nVz7#U8BUoRA%JTP)68-22Ys0QK{B7~c zNat|F1^GFW5BW;SeqC@6c_-v4q)g;fyGo=OX&n9K32PFyWn13}c>rGkMcPewj4L_Jd#=s5!=(7+NqyB0V0K@SM_aj5R4XbErgCAQf#zuOOQ|0w2&{Mq88W*&db1 zQY52?#yw$e+RZggBI}Vd!1Y3&N3tVNhD&4vk{eCMlq>n_Mokus3?LS7z)5Q4#6qa|_%sRY+EvnBE}k{S5| z$X!Uyk*|a_j6t7}H$#p>GNOM>{xn9S4?kgzqO-?XGw7`+tf}le zLK?IUoq1j&ZzJV?i3o#y`bCL2zoe5!TSxS>&y&bVq+2NGf{b@bBxXD6Kt6+HM7{vh zj}(TydA>v@AX&abdC1d9*J+O@t+VL6!8L8uT+R|Z7jCC);PuCy~!#%PTx+C?aa~#&Oah0#*asf=l znt=QiDSbOFe$v{s@F{C*J%1tGN6~vPZTplpv5jM;L_A2dfv<$TgERwq^IP}{?_!Bq zy%@P~!wN_T=;8@@KpZ{6n$p$34qt)#0A1Y)iA2Ru-gy(Uz3mJL~_4m-Z6ERJg@4&1`3)nr#kC3*Yju-L=q>ae?APxUw=11NI zc?Ze0pZ1=NrvSU&L_S5@vX3^HY;8}ordaQr7iPlhVj}*1a3f?%go#uk?}zLXX(E-# zXF`rNo5(rj-H^W{l_O80Or!{D@_zJz$p$8pg}e_kHQGcR-=Z$$M@V_NUJ2Pe#zZ!v zt{w7cBw9JyY7KS8n#hef6A7USQ>+iryr(gXG=CaC$in{~v89>F2BfWMuM)CbR}*P{ z05*l(fV2&HALQRXO~i-1-EJcNdYi~@S~n@C>TZXC{# z{L@UN`*hgq5EziNk;;)TfIN;=MH5i0Ugiv-XPJn#lD;s`+JWvFXN_-ce$hlmAvr4% zg^*KcqbtalLe8CI!WeEd-ughS(`6!GBDrv@67pZ9Tsm>QwOM2P0u#A~RP-G*Ut}Wn zUNwAW~oC zE0>u_$K`MU@?OY)kq#qoUST2~kPaYkhn$Uc0{H^S7v3_F)2#d|6FIudM7uv{ZAiCG zx8^=#E;f;ekivd|3n53oZ6ZeGOCj$dS&&b4o5&C(8!H1@h%}6qfqeNL6G=zj3wao+ z;}0~#X-%Ydr`0mFbS>g`9lFFSLKc4jdm`_LTvUQMWQ{+F6Ui?#kr_wOWyp>m7#?{CjjWEk$lM8%3%?t%A+)H znzj8r-#!x=upe!rjuY|&q$-rFgiJkvzTkQRr2P;=3VA=|UzKng^7ijc#B>DrkT)MS zkxockkgvRHBHtrrX>H?MB6ZVD#8W#TNZv|Nn_WDq7Twn3oOJCxx>Ec=mC; zgDdpo$>t=Qw#;hQ>FLmnsQ4&$4lmz+AGeV)P~8fvg)UxZjno-=5q2ccKDKvx5sCJ4 zqsTE<#3UCfT#g3sVOa}pu^g8}=(HlM#f$@c_VFL%6+?O3&$ANsL%c^4+GKy|a+vncONyh!Fv zUL=Zl{&QBOfn0?8R-pIMylQA6uE+4I?5zO%_^kX z{2IU7{1E<5DC%2eq!}+1*e9ogUrmsKX1rQppOS<8Y9jBFjaoxO%MbHwNnF9Oif6ogyqL<%-74eEfE-S9ucz=sT!$0t{ zjpeemYZ0_>LZ2)_z16&gBf5{Q=e^A7&2%aJ<{Ey}HG|*0Pga*6W7V6AKH`-J`#7Au zNHaNT@SP?UY0i6w7a{E9et?%~Ay=fiE8(z~yaZl@$R&pG60Nw8_OUiv^U{7+x(&}; z-a@`D$FsL1?BjTjSG}JX$zerOc@g%WME*45McT=#(a+yP>+N}QA1mI0^`)7vBX<;D zmavaEpI7R{3udiC!Opy0_TGejd?R>~E<7mLuR^UdgWaFI74~rq=QSVTgYG;lVdouW?^oEz z)|VIQC0C?f*PuvmUWC1Bk&6f&`fwc zLW^S5$q>!r#S8nmC-O=I#GJv3JS6AM19%DhQeI*p51W0g#2~p5>Sv7)<~0-E#`Ph* zarQQbeS9N%)rWcUoVQUtljSYu;k<|-0vOHAW!Y-Mdsmx<=Rq93Bfb8M2(DROziN>=cBKKyR5W?$gfZR>FTMIQPC z*5UeW-WXmsv5zB;H#Ucd#!6OVu3R&Uy?2s719*{naz%Qc6>;$*>=hLIxZ3j~^SKAQ zet;q`@gnSH6#KY)^CB{1cii?@8o9SL<1uf zEqbyu>o@qtFjgVmY5@ zTk;a*C0=3$Z(}4YQ7GrlZFmXS3SNTBy`$?{i6XgAQS4nA`}m4@k(E5sZ?Gb7@s9Kq z9Vz4`Rxt&d=~i={oExCi8lEp=`C{HKdw0e@-UMFjZSLap8_=$sd!di$-21%5JG}c{ zH=@M5+|Ye_2}c)R;ysSZ+X&42JYUN4Yk9tk<=62!E`!%3@9~-+@Dj~8p+pHEokMsD zpO|LXvl15i{3g&p6f-F=VV}U;*g!wt1id$M%l@Cnz6HLj;_Ck9h6@P>IFSH1B*7a6 z6C~L1s^JsmqEG`u4S%TxBzjT&Bo-|AQH6>%D5XK64dpS=qP?`*1_cZV5(F`TV0b8r z1r0BIL4=?nK^_KB{I5N0pOBJNI{svKX4cw!&+D9-bLP%@jG3i#n7PzaOyV-om$8M% z5fM%!;td+e6GSm9c7h_>6S165mMnvlD_BKSi3mAFyh%jN8$hh2m1&9?OT;QR->^4e zA4&}Y@`qJme4A>fl4+}Nx^a` zd5=o|LWD#0=%!ZIxY}#z^0l7t6=6+qDuw+FH^A!RTH6Q zd1-0G*JK^k#(xW}L##c#u9OfuNyKN=Rqz&c9j06?^5>K*MLt61@+Q-U&qzH=Ncw6( zswn4(e2nr$k-s1{2QN1zy&ibO{Z`zzjvN+@kY#CalW1aX0K;BCkk*$wfcR6=A47i{0MVesnIhGk6s zj+&1!HSh*gFHu|R+gNsbmNV^pn-(wcTO|aGnd~v+XXE~OjH&r6m>Ol`w_HvwRTW-y z>K&whq1f}pVu^YwxlO!0*pLu7#^h*o@B@JHsKcg?=w}C0Bh%+2dDyTP_2x6PE&zd- zwh~4^K}2IBI<5nviHY9;#91PWCJ+&0;^#oeBtgWQS(|{s%UlUXmEi4sp=hwr7M3%Fe zB9;=-R?3+cmBgxcm|3`tnaQk#1@D5MA~yX_OD#Y#5$#Nc(62MgQJ+pLX6CG5X24oB zJxf7PWjnN1`kO>tZ^oB`j^_lT+ppG_Gqb(zD`t<-JFp29k+Xz|8%1eaR2q9hfb^=y zKe7D;4-C-N%%lyVcVvZyH=x39GRuY3$t>Cdo7a<+9!pXNOPsh7q|Q{^S=D-oz_Wsl zp#O*(3pYYzCgl>5yRaxXD=C_!uI7}Gx)GSU3Bc~wz8SU&mU`G`axzIOy2R4`SgJ2A z>K5yg(?v6zQe&33tk8R!RB3y>8kbOzL&X1>F7JVUD|L5cX7*ra_OcCT7Q6@gZR|RV zsJZzrTYa~i3ZeIw?&Wv7lRhz%nL%^vJnFXRX3+bv#6Kn?s|yi#nDLuIzmxq+Giy3A zv#)j7>=AlD4xOH)mvklKCo;Iw@Hjw5p>wNRZ_LbW_Nz%-K=02g4R1k}4lv7wgyp{s zs%l9ZNND2wfDU4M@O`9X`Tstk_pn#quKMGsKZn2)0S=}d5&8d_Q$o6zeNjnS9Y`8t zRheOBu=F$5c~I4+5^*0d2a5&qb5ZMe`VdibJrP6A!7>;aW-87hv%k{YGjljS$=(W2 z?l-gM0dY4GS*?i}VWw;aJ(t(mL7JJ!%m>)Bk8OqZ2ialnQ3HM=LXw&mHIj8QSm}+J z`H<}-X8JbJALeMsh6V`}qlp+Lh_t9jSh9PWS);XsH9oqi>9`&AM_G`Z?I_4-Gjcmf zdA6Ax?0c{pZ=%M>I7GGz=@+b0?1Hd}Rz!?3Q9D2%%j&p~nOP1qALj)+ZwKhVq*vG^ zAt9?J5#z)_TGV*z9;&*pW#$tcBC#KU{(tmun9`$&m|*&R0Q#?(IYQ|znE538!(yR7 z#cqsk6cTFG`b6muX;{kJd)Nb-nNIqzwY5J)C1Fu79eSL|lg*S5L3+j}#TPtCR!It3 zzag?pkk3+fc0$fKsXM`%!laNSJ;%zOz7zgE&-7wRpK3M;^tU!?UO7^x@j}|M9LV3X zB#+Z<_Tc{ZT2Wv|mV+~$YQjQ#fpVG1FS3Lalr)5-878U%q?rT;D**gG`)FPTEd7DC z`Xos)LrE$$i-a_b9eAQ<-owm4YKwgY`fLu;Nko(>eU4mg(xT?lX8uR8IgfIY$cA#c z$n(uXfi5t!KEX(PMt#qvr9ZJs`u`J_{>;(vED_~%iCAc+{1fz-n3>N^M>Aj6u_*Mv zuyUpl5%VtTVUxNG^hNBM&oQ&$9cKQOZWio9-_hmyq;#UVS?5 zhRuJFl(QS8A~SL~NQ;>imZaAxmx=s3Md!Z zw5ZigDwm`Z$~7Xdp&Y1${I=;*3FulTjgzExtd<3p(E1L$T%p?CNT=3IPfCk=mn3Ho zNTrmsMBc!zIGd!%F_Jc#@q0kpL}0N1-=kb9@@DqVc_amnleERe?*-|7R_%OdhN_rZ z#x6H$FC5)!opu%wQPN?69fjN2JX-~^U5xpizYsC8BN00|Koa)>@d4cl?t?oY+D>lr zBz-4)>>@I=(#R|)x&xpX@ zDGAOlA`aU^n>~W~-0E|-sE&__I6{Zh{{@GSQqB>%iiMi=FEEc;*};A*35C1K{6ZUF z5MOfm?Nr1LB92p^KLULxCs68Rg}@-Fr9Q);Z?%I*9?*gVgHg{@-}0)6kco&17LHT@3( zagknqOhovnM10H3%mP7t$1BMmMWhmONiV;G_?}}Po6aOevWUQv_G_8neg;I8nYADN z0b9~6VgM0dGyXGlr)aZ$FK*4npP@*NC|8Q?Gx5hj`jn)=Ad(uJ_`@J!O?nua5!I-f zSd)5FuwFR~o3Up6r$8K3`j1F&YL*NA8gnW-#qVHWn}kp&X2#LF|8rPxMmZ>Qb2IpJ zkXkUQP?8)|aU7*v^EoWV(@|`SlMuOq%CP61lF2D??l(CkHNJJ%Kk4Pca{?Qof;+GN)lF> zUx4%@x_O?Np>$?u+9H`XU%+M;+Yk=62ug_DNCeiJLhnX9nP0+AcRD)kOOUYEl%9Es zq;PMNu-5z%q+4tsbTdN_FcWJ{P|SIu_oT}n{^~YxFA-R49tZta+8lQrHhbABGYgJ` zbekPcj#o)JBw>Xqq~0VsCqN3?S~NXRfYir2?KCDSG>W7<%=i-^-APihkot1q>=9Bw z_9*ORv{iB+NmxyO1=3w?;uh+LW@b~>#IK;Lzl<=y6R-3Uq+?wv^t)L(*DC!%W)8GU zP2x#d#|jgd4W}g$;o(GJt$7mkduXTdB<$o+E)jV!8>E%mRJB-Z3h7<~Gphj{LV2jj zKck#4@_lAjHK0FdAI(tXRWv@7z#0J#qZ~K|dAR9v3Z(nloS8~GL=s*Z%Lrd^3T4VA zsZ>Z0mFdVUS)NGi*svcOR)dq^rJ4U0y58O1(L34s&L9Hnh1^ha2L zAQ6!-i1=R-m_vnXYty&H@sebQ;r^XOIhG`xDuEEm!*m{cuEV<`L2KpxA> z>mVwtx}M4&mr|!;sc5gxLp3vsK7c)>5=OUY z<^+z0VP`@AmE1b~&Tuu*frux~th1m$#U6OS($knZk}L z=Rpl@Z%yh21l>!0d^ zcDc~E)B4|;nVrDQ9UT0L(V%}o1K8IsA;wR{hh}gz=sTJDnr0?3vz+ubLa*R8cL@=m zkwknXb(n^=taV;9L-#Xtm#u3vv=J(MH|2bhKQ^-(f%FMS%^TDhe3+z40&4`ghjPFN zc`y5Ue;<6=$1#rm5XCiGpZ_X3{{8C1|fY;o7j17!-pgtv8kqG6OfMb00U%pS&2* zPm0Ta2m98ofz3ozn?*uD#UZPio{h}>npch3SkSRUxEIanP z+ssmCo}=@Ng^p#cv`8rtPV_ytf$a^++!%N8V67j8> z(iHUXn29a%62>Jm^AhRDgpS3lEKRW?UPAcU9BbWU7B#~{vgb8GM45`FxO`(Lg^FQK@Yimx@NB)27VW#_(x%8!_fo!)pAZH6|7o>sOZ9qiec zPIE%Q z@T-h!I9^hf)DIj4nBvh zDREPo(p}>b8sn2{ion^)mV*zRY6{M%wkhp@%Xpy16Et3^F}@g~jN_V;FpUg+XvJ#4 zdA^FkdBQdYXC`Y3z8zvy@Civx!RHTc3O=2uDU&tj6^-$+1B*DLF}{>x|Hc{R%D^{) zYzjV6rzz_+1s~(ol(^}{bk`UkO0t}(8spo!_HP^xt_*w?*{19`@761h)wU@UG+wAN zK8&CoeB#t15?*ACZ(i8Ham1t|aKxoe!Qro(g2QKR3eLOLl#Cfn!GWflGFekz(HO^% zlC#d`B+q0@Uya9TjN=+r$2v_pta04$$ynDoUJ)ZSCGHzXQ=QMLH(^laBHbZo?~#}wELeAcJbol%HoP4FquJGc;!WsaY{1CR z*Rt|Fk9!{WJm?wY$@4q}{J6i78`M};c+R%*dgP$FQPXbn_zs+T)Ks_hWj9`B(xyIG zWNuIJ4flm#0n;okYIH+vp@;yFHnY0>+B6ES%=O6WgRKGqk4Nt6MR(vIt4?D4t;TLL z6;p7Zei_Ru)2p>F&g8W6b-k(1fqTzhW@V`jaZG|7b;tuDOYs3qUr5Sq4z%(mC5%?2 zplaQZYwf%Jo_{|>ucH7ECO2+3T&gRqUd4Etc-kPnYJHt*ZR&WsN_|MWRyQWU2k|U+ z#`94L@x691)6FZK9TlBqO8(R~!KAnGrN_GIRY*^Z*}ZK0%a88);31R$Jf7W$+xVO$ z7Z91vU$g~p;TFi?H@Rke8(+WLqa6$9^s(iZvozb8*a5!lYL(My#6_!YYIiXCrIc@7kn`$=LmjlnBEpzVb;2ld6ZfMa5MAI^|iXVz~Wr< zi?;Q&W({bZfG>AJAEt4Hnlmx9X zYqiSpH=?x^S_AmK-IZEhT=+HAW__)}u3pq;vec$3lrwZhVLlW_8c^usLa(DXlk2%z zr#4f3PA8bPZpvvqqBRFvLpc8MN;k#5hf{omu4ruQUKJE|gE^}xGO~#$=;Q>gdo6M3 zgZ7^A);_F{2=~c`mZ28g`8wD3l0uvh6m&9!$?%|XRFhg_m3F(Z{sbtzG}pWcVyfG1 z%Aap)iE$uGa4lxdPHmnvZ!Fe3-?j54rMPg5Y3q1+X;8Rn7VEnKBf)RREsTok;bNDl zPYEC`X~3s^-Nsug8+T3oOHnQ7Jr$i8&>p(~s*a@ud`Yz(I`j~0ZX%3@5*nyEH5OTc z4jn+vxgD~!PR*4z;3aB|P4fn>4b)PN4DGgqyL zlpA2ph0BRmuC+#wG|*FZ7j{7QU0Z7=zZJTLju8J<%XUDlxdTeh%5tsw8?a`}gqjS< z&TU!?wntUEBRlS@=3Z(Kb1uBn_QGH=9V#mu=!F=!ykJxzo;@BX+IH||UcM#G)lvQl zM|tFYuDQE|uU{=7YaRjl3J6}nRSJOGdsYb2tG~?|55|;zTf6nlAHl;uIIoS`5c_iow;Qset zvPY|RRGJN$|9M*F=d`M8or%?5cMbSyu(zG1Id+yddLx|=Zp<}L$9WTDA2?j|=;@g_ ze#&$?+^mzyd?_K;YPHQ{74Z`#dIjQqE=jO$FT($&U|t5{H}c22E^Huw4)=QsMp z!ryt#179V!P0XovN9I=DJeSK*u>do<+h0y;Y_>J`I#*1!x>B*{aFZ4<$&dRBwJu^j z(Vmvb%hCq6Fif?K;@u8VU1zE_|9)n=d3M$_uT6^tQ_{kVnU=O1XIfk0j(s&K?}bgA zX=OTICmH~Ar{m3ybCC_rs8q=nGb*`{bc@-noe}2>xcBV*KDg(&9KE*{I(OJXRj>u^ z9q+}I$_3cD;pKaFO}y9XR;F6z*kjS^U<(i8>q;+CTXoYR7RgPj7twH>#v%GJ8tuC$%TGzI$=j-LkRaOGD z!Zv-y2?}n#I@$HLy10U^sMmygTI$R`}tu8Km8|t;y4`?lECH1-*~BVz#4Re@N@Z)>5zAs5OLhAw+8ctrfbvzE&4k2CZvb|A4PqZKPhe zQ)@oXl@P5FXvKTmdVRpf73@I0w)p|AHPG4#wr#zJF!#6hicuZiDSbIkwH z`%C;@rw43WZF0c3dtVF;#$8xR?tHQOLLZBZk+VE_Uvv_2(|3DX)}$+@7|OpqZ5*5E zP3qyoX;kRfH_+#n9G(EOzN0(yVvNenp>JAm8rc}4qkUlH?9G5wp1_|Bj>2p zG3Snv5mz-gHd!iDhn}4I?wXt0fH_+#m@B)&oIB8Su4=Axid3dvKjzmlH@^XMwp7w~ za+V8Ams1(#PjyGtgsYl6A?958k~-#=G+@q_O4?2iiJ`f|8klp3W&TyoEo~>I(@|Vn z$6RRx=4`28ZnT_?Q^%Y;Zf9K8+}P{9N!?s{;HJy#$pC)Q=?-&uJz1#3ylOWtaMyV| z_lVI}kVF67M&H$dpSC*SXFz_JNl9e8Ty>|uoRdWgaLQBJ&EBl&{DZmXnvULno#wkU+6GACyBo?tc)E)>U~b)*(jhKX z$*o^f26uMuyC(B6npg;ju_W*3<1}^Kc$@<^`(U3=rm~;U?@mz9_45r+2z{=2H6n9# z>u79_<^;^hCmXeCn9SB@*?DK}<3X9sCPj|WT{)~-ZsQ@D$}Pf&Iu4=r2l#Spo#9Ma zo&(N>P zIK;*K+HvR4(vA~T)Yp!`Di2X6T#=IL_vp&k7771kE|4`@gOB(dSc^``dnj*AUY)h5 z=PaA7@(h~f77X&<`&x|t#W?&##13+IW}XlmbMUdBJz263o291Q=Swry7@P@#b9K5n ze38{UN4%psC9@ad!ygx~GTt-KVs)P7lLhL|EZ+|;P)pU_UN5lxwbvMv)f1Pa@b?Sx zJtgzihppNsRw-0~qoy_U)E3M{J%+}TFLE(az?3cV6c+=Lv XFdRIjcaI4pe-{d;tPX|Sg}VQLXo=`|N$xIIpY*(3}AWcx35 delta 120 zcmZ2=hIi6M-U*YYf5>BG*?up8u}XGx$})@4?bG%#B?L~6TgJ9|(QhDEDvzlqVEcr_ zj2@xWfoz_Q^CCjGvk5SZF>QXw=;1&4+|mhPBc|VxU=ojeU$l82(>yR^vV#QI=6hli zOq=!il$a*#@v&{Tk(OcF{Epj=Y4Z*dAgfK@fobzSJv}C%A$*(DWEGe;2MA1JoE*cl zXfuyW9P8u@Y;2SHIM_C87zZ$J&eM!zocw{4WwIZq(8LvcCOeo;0CEK;Tj(vDe9m~; OI2_kHpe@MtMO;%vx+Psgc3@i;a!+~k@1Q8{s$uvF?cfgF~l%SK3}HY^f*4$Zmgxb>2nN^5`Qpnb IA5jnk0N^|ywEzGB delta 23 fcmZ4BddqRcGwIFeWNcU_`$_dp;uM?Qqa*?VehCR4 diff --git a/StgSharp.C/x64/Debug/StgSharpC.log b/StgSharp.C/x64/Debug/StgSharpC.log index 11a5cd61..ea01ee70 100644 --- a/StgSharp.C/x64/Debug/StgSharpC.log +++ b/StgSharp.C/x64/Debug/StgSharpC.log @@ -4,4 +4,7 @@ D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\St D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(31,50): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,15): warning C4090: “初始化”: 不同的“const”限定符 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,34): warning C4090: “初始化”: 不同的“const”限定符 + LINK : 没有找到 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll 或上一个增量链接没有生成它;正在执行完全链接 + 正在创建库 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.lib 和对象 D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.exp +LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library StgSharpC.vcxproj -> D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Debug/StgSharpC.obj b/StgSharp.C/x64/Debug/StgSharpC.obj index b319ce9d508fb04e8c0bbb6a47fb9cdc3b94f4f5..555e5e7b627197e5d417dc54eb7af0da68520efb 100644 GIT binary patch delta 30334 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 delta 30267 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

>YcO^SNK)ln%AgH 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 SVYR{y&HH&OH#-;nlmq~}3U~Ja delta 356 zcmdlpg=x=+)w2%;BJqFgdK|*G7rUW;b$21wln<^p3bWCdUS_wX>Y8@;5?rff@;AYFDAhh{rY!sJpx4WLljEBX3vmalQUOsuQ z3JU|nV|euBy%0dFiN-M@h&ViKxla1qvMP RZp&PkFUhRi>|F3u5&#w^cLo3e diff --git a/StgSharp.C/x64/Debug/intrinsic.obj b/StgSharp.C/x64/Debug/intrinsic.obj index 8432c5b1c349615d8e5a6ca4c27b2b4bfcc907a8..dff031212c52b7365fa9fddcf41346846248358c 100644 GIT binary patch delta 612 zcmZ2}ooV@XCXSRgWd^5erHqXn-0Tudg&CkAGcPSaCqJD*l7U@tf$(H)c1gnrQVa|N z48g&!4E#Vr5RZw$F)YH!)C?}b0unGaG-BWdsn}e~?jy{!NO!jtu-^O%+h zPo6KW&AJ3=5!2)gva*xkNDBc4C&}o7r1WJBnC1viPL$CCQN1#ztaE@0Std`Ak(n$f zE5zmKD}^U_%gQpon7mR}1!UBD*%-zzlXc{5 zg;b;&7?SgIN^|q#O@I#L5VV|JEf>xVG#O+rkDHI9doY6>P#oybzjCw14S?$7cus|3XPEzDgYHen7l$kkx^yxDTNb^?l^Gcw=WXn?X%`+<_nHcYZ z1vjkZoGe=722>eSqs+p1A1LSyT7ZZ8Y)7129m%X#;vhNw@F#`SBHr#_AFQxEcrpW&FWSNGG0&APEoB9HU=uTE+Z{#~&7VaqW!03o8v;Q#;t delta 610 zcmZ2}ooV@XCXSRgWrio)9;9#N;AWRNFU0@_nR#jXIr-@fk__yEr=%upvr8J@14;@o z1P8k^@B;-wJSGOmum~elGq?Z?NWj$4h=CWRVsk0Gk1*32smX_>vY1XtP1cvrV>%}_ zdA_tZ>p76_$rog0C%=&v0t!x&(FIBA%NQ^nlbW0;qXnXRWlUL*0Tr@Lo**MLSx#1n z%hAV&!4YUQQ1ZWwBcsD)M_C=l50mp`rI~I@P41SJWqdYyrK}3bsPnQhjGrd!$k_@h zNi#4c=jW8>=Ea);9mXMOKDk;hoEc~`$Xp&bA4m6K205TO(4T+hW{c|q)yKyh#Y6NI zrD!ey&g@PiZ(&SSLCm7#Mo~)P$ z^!jFIC7^RTHY+4Ia|w65>v_z0SnN0Z@g?cyljo{1GB8YTu!-6%koTRD@#bcZf?!6* zTa#l7tr+iZo?aNsJo!_#)MUO=Eyl;2ElZy;Gv1xt&>%V4yb>rd*|OAp^UTUfCdS)f z!3`@pCyUm&0aeD-D6=r$0SY<;IY%0%G7C5^ouqQ!c>8qT&$U_dT@I%vXSOIr{9t;t zPQ&+}@p0>b4~KtF+`jo(k?D?~S9jdKsUhkUq;Y-Xf$)3Buf#IL_}>>iUf27EqidQ| pGoz#0<*9XF_D}Pe?R@;xht0aNO(KtfUCNl&+;@g^^TU>7Y5>Yg*9rgt diff --git a/StgSharp.C/x64/Debug/mat2.obj b/StgSharp.C/x64/Debug/mat2.obj index 9e27805c94d855c774d4c350caa0b9461dad48ff..0346294b31dbb9be9ed04a0fb158b4acd49c7197 100644 GIT binary patch delta 915 zcmbQXn`zo^CXSRgMFyv8rHqXnli4Je3Nt`KW?ou;PJTLrBm=wP0^!Y@*@A?b770&g zm&#(ACp@`W%9wQtP%YzR9%)$tS3gH5A6Et=pi+<^6G(9KS1BQ;CBl47>~+f|iqYWv!WkMgw)pa{D;C2Q$b4g%=1wsEWz0!UD`5~~5EP66DuDAj0jT#;9?+CKz2C*O<4&Ha6iV9)Z79?u$TZ?Y_e9V>1K^WM@B}z z$yr5|ICAouJfqE`#chm?k0;M5p}IpiYn9$%WaOF5UT(w4I{9Fwhz2(}BuWyC(!nu_ z;!8td)CvkhytuicoSBJ{cXCT5OeZ6;I{#LxF$w7J`LxjWcG12pW(%=D)7Tj%8`mg? zPuy%^Sh)G1^49XR7ea2t{LQYjn>PQT=KUGR&i9^U4h(uH75#heRnyMXg8uHdT7LH1 yW4TUQmcFQNtw_w7&c=34Vgb*(Jy%4hg>5iEC zY?Vn9Qj%t1NY2kG&CQE9Vc=!p5Hz2xD{IXRG#aQ&mfOeCJ(xibD11t4@?_aoaXp~& z_;{muh?e5i5(a*tq~2tGIen0)666dS)hADqs~1-XD>Oz@C<0Wdv{^%5oe}8o&4CKt zjEoMO?<#iLGm34_NQ~wZ?snJnnDMaKZ}#I$(#t2$Rbgacm~8JIwb>wtiHY&WWaB)0 zD`udnp^Q1HX(bFo41$6YKqU~NqRjM+5(WXFSOQ!uF|U|G5GbMmj0p41Yw~t5GCrJ~ zT43)F(&C3O#RICtj}c)?09*`Y3dk-8peZ+j0q)0GlA2p!2o@6ni%r%lHQlUH=*Y+@ zGC8Y=5=Ty6lV`M9w789t@xkOdB~*9lX06gYjEq8)*~@JhnI|8t6w%-WheSzYQ93v# zQG96#j9NiKh!;0Elru9i3QumSgz5Yb2@1kG|5mCo3G83}T=kl)sxj~9+AR4lhf|Y{ zYZSwckC_Qf>zby#wfyXbkQ*@ucO*T(3Oy3LKjYZ>-gC@>g1Wb+v-X(8cAggWcemB@ zWApN<+ozyaTHRWam@}P?ZKI0(`zM}v45o!`Fnc1qej@YI$tQPQJimDJ>YCRI0BpnU Aga7~l diff --git a/StgSharp.C/x64/Debug/mat3.obj b/StgSharp.C/x64/Debug/mat3.obj index cc0c501b56a4d31064a868ef03eadd734367dda2..482da0b00abbd9d13c03a8ed13d3f19c10d085fa 100644 GIT binary patch delta 1540 zcmcJNYix^A7{||fXET*$>t5#8>qb~N(RDgXr(0z~%rKXcM%u3JE;Z}4Z)+^Gxy)^3 z;utf_QbSz!#d1i-WFf{72@46au<*eWAy(l76P)wDw%YIs{m_&ApZENp|9SpTXMpJp zFyZ!HDZp43ThJ2TJ!<@E7X0`X7U#K&T=`%E7%BF%xPMeO%QUfQsnp3dvZzg(%$#CT zpEQ9UQkjMx%VpE)Q7Kc0HV_U(FJzL4jI4BHW(Lp_OaqIa%d~uL1g#;LJX(~VnF-Q` z;xf6JImeM>aq$FUHYb|}jK{%&F@!T2m&EE|NFxEYOBMKDoD)JLo;78^ z0mk7DyGayP)Bm)*b=C?auDWO{FMKi)&v4CU;1^Wm8H*}6s^*L)+*Pp1k;j2(AQrbm z00hZhm|wtwD56~()U3rGASOy08LknTwrX&UyA;CLgl5PZM%puYD@Zyxs8JH_XCb6> zWXM^Nb8IL{;xz@)bXdYAG4K=b)8`$L~{*h#A$dzm@=-ek}*(<&hOTne*vAP%Qzeq43SG7P8K#s*g<~x zhqTJrvyy=_RKM>Jt>C|FrLDdj5~Ylo*Y!#C&EgE19rNYLNPr@16cvW9!_R7Usz)CZ zchqklSI~X*j55b}{0dk1pf^XNdVlA_mUoe@2Nr*A4%9BV^w!cG7S`qT7NxAR#x`Cq zUzewypWv?BVk(>HVFJe7_9;2r0+z(*)~Qo-AMR{cYbVsNJ&4~NTG!%CZ7)pSo7QtO zbxwzSO>KL`>d*J(_l{-9+i!nX}#C;Ool*AK{ zNHiu{!Y&f2nq4+Zm$6HYR5`Z`b08X$iUZR0DXAH0K!Y(|Bzh&)aJ4yX4OwMD{wWz5 zAcZex$_&H{61B^gvY0{HfuN{J08G|0dwGRn1qcAX!bD`3uMuE6x4%#BPxO#zKwbyq zkWmqe-@6pcS(_IXDj0)aDyqX`Fv4JnH}DwBLW2;@iDD|FRzbmi4C<7~ncf8@5bBu3 z=msrRFn7(l{(<#t{6+I+VLt&4_GH2uCnYtN)2~cxIQEbZkarNo>D7 zOnQMYSr2JTd8LZe&d8c!9GtCD)^p z)0i>GJ_tV}n{$jKd+;(aS7>Qt2YBlfEqy+PEbtN%v+@#_JomWtE z*QUf4`7Jh_7JFE)IiuNZQvYCtJsV}u$0+u@<{87R#?t_doyK92`^F6I?P4WNBzi6eY?-2xMoE%uUfY?q4jJrx?M|C}DzFS_s z`T6+B(`^q!KQ66p+8tIj(DLr=o%bG5bYuTWwm9~~gDacLFQ=FKjJA4Cti3v#*V^E;!n+rrGnaaE$^{HF(6m70jAkm2|SM<05U z+*zD_L^s&trjVgaBgowPwNKW2Dr>RXKH4$mU+dO4->|Hoc-NKGIPY4EA;+0rS}%W` UKGK~hU71Sdv`JmeGxyk{Z%B%ay8r+H diff --git a/StgSharp.C/x64/Debug/mat4.obj b/StgSharp.C/x64/Debug/mat4.obj index 9d1dd289846999270f4f1c0e6a589d937003a3ba..4beaad2b20c6df545de78a8f65008eb7e1b2719b 100644 GIT binary patch delta 1344 zcmZ4XifP#^CXSRgV+N;crHqXn$(#~Pg&CkAGcPSaCqJD*l7U@tf$-*L&LCl?MZ%M> z%VaUl6Q1lWYs|U?sFrc^9a&icS3gH5A6Et=pi+<^6G(9KQCT6TCBl<$%IbnuvV#RR zBP5HYRnHYp7?B~}ASn0(7{m~vqRjM+5(WXF*axuKWWhS&$yPNAo5KqI7#aUhURq>N zl4j%04#jU68J|toEhSB(@Z>cO3Y$-q<}x!1PByEw1d;`nqV0hlvt9PpT{5! zlwtseA;^l&ELFQ08HFeBuO`tqo2_c{7#W3t8bv4XtJNYt3^xnb$ulv2n{3!Xs*P(J zW-~IfPWEWBv4w@;o1O*XcRAK~7j)H=aAliJe$%~2c z?PQ)-n|KU^Rsap+MmJ~yJRnPq!3H6jYzP)WL=dV~%Uc_m7(Yzb=)hqWB$1XN+)Tbz zhdUN9*S{#dzH3{C%IPd-3$Z`b*co2E<61ON{NdScr{BE!xS_5j-1mQP%-Z&#O`Q+l zw&p$7v*kQK?~7o7%Zs(&m#`^IK4EJ#bKza|(0NH)s8Q&=ePC?X{?h^I8k0oc^e*aI~v+l0v(#aDN{>q~*95ygmuu$=JlL~{DaMv=siwA8SJmVBX5}abIwSqR^ U_xvMJ`DWEF?rEE~dw;6~06cVU=l}o! delta 1344 zcmbV~ZAep57{|}KvwRJAon~I!<{N05OSdp*WoDTgxerD~ufyh?E8Sh&U0^RN$$C+Q z;1o$_S(ynXS+^oq7-Egkw6_mo1tALQ&@2iy@}=Wh=qiHjemlSOJpbqX|M#hPQ1uSV zBloBR?CKrW-Sp6SE_lX(pP$~4#}=?U5Cq)mHij?r%ob5k8T5ML9_k5$)`%5zI&m#T z@5EwZnre0GhBP3@rBjfag6Of>kLqMlmpGPGx)T^B5zeubzFNsbv{m9wP86CtStau+ zJA-N@N&-DFlp#;4jOt>LQo2}xrHO`Bn&%f541k6$uoN29OTj$gK`%q&(&Yjyjl0C& z8&;=p1QLwf7^DfY2Fh@`S}j*QTg+Mx_~J_$nhaSoWhyQ-9!8?wp(TNlq)_2f=#LA- z_|ecvh<)>+;S~_3@Qo4Wt02uM=5F^ARiw)@s=Cdp>YkUuS5Zxb0088x+IEYzL28^v z4~)r+Cb44`EYRk0zz@)LACB0GOnO~D2ZWe?A`H>RB9wF}gx|bR1>qRFVp=t;W(A*O z9)Pe1#ad?9C_>juL-;3_LILzb2}Mfii;P79CB8Tg7354g2D6bhYspJ%@k_gip+b#< z5Tgr`6O!UW;t3JDkT|?lH2r*0&7bzo7Wi*-pG(S`8tEGLEcR=}gVcT1*-(@sol52%J&om~>?O zXnH0iPL9`+rkxS-El1W<(1CocE7X4oHDDpn--T+YgX9!M$VEAxfSDik>!_>NQVI^D zsN;VbG&;g;#c;{*PJu@>a)3uS@3xyF2c-4-9;6D(1Fi zO;+w`JeGayME9W8&?8gozZ!?)TJH5Vj?~Q!59)Q>RgoBAM~~``Zjx_0-`vq)t!l_^ zfWxu(nHD_uO_?~7V7qPCg037#21wda^8zoQs2BU)fI9q_#J$+gn){0is3a^~o>NFSom${V?xK>du4F V+5G!V{`A}zxe4cld`#u{$RFY)kFo#& diff --git a/StgSharp.C/x64/Debug/stb_image.obj b/StgSharp.C/x64/Debug/stb_image.obj index d0ce7c53e37abffa64b3b42ce0254b41c85e2514..9557c1edbaa4314ca693d915f5beab61056680d3 100644 GIT binary patch delta 76 zcmX@yD|@(CmLsLDjK!&1DPtqYw7UZRzi-v+UiFF%u9o fZ(nzp`Ny delta 76 zcmX@yD|@(CmLsLDjOEF;2k9F*rrj0jcGvTm@vzu$_Tx*^%O}rOX-G%^Y{Jg~rIICF diff --git a/StgSharp.C/x64/Debug/string.obj b/StgSharp.C/x64/Debug/string.obj index 55835a0d801b4ab2adb623397b4c019aa60b3433..2f7b45679fe9cb2dcfa7f876bb703b8037bb1d77 100644 GIT binary patch delta 268 zcmbO~i)sEWCXSRgeg>y%rHqXn$C;Uy3QxYsEW)%vc=L1S5Mic8!jo;qvzX=yPhKf* z%(O&!@;z~F)+NFW3`~W+z$43^WOB&O9l$$&V!Gf^;`ZsRM1Fyh>^b(DKaz(wi8W z=K)o%5m(r(D*MfWQF^mXTr`((|LmNKLjC&tf_uHF>4D zG1EDz$@j#ySq#l=}j}L<*1G^wlnVn=EGteZkIrF60CO?v#3)0;vr4F=x@+zq%K+87=NN-|f zJ^@sianW4D-R^oGGaeTE&3=4IdimtJD$EQFlP5SvO)g;O+Wam< zfratWWd2-lM()kgx&N63o=QA#tePu%;~3A&cfOfjhbLzhDsY(Oo_cd`Wt+(6Nrk=A E0E6gWx&QzG diff --git a/StgSharp.C/x64/Debug/vc143.idb b/StgSharp.C/x64/Debug/vc143.idb index cf2749cb4da642e55062a8b6a24835741a1be4ce..f68c3b2fc3b29a8726b262469675b341f763f5a9 100644 GIT binary patch literal 347136 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≤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 PE3u&6Cs*Y}xBLG9vOPHw diff --git a/StgSharp.C/x64/Debug/vector.obj b/StgSharp.C/x64/Debug/vector.obj index ce3dbac8aa371800e2eb7ce3cc7c753a6c170d9d..62685488d3274002369cd1a9fdeb0d4635011aad 100644 GIT binary patch delta 444 zcmey^%=EFDi6f|7WPL>y!oqSu28_Z(@^EkwXn3f1nmJ!zl3$lX+v&99N<_J%&71v^& z12&~WTxRkKaWRnK193~RAjf2o;D2$U$vzT#Oe=*a*GT9v18o5ta6)1-Gf*d3NtGlQ z$YpJkOMouhtRuCFk!har<_FSiZ5fYj?u&fPDbWA>R_zY+V5iNkTcT?-Z%A!!Ox9** zJT!T2nw8rsp#6S~#rdU0$*By&41$6jObiSV!IH$H^wbgt380_=0|UcKu*$^voYcJZ zl8pG`LIz2o%mT2?WZiU0bBKbJ{F3;BqWqN7b@2Q{qeX~^NbqN5xl8#9L delta 444 zcmey^%=EFDi6fZyOKqOaoF&9`N^0_dQAwsVQj?{`vRF?@F)%Pq zekiRld8L>D>p38gak9L)?Bv^G++ZFPn8zV5#B@$-vW&PcSdbkom@O{AbWCb;t+*EJ zF|a8O;xdy@h>L*)ABbCm1vw^z1pkW*P4l1+?Ffu{gi9C^?lum_bmGgNcCwB3P1Gl%86`AOREGX%114l3x;EP?Voinp^@_;DDqxGp`J)9c=0ah~CQw66qo<;nm2db={IjaZm25>_x;}+v$j3xcJ0Bl Wt8a_^pV!B5Ew0fwd9zgJbqN4gCzBum diff --git a/StgSharp.C/x64/Debug/vector_dot.obj b/StgSharp.C/x64/Debug/vector_dot.obj index aef0a7b196add4a8ca37b2e7abd74ff913e1a59b..61d855a23312b0ba47df2eb5ba92643c6e0b55ff 100644 GIT binary patch delta 1363 zcmb`FZAep57{|{!)0{8Sw!3s{cV5jz)6%Aqwn{NGCK!p1K&feNrpr0In`WgBKUj*= zpkpRzvPz*Bi0qnJ2!@p@SP}F=q_h_h6-@~mh}Al~Yhhmsq4Vwh_&?9{e_p2N(eykL zYR@Y`>bbDu9^rm(MK=Y0y^^vbW2x~32n1eY8=(Sl*mzpUs!cjJv!JTPP+jY8uRn{;NdfvDp!3XOF(5g)n(Mqyp3B_N6y z#;+1ei7*_mg!aQ@xHqg;&`GkZXogd7)U;BQ zO2&h@S7n0;dSL4*CGri%$<_Y*Zj)Zsuu@lOHnKnj#9|u+zy%A+Oh8HqLspSQY#f3b zt+C>GsgBp>J1NJo-4M>=VUse}mzS7X5>{?B=>SDSXNbs|?9l28OFZP_%rXRLu&UDS zCF>tv#3UhK)m2DmDCg}7Njgs+k;>~(2VpOd} z@PCX7GpwBJseT3#l;En`-LY_u^ZHPmjo=r&v(9bk|IZ6AR0eQMbr%ItfGzdPHCvpm z_Y=T*Y;RCnoZYG6pVuHm?$cUzZ_ID#ytlvX*mYm-9ZSfLZDhx;!!#F{u-e~yCrW&; zaU)FPh8rg#^upauYwiWdnQ1Pjc^rwFrk>{XsTB&nAkqI@s~5mhYoz5qjemgY;WUj$ z%fJQ4wZ*Y}L)}c(1LpG$>G8Xkx%RC0`YTcgoQy~a-gC~7{qXYDB}Gb~{pPwt^^WCv7U3Fwe`K0vD@PSj@8|$TrpOVspvH$=8 delta 1325 zcmb_aZAep57(VALYqLq4nyagKnQ!2kAC6QrRar0xE;x@aRAC=F^2BZ8r71?glUR=wD* zlhzT4SNlPo+Q$VpsaJ`hR0P}Ao*>tRljjVq(S%887g3;2lkXYei%_n)xYTIkqLBxZ zDr1gobrPy47G`PPNjC%e+FDgOC30LOH$}D>tY{u(hXe7Ca19aVzYGV1!QZ9|7Ku^Q zh~AVK02BT#coW*Me|VRN3@U13iOPi`2rq&2>N>U$AR z2MSM2?F3_}-=)Jc*j1xi+eb&$<1$08)yyLWQYxD;LQ`P2$%4EoqNSUNp)S%emuD`` zDK?0_9WGSR@)s~3f=-J|Z_ut%xk}Tf>y1%fA0sTaE+F_Vq?CPcoc@=_O4?X#AvU%e zj3uHMDOHn*5Ov3uSb5|_i6Jgj_)s=V@Cdxz{WmX3ds;Cb08*(VP6pyCef}{8(DG`b zx$*%fUzJc%y*k1vhG6BX#}c!}fV`;3cVZ5|4`;ACgWyqEUh~7y|4#=#l&OTVnqv}- zz*ei9vBmebatVG9<8?ZlYdSstb-D%Q$JID1rcDcipn7pl!tJ&VRF|})A71RIl6kTsDYjz;+As9f H9}oHlfy{|l diff --git a/StgSharp.C/x64/Release/StgSharp.C.dll.recipe b/StgSharp.C/x64/Release/StgSharp.C.dll.recipe new file mode 100644 index 00000000..eefe6ff0 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.dll.recipe @@ -0,0 +1,11 @@ + + + + + C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.dll + + + + + + \ No newline at end of file diff --git a/StgSharp.C/x64/Release/StgSharp.C.iobj b/StgSharp.C/x64/Release/StgSharp.C.iobj new file mode 100644 index 0000000000000000000000000000000000000000..eb8ef5a57f4445ba765b6633657a7a5896b00c35 GIT binary patch literal 823261 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 z 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

asT$D^@9*M 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 literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..0e73f0691b61297ee5f7741b58a36843a0aee66b GIT binary patch literal 9882 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 literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/CL.write.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..8fbf857c2b826074fe385d132b88921e816d1a16 GIT binary patch literal 7950 zcmeHMO-sW-5Pe<+Z~hI7)gt08ZES3bO-*A_2=?m9W2xfRyGQ?@cYlKVCW~wu)>{fQ zkVD&KcUj)NoqhAspYI36xIl>+CMb|1L&T8@-(%cj!Lc0ooIl*GU!Fg{)+PEl!k8-~ zB%HtE+BxS7KAqsW`ji~WxziMv7;$FIH7TDN$E`TXL7E z+Ev~Tu&)f=9nLTy%AD4SMS@lAS`uxaGpDp-PRv6?*gfMJaZfAc+Poqr+bOQew|J)b z#;Y>V@GR=XCY;GVmfr=xM=BYV(=DhU8c)|@liRKDbRD*VN^BB8hFH<(1Z6_4)X1Qq ztVbf9_rt|vxxjf=utKQY6LsV(~RxbZ15SLHRPen!*RG>(XLk1>uy^eJ{$R2onM=s)G*J#f0JZ( literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog new file mode 100644 index 00000000..26dad3a0 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.tlog/Cl.items.tlog @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\dllmain.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\dllmain.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\intrinsic.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\intrinsic.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat2.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat2.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat3.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat3.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\mat4.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\mat4.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\stb_image.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\stb_image.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\StgSharpC.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\StgSharpC.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\hash.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\string.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\string.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\vector.obj +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\vector_dot.c;D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\x64\Release\vector_dot.obj diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate b/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate new file mode 100644 index 00000000..fba99f0f --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharp.C.tlog/StgSharp.C.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.41.34120:TargetPlatformVersion=10.0.22621.0: +Release|x64|C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\| diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.command.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..4c28b9c268fcead47c5ad89741a982017b5521a4 GIT binary patch literal 4632 zcmeI0yN=UP5Qc{qiH?dY+J=gRg%v{SVkdC|PGVwbcOxv)AtWTq)q-fLwxOiuMR*II zfSyMHzW*E|Uvi_2C5r4G&&-)KGoH(T{QK7{>s!}yo7&hii*05-C}W=cwy+f1+?Md~ zUSEB9|K;aZZm0IZhDi1-fe#Yjm-Qp($Eb03E7q!c{ZIKDHqHZOOhzASTE=+0)%Ti}>E7ks3_SZRUZ>#bV=ZqCY+;F3+*A#6K82u+av$a@juznCOj=` z>h?(Upr*ysdc-QLaTYFq{gN#+P7HXHRe#ph5KF3@|B>Ue5^I&t@AaLk|6=sFP#SieCm=Ns^!#WvFcboAaVW)nGY)z;X+S|kqD_R$*yt}&zcw-T$j95L+h_ny_tR6SzmL6B>Sh8pgy(MxzTz*TsNNE&nUmIBPtc(| z^Sg;oFR0aT6;)pK`+#_V E0R6||aR2}S literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog b/StgSharp.C/x64/Release/StgSharp.C.tlog/link.read.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..6889fc6a311b271a2ad8a16f1976502d2f574577 GIT binary patch literal 8736 zcmdU#&2G~`6ooHaBz8PNm#`pe(-u|i@*h(t4*p3>Wsxl_mQ_J)*|X&R*z*X$cV^@| zNfQAQQfE{-_Soa`xie?(+;gYDe!jDzy|UWomRM=2W!B?PLV0MF72M11Ezh6c-hBG_ z?Z-`RC-%a|)a==W=Tqt~cwTbVwPSbG+{tO_wT*1RlQDHtu50`9=HmU=58vmHZfn=J zZ=px+g>|S~(`HKjm7P*fd9QDugGD$5VHyF>waplXQ2X=BUfLNWpTiKbqz5y^72mrv z%3@;&KJ{T#Xlyuye(LO)Mu%H{tvRoA!S5hC3&fZbKNK5dJZ|~DxR~y7pGAjTYg^ye za9kEl@Hw&dye!yULF1dNKE9BznMBw7OBkc*Cc|6C#+*&;YgXC}I~p6F*kkNcOz5My z3HJ4vBS&{}T*37-yRr*b?&s87xz$3gtXMOS?2>ZHm14zXetjJ0OC9cX@XlS{?ebjZ znn-iTZ?l$We0k(JkrD^WllvAP9@!5I*YQRj~MHW^br&-JYPSwlz#)1E^K90wRU4V0qhP+kD@gP5}ljE{szfz9J zhTV)}JjnN{{CLoBYUNFh9LIXKiGH8b56g=CyFcOaq{X zuYJ6NV~l1vLIWn0DwJSKN%OiQZcBJxlc&+{UzaQ8Zc3MpPzFhFXg_C3YuYFDs$1Ei z8BhG(6Lx?)9Lfisy0coViNF_bpkQyRx#9+Nbp8Ay$m3S@DjtWpmEO#y1XU%i`$E0sVNt=R&ut z$t^aFXgH-2{1-JD#u)8dBgH<1Y0AHjU|akaX};&oA$bVxylB_OTiwpq!<_s7d1s+1 zndJ?CDu-_$cXoY9!T&|bCylT|T3o*En%4X{wH_#}6}GW+SC?yCQ>>wKMM@O1GGyLSp^UXuCHBqP^x^*HbLzCG z9rf@G)yF=-cZ@w}w6ERj=U7RJbfT`>SbF$GjGdlNk8YmtKH{~Rt76v?LcGTc@O8wD z@ITi9^N4*dJ+3Um4hSO;a85Mh7FP8mF*$w6H^$Vst?&88^cr{5JKXlRwKRd_mO-DM=#+bTE=$5`QXBqp1mo_1fpBy%{PF|)7P5*VtE@NEcQ&1@d zVYUCaLUdGOfhEH0 NZ)F%@F|}prz5#JZ;E(_S literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/StgSharpC.log b/StgSharp.C/x64/Release/StgSharpC.log new file mode 100644 index 00000000..0a804d93 --- /dev/null +++ b/StgSharp.C/x64/Release/StgSharpC.log @@ -0,0 +1,4371 @@ +C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(517,5): warning MSB8004: Output 目录未以斜杠结尾。 此生成实例将添加斜杠,因为必须有这个斜杠才能正确计算 Output 目录。 + hash.c +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(30,43): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(31,50): warning C4244: “函数”: 从“uint64_t”转换到“unsigned char”,可能丢失数据 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,15): warning C4090: “初始化”: 不同的“const”限定符 +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.C\hash.c(7,34): warning C4090: “初始化”: 不同的“const”限定符 + 正在启动传递 1 + 已处理 /DEFAULTLIB: MSVCRT + 已处理 /DEFAULTLIB: OLDNAMES + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 已找到 glfwWindowHint + 已在 StgSharpC.obj 中引用 + 已加载 glfw3.lib(window.obj) + 已处理 /DEFAULTLIB: uuid.lib + 已找到 glfwGetProcAddress + 已在 StgSharpC.obj 中引用 + 已加载 glfw3.lib(context.obj) + 已找到 _glfwPlatformGetTls + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已加载 glfw3.lib(win32_thread.obj) + 已找到 _glfwInputKey + 已在 glfw3.lib(window.obj) 中引用 + 已加载 glfw3.lib(input.obj) + 已找到 _glfwInputError + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已加载 glfw3.lib(init.obj) + 已找到 _glfwPlatformGetTimerValue + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(win32_time.obj) + 已找到 _glfwSelectPlatform + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(platform.obj) + 已找到 _glfwFreeMonitor + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(monitor.obj) + 已找到 _glfwTerminateVulkan + 已在 glfw3.lib(init.obj) 中引用 + 已加载 glfw3.lib(vulkan.obj) + 已找到 _glfwConnectWin32 + 已在 glfw3.lib(platform.obj) 中引用 + 已加载 glfw3.lib(win32_init.obj) + 已找到 _glfwConnectNull + 已在 glfw3.lib(platform.obj) 中引用 + 已加载 glfw3.lib(null_init.obj) + 已找到 _glfwPlatformLoadModule + 已在 glfw3.lib(vulkan.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_module.obj) + 已找到 _glfwPollMonitorsWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_monitor.obj) + 已找到 _glfwCreateWindowWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_window.obj) + 已找到 _glfwInitJoysticksWin32 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(win32_joystick.obj) + 已找到 _glfwTerminateWGL + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 glfw3.lib(wgl_context.obj) + 已找到 _glfwTerminateEGL + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(egl_context.obj) + 已找到 _glfwTerminateOSMesa + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(osmesa_context.obj) + 已找到 _glfwPollMonitorsNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_monitor.obj) + 已找到 _glfwCreateWindowNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_window.obj) + 已找到 _glfwInitJoysticksNull + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 glfw3.lib(null_joystick.obj) + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __security_check_cookie + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 dllmain.obj 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 MSVCRT.lib(amdsecgs.obj) + 已找到 __avx10_version + 已在 intrinsic.obj 中引用 + 已加载 MSVCRT.lib(cpu_disp.obj) + 已找到 __report_rangecheckfailure + 已在 StgSharpC.obj 中引用 + 已加载 MSVCRT.lib(gs_report.obj) + 已找到 _DllMainCRTStartup + 已加载 MSVCRT.lib(dll_dllmain.obj) + 已找到 __GSHandlerCheck + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 MSVCRT.lib(gshandler.obj) + 已找到 __security_cookie + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 glfw3.lib(osmesa_context.obj) 中引用 + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 MSVCRT.lib(amdsecgs.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 MSVCRT.lib(gs_cookie.obj) + 已找到 _fltused + 已在 glfw3.lib(null_window.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(monitor.obj) 中引用 + 已加载 MSVCRT.lib(fltused.obj) + 已找到 __security_init_cookie + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(gs_support.obj) + 已找到 "void __cdecl __scrt_initialize_type_info(void)" (?__scrt_initialize_type_info@@YAXXZ) + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(tncleanup.obj) + 已找到 __scrt_initialize_default_local_stdio_options + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(default_local_stdio_options.obj) + 已找到 __scrt_is_nonwritable_in_current_image + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(utility.obj) + 已找到 __scrt_get_dyn_tls_init_callback + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(dyn_tls_init.obj) + 已找到 __scrt_fastfail + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(utility_desktop.obj) + 已找到 _RTC_Initialize + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(initsect.obj) + 已找到 __xi_a + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 MSVCRT.lib(initializers.obj) + 已处理 /DEFAULTLIB: kernel32.lib + 已处理 /DISALLOWLIB: msvcrtd.lib + 已处理 /DISALLOWLIB: libcmt.lib + 已处理 /DISALLOWLIB: libcmtd.lib + 已处理 /DEFAULTLIB: vcruntime.lib + 已处理 /DISALLOWLIB: vcruntimed.lib + 已处理 /DISALLOWLIB: libvcruntime.lib + 已处理 /DISALLOWLIB: libvcruntimed.lib + 已处理 /DEFAULTLIB: ucrt.lib + 已处理 /DISALLOWLIB: ucrtd.lib + 已处理 /DISALLOWLIB: libucrt.lib + 已处理 /DISALLOWLIB: libucrtd.lib + 已找到 __guard_dispatch_icall_fptr + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已在 MSVCRT.lib(initsect.obj) 中引用 + 已加载 MSVCRT.lib(guard_support.obj) + 已找到 _get_startup_argv_mode + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(argv_mode.obj) + 已找到 __scrt_is_ucrt_dll_in_use + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 MSVCRT.lib(ucrt_detection.obj) + 已找到 _guard_dispatch_icall_nop + 已在 MSVCRT.lib(guard_support.obj) 中引用 + 已加载 MSVCRT.lib(guard_dispatch.obj) + 已找到 _guard_xfg_dispatch_icall_nop + 已在 MSVCRT.lib(guard_support.obj) 中引用 + 已加载 MSVCRT.lib(guard_xfg_dispatch.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已找到 memset + 已在 glfw3.lib(null_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 strstr + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 memcpy + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 memmove + 已在 glfw3.lib(monitor.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __C_specific_handler + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __std_type_info_destroy_list + 已在 MSVCRT.lib(tncleanup.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __current_exception + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __current_exception_context + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __IMPORT_DESCRIPTOR_VCRUNTIME140 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 __NULL_IMPORT_DESCRIPTOR + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 已找到 VCRUNTIME140_NULL_THUNK_DATA + 已在 vcruntime.lib(VCRUNTIME140.dll) 中引用 + 已加载 vcruntime.lib(VCRUNTIME140.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已找到 __imp_ftell + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_ferror + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fclose + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_realloc + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_fseek + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fgetc + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strncmp + 已在 glfw3.lib(egl_context.obj) 中引用 + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(context.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_fopen_s + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strtol + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __imp_ldexp + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 __imp_free + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(null_init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_ungetc + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_feof + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_fread + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_malloc + 已在 stb_image.obj 中引用 + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __imp_strcpy_s + 已在 StgSharpC.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strncpy + 已在 glfw3.lib(window.obj) 中引用 + 已在 glfw3.lib(input.obj) 中引用 + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp___stdio_common_vsscanf + 已在 glfw3.lib(context.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_strcspn + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strspn + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp_strtoul + 已在 glfw3.lib(input.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __imp_strtok + 已在 glfw3.lib(init.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __imp___stdio_common_vsprintf + 已在 glfw3.lib(init.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __imp_qsort + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 powf + 已在 glfw3.lib(monitor.obj) 中引用 + 已在 glfw3.lib(null_monitor.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 strcmp + 已在 glfw3.lib(vulkan.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 _initterm + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initterm_e + 已在 MSVCRT.lib(dll_dllmain.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _seh_filter_dll + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _configure_narrow_argv + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initialize_narrow_environment + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _initialize_onexit_table + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _register_onexit_function + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _execute_onexit_table + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _crt_atexit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _crt_at_quick_exit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 _cexit + 已在 MSVCRT.lib(utility.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 terminate + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-stdio-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-heap-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-string-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-convert-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-math-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-utility-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 __IMPORT_DESCRIPTOR_api-ms-win-crt-runtime-l1-1-0 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 已找到 api-ms-win-crt-stdio-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + 已找到 api-ms-win-crt-heap-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + 已找到 api-ms-win-crt-string-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + 已找到 api-ms-win-crt-convert-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已找到 api-ms-win-crt-math-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 已找到 api-ms-win-crt-utility-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + 已找到 api-ms-win-crt-runtime-l1-1-0_NULL_THUNK_DATA + 已在 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中引用 + 已加载 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 已找到 __imp_InitializeCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_EnterCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_LeaveCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_DeleteCriticalSection + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsAlloc + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsGetValue + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsSetValue + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TlsFree + 已在 glfw3.lib(win32_thread.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_QueryPerformanceCounter + 已在 glfw3.lib(win32_time.obj) 中引用 + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_QueryPerformanceFrequency + 已在 glfw3.lib(win32_time.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_VerSetConditionMask + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetLastError + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetModuleHandleExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_FormatMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_MultiByteToWideChar + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_WideCharToMultiByte + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_FreeLibrary + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetProcAddress + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_LoadLibraryA + 已在 glfw3.lib(win32_module.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetModuleHandleW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalAlloc + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalUnlock + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalLock + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GlobalFree + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_SetThreadExecutionState + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlCaptureContext + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlLookupFunctionEntry + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_RtlVirtualUnwind + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_UnhandledExceptionFilter + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_SetUnhandledExceptionFilter + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentProcess + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_TerminateProcess + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_IsProcessorFeaturePresent + 已在 MSVCRT.lib(gs_report.obj) 中引用 + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentProcessId + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetCurrentThreadId + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetSystemTimeAsFileTime + 已在 MSVCRT.lib(gs_support.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_InitializeSListHead + 已在 MSVCRT.lib(tncleanup.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_IsDebuggerPresent + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __imp_GetStartupInfoW + 已在 MSVCRT.lib(utility_desktop.obj) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 __IMPORT_DESCRIPTOR_KERNEL32 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 已找到 KERNEL32_NULL_THUNK_DATA + 已在 kernel32.lib(KERNEL32.dll) 中引用 + 已加载 kernel32.lib(KERNEL32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 已找到 __imp_TranslateMessage + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DispatchMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PeekMessageW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterDeviceNotificationW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_UnregisterDeviceNotification + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DefWindowProcW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_UnregisterClassW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterClassExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CreateWindowExW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DestroyWindow + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ShowWindow + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ToUnicode + 已在 glfw3.lib(win32_init.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MapVirtualKeyW + 已在 glfw3.lib(win32_init.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ReleaseDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ChangeDisplaySettingsExW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplaySettingsW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplaySettingsExW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplayDevicesW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetMonitorInfoW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EnumDisplayMonitors + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_TrackMouseEvent + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetMessageTime + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SendMessageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PostMessageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_WaitMessage + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetLayeredWindowAttributes + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetLayeredWindowAttributes + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_FlashWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MoveWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowPlacement + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowPlacement + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsWindowVisible + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsIconic + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_BringWindowToTop + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_IsZoomed + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_OpenClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CloseClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetClipboardData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClipboardData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_EmptyClipboard + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetFocus + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetActiveWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetKeyState + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCapture + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ReleaseCapture + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MsgWaitForMultipleObjects + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetSystemMetrics + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetForegroundWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetPropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetPropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RemovePropW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowTextW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClientRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_AdjustWindowRectEx + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCursorPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetCursor + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetCursorPos + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ClientToScreen + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ScreenToClient + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_WindowFromPoint + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_ClipCursor + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_OffsetRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_PtInRect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetWindowLongW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SetWindowLongW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetClassLongPtrW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_LoadCursorW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_DestroyIcon + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_LoadImageW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_CreateIconIndirect + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_SystemParametersInfoW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_MonitorFromWindow + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputData + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_RegisterRawInputDevices + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputDeviceInfoA + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __imp_GetRawInputDeviceList + 已在 glfw3.lib(win32_joystick.obj) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 __IMPORT_DESCRIPTOR_USER32 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已在 user32.lib(USER32.dll) 中引用 + 已加载 user32.lib(USER32.dll) + 已找到 USER32_NULL_THUNK_DATA + 已在 user32.lib(USER32.dll) 中引用 + 已加载 user32.lib(USER32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 已找到 __imp_CreateDCW + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DeleteDC + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_GetDeviceCaps + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_GetDeviceGammaRamp + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SetDeviceGammaRamp + 已在 glfw3.lib(win32_monitor.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateBitmap + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateRectRgn + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DeleteObject + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_CreateDIBSection + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_ChoosePixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_DescribePixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SetPixelFormat + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __imp_SwapBuffers + 已在 glfw3.lib(wgl_context.obj) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 __IMPORT_DESCRIPTOR_GDI32 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已在 gdi32.lib(GDI32.dll) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 已找到 GDI32_NULL_THUNK_DATA + 已在 gdi32.lib(GDI32.dll) 中引用 + 已加载 gdi32.lib(GDI32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 已找到 __imp_DragQueryFileW + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragQueryPoint + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragFinish + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __imp_DragAcceptFiles + 已在 glfw3.lib(win32_window.obj) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 __IMPORT_DESCRIPTOR_SHELL32 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已在 shell32.lib(SHELL32.dll) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 已找到 SHELL32_NULL_THUNK_DATA + 已在 shell32.lib(SHELL32.dll) 中引用 + 已加载 shell32.lib(SHELL32.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 已完成库搜索 + 正在生成 .exp 文件 + 正在创建库 C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.lib 和对象 C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.exp + 已完成 .exp 文件生成 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __scrt_stub_for_acrt_initialize + 已加载 MSVCRT.lib(ucrt_stubs.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 已完成传递 1 + 已丢弃 "unsigned __int64 `__local_stdio_printf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_scanf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 "`string'" (??_C@_0BA@KMGHNAFM@Invalid?5time?5?$CFf@)(从 glfw3.lib(input.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(input.obj) 中) + 已丢弃 __real@7fefffffffffffff(从 glfw3.lib(input.obj) 中) + 已丢弃 "`string'" (??_C@_07CAIJGPF@file?3?1?1@)(从 glfw3.lib(init.obj) 中) + 已丢弃 "`string'" (??_C@_02PCIJFNDE@?$AN?6@)(从 glfw3.lib(init.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(monitor.obj) 中) + 已丢弃 "`string'" (??_C@_0P@IENCOMCD@VK_KHR_surface@)(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 "`string'" (??_C@_0BF@COCMEDFO@VK_KHR_win32_surface@)(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@42c00000(从 glfw3.lib(win32_window.obj) 中) + 已丢弃 __real@3f000000(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 __real@3f800000(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 "`string'" (??_C@_07PBILKAFL@Success@)(从 glfw3.lib(egl_context.obj) 中) + 已丢弃 __real@3f000000(从 glfw3.lib(null_monitor.obj) 中) + 已丢弃 __real@477fff00(从 glfw3.lib(null_monitor.obj) 中) + 已丢弃 "`string'" (??_C@_0BE@IGCIBFAF@Invalid?5scancode?5?$CFi@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01IHBHIGKO@?0@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01MCMALHOG@a@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01OJONOECF@b@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01FJMABOPO@x@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_01EANLCPLP@y@)(从 glfw3.lib(null_window.obj) 中) + 已丢弃 "`string'" (??_C@_00CNPNBAHC@@)(从 glfw3.lib(null_joystick.obj) 中) + 已丢弃 __CastGuardVftablesStart(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __CastGuardVftablesEnd(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.pdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __imp___current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp___current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp_ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 __imp_strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __imp__register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 glfw3.lib(init.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃“.xdata”(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _glfwEncodeUTF8(从 glfw3.lib(init.obj) 中) + 已丢弃 _glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 __local_stdio_printf_options(从 glfw3.lib(win32_joystick.obj) 中) + 已丢弃 __report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 "int __cdecl dllmain_raw(struct HINSTANCE__ * const,unsigned long,void * const)" (?dllmain_raw@@YAHQEAUHINSTANCE__@@KQEAX@Z)(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 _CRT_INIT(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 __get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 __local_stdio_printf_options(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __local_stdio_scanf_options(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "struct _IMAGE_SECTION_HEADER * __cdecl find_pe_section(unsigned char * const,unsigned __int64)" (?find_pe_section@@YAPEAU_IMAGE_SECTION_HEADER@@QEAE_K@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "bool __cdecl is_potentially_valid_image_base(void * const)" (?is_potentially_valid_image_base@@YA_NQEAX@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 NtCurrentTeb(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 _onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 at_quick_exit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 __scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_winrt(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_set_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 ReadNoFence64(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 ReadPointerNoFence(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_set_user_handler(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_icall_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_rf_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 _register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __guard_xfg_check_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __guard_xfg_dispatch_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __guard_xfg_table_dispatch_icall_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 正在生成代码 + 已完成代码的生成 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 __chkstk + 已在 stb_image.obj 中引用 + 已加载 MSVCRT.lib(chkstk.obj) + 已找到 _tls_index + 已在 stb_image.obj 中引用 + 已加载 MSVCRT.lib(tlssup.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已找到 pow + 已在 stb_image.obj 中引用 + 已加载 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64\ucrt.lib: + 已完成库搜索 + 正在搜索库 + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\kernel32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\user32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\gdi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\shell32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib: + 正在搜索 C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib: + 正在搜索 glfw3.lib: + 正在搜索 glfw3dll.lib: + 正在搜索 glfw3_mt.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\MSVCRT.lib: + 已找到 _load_config_used + 已加载 MSVCRT.lib(loadcfg.obj) + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib: + 正在搜索 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\vcruntime.lib: + 已找到 __guard_memcpy_fptr + 已在 MSVCRT.lib(loadcfg.obj) 中引用 + 已加载 vcruntime.lib(softmemtag.obj) + 已完成库搜索 + 未使用的库: + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\opengl32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\winspool.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\comdlg32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\advapi32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\ole32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\oleaut32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\uuid.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbc32.lib + C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64\odbccp32.lib + glfw3dll.lib + glfw3_mt.lib + C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.41.34120\lib\x64\OLDNAMES.lib + 正在处理 /ORDER 选项 + 未在 /ORDER 文件中列出的外部代码对象: + ??_C@_0CN@PEBHJDOE@OSMesa?3?5Failed?5to?5load?5required@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BCO@LKAFPMMB@03000000120c0000101e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BM@BADCNPOM@Invalid?5value?5for?5parameter@ ; glfw3.lib(init.obj) + glfwIconifyWindow ; glfw3.lib(window.obj) + ??_C@_0DG@CGDLBFFB@Win32?3?5Failed?5to?5allocate?5globa@ ; glfw3.lib(win32_window.obj) + ??_C@_0L@GMPLCCII@user32?4dll@ ; glfw3.lib(win32_init.obj) + glfwGetPlatform ; glfw3.lib(platform.obj) + ??_C@_0L@DMFDIJCG@shcore?4dll@ ; glfw3.lib(win32_init.obj) + __imp_UnregisterDeviceNotification ; user32.lib(USER32.dll) + ??_C@_0CC@DOIEFDD@EGL?3?5Failed?5to?5initialize?5EGL?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0N@JENFOGFI@XInput?5Wheel@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCO@BGDMHMEJ@030000006f0e0000280100000000000@ ; glfw3.lib(input.obj) + __imp_SetPropW ; user32.lib(USER32.dll) + glfwGetVersion ; glfw3.lib(init.obj) + _glfwInputJoystick ; glfw3.lib(input.obj) + __imp_SetWindowPlacement ; user32.lib(USER32.dll) + _glfwTerminateEGL ; glfw3.lib(egl_context.obj) + glfwPollEvents ; glfw3.lib(window.obj) + ??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ ; glfw3.lib(context.obj) + ??_C@_0BH@HPKNFNCE@GetSystemMetricsForDpi@ ; glfw3.lib(win32_init.obj) + _glfwGetVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BH@MDCGBFEN@An?5event?5is?5unsignaled@ ; glfw3.lib(vulkan.obj) + ??_C@_0CI@FJDKHGC@OSMesa?3?5Failed?5to?5retrieve?5dept@ ; glfw3.lib(osmesa_context.obj) + ungetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BBO@LNNKKDPA@030000008f0e0000753000000000000@ ; glfw3.lib(input.obj) + ScreenToClient ; user32.lib(USER32.dll) + ??_C@_04JFCNHLLM@back@ ; glfw3.lib(input.obj) + ??_C@_0BC@HEACFLN@OSMesaMakeCurrent@ ; glfw3.lib(osmesa_context.obj) + glfwGetEGLSurface ; glfw3.lib(egl_context.obj) + ToUnicode ; user32.lib(USER32.dll) + ??_C@_0BBM@KEDGELHN@03000000c82d0000203800000000000@ ; glfw3.lib(input.obj) + _glfwInputJoystickAxis ; glfw3.lib(input.obj) + __xmm@00000001000000010000000100000001 ; glfw3.lib(window.obj) + ??_C@_01BMBHCPLG@5@ ; glfw3.lib(null_window.obj) + _DllMainCRTStartup ; MSVCRT.lib(dll_dllmain.obj) + __imp_DefWindowProcW ; user32.lib(USER32.dll) + __xmm@00000003000000030000000300000003 ; dllmain.obj + _glfwGetClipboardStringWin32 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitorNull ; glfw3.lib(null_monitor.obj) + __xmm@00380037003600350034003300320031 ; glfw3.lib(win32_init.obj) + _glfwSetCursorWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ ; glfw3.lib(context.obj) + InitializeCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwGetJoystickGUID ; glfw3.lib(input.obj) + ??_C@_0BCN@ECJBHADL@030000004c050000e60c00000000000@ ; glfw3.lib(input.obj) + _glfwCreateCursorNull ; glfw3.lib(null_window.obj) + glfwRawMouseMotionSupported ; glfw3.lib(input.obj) + ??_C@_0DN@GNDEENDO@EGL?5failed?5to?5allocate?5resource@ ; glfw3.lib(egl_context.obj) + ??_C@_01NEMOKFLO@?$DN@ ; glfw3.lib(null_window.obj) + IsDebuggerPresent ; kernel32.lib(KERNEL32.dll) + GetCurrentThreadId ; kernel32.lib(KERNEL32.dll) + _glfwCreateContextEGL ; glfw3.lib(egl_context.obj) + __imp_DragFinish ; shell32.lib(SHELL32.dll) + _glfwShowWindowWin32 ; glfw3.lib(win32_window.obj) + PostMessageW ; user32.lib(USER32.dll) + glfwGetWin32Window ; glfw3.lib(win32_window.obj) + __local_stdio_printf_options ; glfw3.lib(init.obj) + glfwWindowShouldClose ; glfw3.lib(window.obj) + __imp_LoadImageW ; user32.lib(USER32.dll) + ??_C@_0BCG@HFMJCAPB@030000005c1a0000333000000000000@ ; glfw3.lib(input.obj) + terminate ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __guard_xfg_table_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBP@DGIHCNJO@030000003807000056a800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@IGCIBFAF@Invalid?5scancode?5?$CFi@ ; glfw3.lib(win32_window.obj) + ??_C@_0EP@OJIEDFOO@The?5display?5used?5by?5a?5swapchain@ ; glfw3.lib(vulkan.obj) + ??_C@_0FH@FIPMKLID@A?5surface?5has?5changed?5in?5such?5a@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBG@DBBHKPMM@030000008f0e0000091000000000000@ ; glfw3.lib(input.obj) + __C_specific_handler ; vcruntime.lib(VCRUNTIME140.dll) + _guard_check_icall_nop ; MSVCRT.lib(guard_support.obj) + ??_C@_0M@PPADKGOK@eglGetError@ ; glfw3.lib(egl_context.obj) + __imp_strcspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0BBL@NHKNENLJ@03000000bc200000632100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCI@MBOCFMGI@0300000038100000181400000000000@ ; glfw3.lib(input.obj) + glfwSetWindowSizeLimits ; glfw3.lib(window.obj) + ??_C@_0BCK@KFEKGGJ@0300000045750000221100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@GIEEMMPB@03000000341a0000360800000000000@ ; glfw3.lib(input.obj) + DragQueryFileW ; shell32.lib(SHELL32.dll) + __xmm@f9c31a9df9c31a9df9c31a9df9c31a9d ; dllmain.obj + ??_C@_0BDA@PJFOCFDI@0300000038070000503200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@IKOICJPN@Win32?3?5Failed?5to?5set?5video?5mode@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0O@FNFBHCOO@0?9pixel?5image@ ; stb_image.obj + GlobalFree ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBN@DJKOMBLI@03000000d6200000e55700000000000@ ; glfw3.lib(input.obj) + ??_C@_0DC@CDLECLKD@WGL?3?5Driver?5does?5not?5support?5Op@ ; glfw3.lib(wgl_context.obj) + __imp_GetRawInputDeviceList ; user32.lib(USER32.dll) + ??_C@_0BCF@LMGAPCEG@0300000045130000001000000000000@ ; glfw3.lib(input.obj) + GetProcAddress ; kernel32.lib(KERNEL32.dll) + glfwGetVersionString ; glfw3.lib(platform.obj) + ??_C@_0CC@NIBJMOI@EGL?3?5Failed?5to?5bind?5OpenGL?5ES?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0CA@JBEOCDFN@invalid?5decoded?5scanline?5length@ ; stb_image.obj + _glfwGetMonitorWorkareaNull ; glfw3.lib(null_monitor.obj) + __imp_GetModuleHandleExW ; kernel32.lib(KERNEL32.dll) + _glfwCreateContextWGL ; glfw3.lib(wgl_context.obj) + SetWindowPlacement ; user32.lib(USER32.dll) + _glfwIsWindowsVersionOrGreaterWin32 ; glfw3.lib(win32_init.obj) + _glfwWindowVisibleNull ; glfw3.lib(null_window.obj) + ??_C@_09MNNCNKEO@outofdata@ ; stb_image.obj + _glfwPollMonitorsNull ; glfw3.lib(null_monitor.obj) + ??_C@_01JOAMLHOP@?9@ ; glfw3.lib(null_window.obj) + ??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ ; glfw3.lib(context.obj) + ??_C@_0BBK@FPHOHOII@030000006e050000132000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDG@JHAIGEPC@0300000079000000431800000000000@ ; glfw3.lib(input.obj) + __scrt_dllmain_before_initialize_c ; MSVCRT.lib(utility.obj) + GlobalUnlock ; kernel32.lib(KERNEL32.dll) + ??_C@_01NBENCBCI@?$CK@ ; glfw3.lib(null_window.obj) + __local_stdio_scanf_options ; glfw3.lib(context.obj) + ??_C@_0BDA@CMOFFENL@030000000d0f0000850000000000000@ ; glfw3.lib(input.obj) + DeleteCriticalSection ; kernel32.lib(KERNEL32.dll) + ??_C@_0EE@LGMAAPCC@WGL?3?5The?5share?5context?5is?5not?5c@ ; glfw3.lib(wgl_context.obj) + _glfwWaitEventsWin32 ; glfw3.lib(win32_window.obj) + _glfwPollMonitorsWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BBM@MJENJJEJ@78696e7075740200000000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@LDADLCB@DwmGetColorizationColor@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCF@BIADCONP@03000000d81d00000b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_09EOHLEIKL@bad?5sizes@ ; stb_image.obj + ??_C@_0CG@LDJIJKNI@Win32?3?5Failed?5to?5create?5helper?5@ ; glfw3.lib(win32_init.obj) + ??_C@_0O@IHOLGAKK@Invalid?5flags@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0CA@NIHAEPLD@EGL_ANGLE_platform_angle_opengl@ ; glfw3.lib(egl_context.obj) + glfwInitAllocator ; glfw3.lib(init.obj) + __imp_EnumDisplayMonitors ; user32.lib(USER32.dll) + ??_C@_0O@KAFOJCHN@xinput1_3?4dll@ ; glfw3.lib(win32_init.obj) + _glfwRestoreVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + _initialize_narrow_environment ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ ; glfw3.lib(context.obj) + ??_C@_0BCB@GKHPJHJF@03000000f0250000c48300000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_thread_detach ; MSVCRT.lib(ucrt_stubs.obj) + glfwSetJoystickCallback ; glfw3.lib(input.obj) + __imp_DragAcceptFiles ; shell32.lib(SHELL32.dll) + ??_C@_0BH@NFNALLIN@EGL?3?5Library?5not?5found@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCB@NICJKIFJ@03000000c82d000020ab00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@DCNDPIOH@unsupported?5data?5layout@ ; stb_image.obj + _glfwGetWindowOpacityWin32 ; glfw3.lib(win32_window.obj) + __report_gsfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0CG@CHGOPGBD@Mapping?5of?5a?5memory?5object?5has?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ ; glfw3.lib(context.obj) + ??_C@_0MO@IJHIOCMG@03000000c82d0000286700000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@GILDAIDE@Win32?3?5Failed?5to?5retrieve?5raw?5i@ ; glfw3.lib(win32_window.obj) + __imp_DestroyWindow ; user32.lib(USER32.dll) + ldexp ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0N@PILJCBOD@glGetStringi@ ; glfw3.lib(context.obj) + SetThreadExecutionState ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@BGJPOLDF@eglSwapInterval@ ; glfw3.lib(egl_context.obj) + ??_C@_08DIAPIMGJ@bad?5dist@ ; stb_image.obj + ??_C@_0L@FACOJKPJ@dwmapi?4dll@ ; glfw3.lib(win32_init.obj) + glfwSetWindowRefreshCallback ; glfw3.lib(window.obj) + ??_C@_0EC@MCALKGHI@Vulkan?3?5Failed?5to?5retrieve?5vkEn@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCC@ICCBMGAM@03000000a306000022f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDM@BFJPFEKL@0300000049190000030400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@DOIMLJHJ@VK_MVK_macos_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0O@KBHBNJOK@multiple?5IHDR@ ; stb_image.obj + ReadNoFence64 ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBK@JNJGFNNI@03000000c0110000059100000000000@ ; glfw3.lib(input.obj) + _glfwMaximizeWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BB@IIMLINA@bad?5huffman?5code@ ; stb_image.obj + GetModuleHandleExW ; kernel32.lib(KERNEL32.dll) + ??_C@_0BJ@MBCLFEBK@EGL_ANGLE_platform_angle@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCH@PKIHDDBI@03000000ac0500005b0500000000000@ ; glfw3.lib(input.obj) + ??_C@_01LPLHEDKD@d@ ; glfw3.lib(null_window.obj) + ??_C@_0CC@BFGHOMNL@WGL_ARB_create_context_robustne@ ; glfw3.lib(wgl_context.obj) + __imp_WindowFromPoint ; user32.lib(USER32.dll) + ??_C@_0BCB@EEEEOCLB@03000000300f0000120100000000000@ ; glfw3.lib(input.obj) + __imp_fclose ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_01LFCBOECM@?4@ ; glfw3.lib(null_window.obj) + __imp_TerminateProcess ; kernel32.lib(KERNEL32.dll) + GetMonitorInfoW ; user32.lib(USER32.dll) + ??_C@_0DA@LIIDOJC@Vulkan?3?5Failed?5to?5query?5instanc@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@KCOGNPFA@030000000d0f00008b0000000000000@ ; glfw3.lib(input.obj) + __imp_MultiByteToWideChar ; kernel32.lib(KERNEL32.dll) + _glfwInputWindowContentScale ; glfw3.lib(window.obj) + ??_C@_0BCG@FGNJGHJF@03000000c82d0000652800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCH@KGOLOPPA@030000000d0f00005b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@JLGOFCN@0300000017270000443100000000000@ ; glfw3.lib(input.obj) + __xmm@08a914e808a914e808a914e808a914e8 ; dllmain.obj + __xmm@12d0046b12d0046b12d0046b12d0046b ; dllmain.obj + CreateDIBSection ; gdi32.lib(GDI32.dll) + GetClipboardData ; user32.lib(USER32.dll) + ??_C@_0BCD@GAEBDFLF@0300000063250000750500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PF@DFFMCMNA@030000006f0e0000240100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@BMOJHNDI@WGL_ARB_multisample@ ; glfw3.lib(wgl_context.obj) + __imp_RemovePropW ; user32.lib(USER32.dll) + _glfw_max ; glfw3.lib(init.obj) + __real@40400000 ; dllmain.obj + ??_C@_0ME@JKMAKHPN@030000007e050000072000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCO@NGLDHPOC@030000006b140000010d00000000000@ ; glfw3.lib(input.obj) + _glfw_fmaxf ; glfw3.lib(init.obj) + ClientToScreen ; user32.lib(USER32.dll) + ??_C@_0BC@EOBKJDCM@GL_ARB_robustness@ ; glfw3.lib(context.obj) + ??_C@_0BBM@CNGNJMCJ@03000000c82d0000006000000000000@ ; glfw3.lib(input.obj) + _glfwRequestWindowAttentionNull ; glfw3.lib(null_window.obj) + ??_C@_0BDB@OHAMDKML@0300000038070000818400000000000@ ; glfw3.lib(input.obj) + ChangeDisplaySettingsExW ; user32.lib(USER32.dll) + RegisterDeviceNotificationW ; user32.lib(USER32.dll) + _glfwGetWindowFrameSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BK@MBEPKAIA@Invalid?5window?5opacity?5?$CFf@ ; glfw3.lib(window.obj) + __imp_ReleaseDC ; user32.lib(USER32.dll) + _glfwSetCursorPosWin32 ; glfw3.lib(win32_window.obj) + _glfwGetVideoModesWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BA@MCNBDLPD@bad?5compression@ ; stb_image.obj + glfwGetWGLContext ; glfw3.lib(wgl_context.obj) + ??_C@_0BBM@IDFPDLMB@0300000066f70000010000000000000@ ; glfw3.lib(input.obj) + ReleaseDC ; user32.lib(USER32.dll) + __imp_EnterCriticalSection ; kernel32.lib(KERNEL32.dll) + _glfwGetMonitorContentScaleWin32 ; glfw3.lib(win32_monitor.obj) + ?_OptionsStorage@?1??__local_stdio_printf_options@@9@9 + ??_C@_0BF@LOGLPPDD@RtlVerifyVersionInfo@ ; glfw3.lib(win32_init.obj) + ??_C@_0O@LCPOPKLJ@rightshoulder@ ; glfw3.lib(input.obj) + DeleteObject ; gdi32.lib(GDI32.dll) + ??_C@_0BL@OAABODH@Invalid?5gamma?5ramp?5size?5?$CFi@ ; glfw3.lib(monitor.obj) + _glfwSetWindowDecoratedNull ; glfw3.lib(null_window.obj) + ??_C@_0LO@FCDDJGBI@03000000a3060000070100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@CNEONNDL@0300000032150000050700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCK@DCNKADHN@030000006b140000005500000000000@ ; glfw3.lib(input.obj) + __real@3f800000 ; dllmain.obj + glfwSetCursorPos ; glfw3.lib(input.obj) + _glfwSetWindowAspectRatioNull ; glfw3.lib(null_window.obj) + ??_C@_0BBB@JKCCMJLF@0300000085210000020100000000000@ ; glfw3.lib(input.obj) + DestroyIcon ; user32.lib(USER32.dll) + ??_C@_0BCE@LONHMMNE@030000000d0f0000660000000000000@ ; glfw3.lib(input.obj) + _glfwTerminateOSMesa ; glfw3.lib(osmesa_context.obj) + ??_C@_0BG@ELBNFOBA@XInputGetCapabilities@ ; glfw3.lib(win32_init.obj) + ??_C@_0CM@CMAENEMJ@3?44?40?5Win32?5WGL?5Null?5EGL?5OSMesa@ ; glfw3.lib(platform.obj) + ??_C@_0BD@IOGGBMNK@wrong?5color?5format@ ; stb_image.obj + ??_C@_0DC@IPDIACJO@WGL?3?5Failed?5to?5set?5pixel?5format@ ; glfw3.lib(wgl_context.obj) + ??_C@_07IDKIDMGJ@bad?5PNM@ ; stb_image.obj + ??_C@_0CD@HJEBEGLD@A?5platform?9specific?5error?5occur@ ; glfw3.lib(init.obj) + ??_C@_0PB@DCMCKKFD@030000006f0e0000030200000000000@ ; glfw3.lib(input.obj) + __imp_SetCapture ; user32.lib(USER32.dll) + ??_C@_0BAO@BBCMHMGF@0300000032150000000900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@EJOHFDHH@The?5system?5uses?5DualView@ ; glfw3.lib(win32_monitor.obj) + _glfwWindowIconifiedWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CC@HJEJGDAP@Invalid?5window?5minimum?5size?5?$CFix@ ; glfw3.lib(window.obj) + _glfwInitOSMesa ; glfw3.lib(osmesa_context.obj) + ??_C@_0BAP@BKIFCCAA@030000008f0e00000f3100000000000@ ; glfw3.lib(input.obj) + ??_C@_1O@IBNLCBOC@?$AAG?$AAL?$AAF?$AAW?$AA3?$AA0@ ; glfw3.lib(win32_window.obj) + ??_C@_01LBDDMOBJ@?$FN@ ; glfw3.lib(null_window.obj) + _glfwGetMappingNameWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BF@COCMEDFO@VK_KHR_win32_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0O@EMKFPNOG@OpenGL?5ES?9CL?5@ ; glfw3.lib(context.obj) + __xmm@00000000000000040000000000000000 ; dllmain.obj + glfwWindowHintString ; glfw3.lib(window.obj) + ??_C@_0DG@EPNPJJLB@WGL?3?5Failed?5to?5retrieve?5PFD?5for@ ; glfw3.lib(wgl_context.obj) + GetWindowLongW ; user32.lib(USER32.dll) + glfwSetWindowSizeCallback ; glfw3.lib(window.obj) + ??_C@_03FOKDFDHG@?$CLX?5@ ; stb_image.obj + __current_exception ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0O@LNFLKCMF@xinput1_4?4dll@ ; glfw3.lib(win32_init.obj) + GetRawInputDeviceList ; user32.lib(USER32.dll) + ??_C@_0BB@GHMBNOIP@wglCreateContext@ ; glfw3.lib(wgl_context.obj) + _glfwCreateContextOSMesa ; glfw3.lib(osmesa_context.obj) + _glfwParseUriList ; glfw3.lib(init.obj) + ??_C@_0DF@FCIHEFHD@Vulkan?3?5Window?5surface?5creation@ ; glfw3.lib(vulkan.obj) + ??_C@_0CE@CNKFDGDO@EGL?3?5Stereo?5rendering?5not?5suppo@ ; glfw3.lib(egl_context.obj) + ??_C@_0LF@CJKOEMML@030000009b280000050000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformGetModuleSymbol ; glfw3.lib(win32_module.obj) + GetCursorPos ; user32.lib(USER32.dll) + ??_C@_0CF@OFADCJLJ@A?5requested?5feature?5is?5not?5supp@ ; glfw3.lib(vulkan.obj) + ??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ ; glfw3.lib(context.obj) + ??_C@_0BCB@CDINELNI@03000000f025000021c100000000000@ ; glfw3.lib(input.obj) + glfwCreateStandardCursor ; glfw3.lib(input.obj) + __imp_DeleteCriticalSection ; kernel32.lib(KERNEL32.dll) + __imp_InitializeCriticalSection ; kernel32.lib(KERNEL32.dll) + _glfwGetEGLNativeWindowWin32 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitor ; glfw3.lib(monitor.obj) + __imp_GetActiveWindow ; user32.lib(USER32.dll) + __imp_PtInRect ; user32.lib(USER32.dll) + ??_C@_0BG@NOLDLPP@unsupported?5bit?5depth@ ; stb_image.obj + ??_C@_01BDACAMKP@h@ ; glfw3.lib(null_window.obj) + _glfwTerminateVulkan ; glfw3.lib(vulkan.obj) + __imp_strtok ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwCreateWindowNull ; glfw3.lib(null_window.obj) + MapVirtualKeyW ; user32.lib(USER32.dll) + ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA ; MSVCRT.lib(default_local_stdio_options.obj) + ??_C@_0CE@GCBEILKL@Win32?3?5Failed?5to?5create?5RGBA?5bi@ ; glfw3.lib(win32_window.obj) + _onexit ; MSVCRT.lib(utility.obj) + ??_C@_0BCD@JIBGPOCI@030000004c050000a00b00000000000@ ; glfw3.lib(input.obj) + _glfwWindowFocusedNull ; glfw3.lib(null_window.obj) + ??_C@_0CH@DNHGEPME@vkEnumerateInstanceExtensionPro@ ; glfw3.lib(vulkan.obj) + _glfwInitJoysticksWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0P@JLGKOCGN@bad?5DHT?5header@ ; stb_image.obj + __imp_SwapBuffers ; gdi32.lib(GDI32.dll) + ??_C@_0N@KBPNPPBJ@bad?5req_comp@ ; stb_image.obj + __xmm@0000201c0000201b0000201a00002019 ; glfw3.lib(wgl_context.obj) + glfwGetGamepadName ; glfw3.lib(input.obj) + __dyn_tls_init_callback + ??_C@_0BBK@CPBMMLKK@03000000fa190000f0ff00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CG@GMPEPNKL@WGL?3?5Failed?5to?5retrieve?5DC?5for?5@ ; glfw3.lib(wgl_context.obj) + _glfwPlatformLockMutex ; glfw3.lib(win32_thread.obj) + __imp_SystemParametersInfoW ; user32.lib(USER32.dll) + ??_C@_09MEKLKMGE@leftstick@ ; glfw3.lib(input.obj) + _glfwInputWindowPos ; glfw3.lib(window.obj) + glfwJoystickPresent ; glfw3.lib(input.obj) + ??_C@_0CG@CHEOMKGJ@A?5device?5memory?5allocation?5has?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBK@ECLGAJHG@03000000790000001a1800000000000@ ; glfw3.lib(input.obj) + ?__scrt_initialize_type_info@@YAXXZ ; MSVCRT.lib(tncleanup.obj) + IsIconic ; user32.lib(USER32.dll) + ??_C@_0BJ@KDFAHDEK@ERROR?3?5UNKNOWN?5EGL?5ERROR@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCI@EGALPOHP@03000000a30600000cff00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@HHLPIDID@030000000d0f0000550000000000000@ ; glfw3.lib(input.obj) + __xmm@00000009000000080000000c00000004 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BDA@KMJLBBJI@030000000d0f0000490000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@NEMNBLEB@An?5event?5is?5signaled@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBE@DMHFNEP@0300000071010000190400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@JNCBHNAG@030000000d0f00006e0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@EGEEPFHF@Win32?3?5Gamma?5ramp?5size?5must?5be?5@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCJ@BECCDJOO@030000005e040000130b00000000000@ ; glfw3.lib(input.obj) + glfwSetErrorCallback ; glfw3.lib(init.obj) + ??_C@_01JBBJJEPG@p@ ; glfw3.lib(null_window.obj) + ??_C@_0BL@MOJGOJJP@Failed?5to?5load?5OpenGL?5api?3@ ; StgSharpC.obj + ??_C@_0BD@ENICNPLM@SetProcessDPIAware@ ; glfw3.lib(win32_init.obj) + _glfwRequestWindowAttentionWin32 ; glfw3.lib(win32_window.obj) + _glfw_calloc ; glfw3.lib(init.obj) + ??_C@_0BDO@LBKBGMKN@030000005e040000a10200000000000@ ; glfw3.lib(input.obj) + __castguard_slow_path_check_nop ; MSVCRT.lib(guard_support.obj) + __castguard_slow_path_check_user_handled ; MSVCRT.lib(guard_support.obj) + ??_C@_0P@NNGPHMMK@unknown?5marker@ ; stb_image.obj + RegisterRawInputDevices ; user32.lib(USER32.dll) + ??_C@_0EP@EKHGPGGO@WGL?3?5OpenGL?5ES?5requested?5but?5WG@ ; glfw3.lib(wgl_context.obj) + __real@42112e0be8240000 ; glfw3.lib(input.obj) + ??_C@_0BF@GIAALCNJ@bad?5Image?5Descriptor@ ; stb_image.obj + glfwGetWindowSize ; glfw3.lib(window.obj) + glfwGetWin32Adapter ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCN@FPGGBFLP@030000006f0e0000300100000000000@ ; glfw3.lib(input.obj) + GetLastError ; kernel32.lib(KERNEL32.dll) + strtoul ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0O@DEFOLMLB@bad?5size?5list@ ; stb_image.obj + ??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ ; glfw3.lib(win32_joystick.obj) + _glfwWindowIconifiedNull ; glfw3.lib(null_window.obj) + __imp_strcpy_s ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0BC@CNFMOKHC@max?5value?5?$DO?565535@ ; stb_image.obj + __GSHandlerCheckCommon ; MSVCRT.lib(gshandler.obj) + __xmm@00000004000000040000000800000008 ; dllmain.obj + ??_C@_0DF@BPPFPGID@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBL@BGGBHDMD@03000000c0110000055500000000000@ ; glfw3.lib(input.obj) + __imp_GetStartupInfoW ; kernel32.lib(KERNEL32.dll) + __imp__crt_at_quick_exit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_03HKAKGGJN@?9Y?5@ ; stb_image.obj + ??_C@_0BD@MAEGKKAE@eglGetConfigAttrib@ ; glfw3.lib(egl_context.obj) + ??_C@_0PH@JHCLCGIM@030000000d0f0000160000000000780@ ; glfw3.lib(input.obj) + ??_C@_0BK@HMMKMEOH@DwmEnableBlurBehindWindow@ ; glfw3.lib(win32_init.obj) + ??_C@_0N@JCPAJAKB@invalid?5PLTE@ ; stb_image.obj + ??_C@_0BCD@OHMJGKKC@03000000790000004f1800000000000@ ; glfw3.lib(input.obj) + ??_C@_0NL@JGIMNLNL@030000004c050000371300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CC@BPDGBBAB@Invalid?5window?5aspect?5ratio?5?$CFi?3@ ; glfw3.lib(window.obj) + __imp_memset ; vcruntime.lib(VCRUNTIME140.dll) + __xmm@01290128012701260125012401230122 ; glfw3.lib(win32_init.obj) + _glfwTerminateJoysticksNull ; glfw3.lib(null_joystick.obj) + ??_C@_0BCD@GAJAFIPA@030000004c050000c40500000000000@ ; glfw3.lib(input.obj) + __real@3ee8ba2e ; glfw3.lib(null_monitor.obj) + ??_C@_0BA@ENDPGCHB@tRNS?5with?5alpha@ ; stb_image.obj + __xmm@00000002000000020000000200000002 ; dllmain.obj + glfwSetCursorEnterCallback ; glfw3.lib(input.obj) + ??_C@_0BCB@CDNPOFJG@03000000341a0000030200000000000@ ; glfw3.lib(input.obj) + _glfwSetClipboardStringNull ; glfw3.lib(null_window.obj) + realloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + glfwGetTimerValue ; glfw3.lib(input.obj) + ??_C@_0BBH@EKFHCAMB@03000000e8200000605800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BI@DHFJCMBA@bad?5SOS?5component?5count@ ; stb_image.obj + ??_C@_0BCI@HBCHBLOC@03000000bc200000005500000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@MBGMCHKG@030000006f0e0000140100000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@JPDHFAGK@can?8t?5fopen@ ; stb_image.obj + ??_C@_0CA@MHMAANIG@Win32?3?5Platform?5not?5initialized@ ; glfw3.lib(win32_window.obj) + LoadLibraryA ; kernel32.lib(KERNEL32.dll) + ??_C@_0OJ@OIDHFCIJ@030000006f0e0000090100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BO@NOJEGBJM@Missing?5function?5in?5allocator@ ; glfw3.lib(init.obj) + glfwGetWindowAttrib ; glfw3.lib(window.obj) + ??_C@_1BA@PICGEGJB@?$AAD?$AAI?$AAS?$AAP?$AAL?$AAA?$AAY@ ; glfw3.lib(win32_monitor.obj) + ftell ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BJ@KIPDFNMM@EGL_EXT_platform_wayland@ ; glfw3.lib(egl_context.obj) + ??_C@_01OJONOECF@b@ ; glfw3.lib(input.obj) + _glfwGetClipboardStringNull ; glfw3.lib(null_window.obj) + __imp_IsZoomed ; user32.lib(USER32.dll) + __imp_TrackMouseEvent ; user32.lib(USER32.dll) + ??_C@_07MALOAKCI@invalid@ ; stb_image.obj + __scrt_initialize_onexit_tables ; MSVCRT.lib(utility.obj) + ??_C@_0PF@JBCCEDOB@03000000300f0000001100000000000@ ; glfw3.lib(input.obj) + ??_C@_0LP@DBLEIEDM@03000000a30c0000240000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@KNBKPMNJ@0300000038070000808100000000000@ ; glfw3.lib(input.obj) + __xmm@00000004000000080000000800000008 ; dllmain.obj + glfwSetMouseButtonCallback ; glfw3.lib(input.obj) + ??_C@_0BCO@DODDAFEB@03000000efbe0000edfe00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@HHJIGJHK@Win32?3?5Failed?5to?5load?5user32?4dl@ ; glfw3.lib(win32_init.obj) + glfwSetWindowMonitor ; glfw3.lib(window.obj) + __imp_RtlLookupFunctionEntry ; kernel32.lib(KERNEL32.dll) + ??_C@_0CK@DCPJCPHH@EGL?3?5Failed?5to?5load?5required?5en@ ; glfw3.lib(egl_context.obj) + ??_C@_0P@PKABKPLF@Invalid?5key?5?$CFi@ ; glfw3.lib(input.obj) + ??_C@_08CBHCFJJK@platform@ ; glfw3.lib(input.obj) + _glfwAllocJoystick ; glfw3.lib(input.obj) + ??_C@_0BCD@BBICEOLK@78696e7075740300000000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@MHLGDLLP@EGL?3?5Failed?5to?5create?5window?5su@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBG@NOFGFFJE@03000000bc200000601200000000000@ ; glfw3.lib(input.obj) + __imp___C_specific_handler ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_06NDOKKIDJ@?$CD?$DPRGBE@ ; stb_image.obj + ??_C@_0BCE@LLLAMHO@030000004f04000007d000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@OBKOPAFL@bad?5zlib?5header@ ; stb_image.obj + _glfwInputMonitor ; glfw3.lib(monitor.obj) + ??_C@_0BB@CNEIGGLC@Null?5SuperNoop?50@ ; glfw3.lib(null_monitor.obj) + ??_C@_0CE@PCLEMLLO@The?5requested?5format?5is?5unavail@ ; glfw3.lib(init.obj) + __report_securityfailure ; MSVCRT.lib(gs_report.obj) + __real@46ffff00 ; glfw3.lib(win32_joystick.obj) + __imp_qsort ; ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + __imp_CloseClipboard ; user32.lib(USER32.dll) + _glfwDestroyCursorNull ; glfw3.lib(null_window.obj) + glfwGetWindowMonitor ; glfw3.lib(window.obj) + ??_C@_0BBO@HLNJIBPP@78696e7075740100000000000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_uninitialize_critical ; MSVCRT.lib(ucrt_stubs.obj) + FlashWindow ; user32.lib(USER32.dll) + _glfwFramebufferTransparentNull ; glfw3.lib(null_window.obj) + _glfwWindowFocusedWin32 ; glfw3.lib(win32_window.obj) + strncpy ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + __imp_CreateWindowExW ; user32.lib(USER32.dll) + __imp_DestroyIcon ; user32.lib(USER32.dll) + ??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ ; glfw3.lib(context.obj) + __scrt_unhandled_exception_filter ; MSVCRT.lib(utility_desktop.obj) + glfwGetPrimaryMonitor ; glfw3.lib(monitor.obj) + ??_C@_0MH@GNCKGMLL@03000000c82d0000801000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_user_handled ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBN@EJPLMIPB@03000000bd12000003c000001001000@ ; glfw3.lib(input.obj) + ??_C@_0BDE@CKLILCMC@030000005e040000ff0200000000000@ ; glfw3.lib(input.obj) + SetCursor ; user32.lib(USER32.dll) + _glfwPlatformLoadModule ; glfw3.lib(win32_module.obj) + ??_C@_0CL@JEJIBJNG@Win32?3?5Failed?5to?5convert?5string@ ; glfw3.lib(win32_init.obj) + __imp_ChangeDisplaySettingsExW ; user32.lib(USER32.dll) + ??_C@_0CI@NAJLKNKH@OSMesa?3?5Failed?5to?5retrieve?5colo@ ; glfw3.lib(osmesa_context.obj) + __imp_RtlCaptureContext ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@MDMBDDFG@bad?5comp?5method@ ; stb_image.obj + ??_C@_0BCE@MNGEPDHI@03000000786901006e7000000000000@ ; glfw3.lib(input.obj) + ??_C@_07DPPMCAKL@corrupt@ ; stb_image.obj + ??_C@_0BBM@OJGJOKHO@0300000034120000adbe00000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@KAEELGKL@WGL?3?5Failed?5to?5create?5dummy?5con@ ; glfw3.lib(wgl_context.obj) + __imp_CreateDIBSection ; gdi32.lib(GDI32.dll) + ??_C@_0BBK@GEMHLGCN@0300000049190000020400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BN@FNDGKECA@GL_KHR_context_flush_control@ ; glfw3.lib(context.obj) + ??_C@_0CB@HAFFDHLH@The?5requested?5API?5is?5unavailabl@ ; glfw3.lib(init.obj) + ??_C@_0BBF@BFOGCKNH@030000000d0f00002d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@JDEAKJCI@EGL?3?5Failed?5to?5load?5client?5libr@ ; glfw3.lib(egl_context.obj) + ??_C@_0BH@OBINMOBC@integer?5parse?5overflow@ ; stb_image.obj + __imp_GetRawInputData ; user32.lib(USER32.dll) + __imp_GlobalAlloc ; kernel32.lib(KERNEL32.dll) + _glfwSetWindowSizeLimitsNull ; glfw3.lib(null_window.obj) + _glfwSetWindowSizeWin32 ; glfw3.lib(win32_window.obj) + CreateDCW ; gdi32.lib(GDI32.dll) + __xmm@00000006000000020000000300000001 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BAC@DNICHFEF@03000000341a0000010800000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@FLGENKMO@WGL?3?5Failed?5to?5load?5opengl32?4dl@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BL@PBGFNEKP@Invalid?5platform?5ID?50x?$CF08X@ ; glfw3.lib(platform.obj) + SetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + SetWindowTextW ; user32.lib(USER32.dll) + _glfwSetWindowMousePassthroughWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CF@GFMDJIA@WGL?3?5Failed?5to?5create?5OpenGL?5co@ ; glfw3.lib(wgl_context.obj) + _glfwSetWindowOpacityWin32 ; glfw3.lib(win32_window.obj) + glfwExtensionSupported ; glfw3.lib(context.obj) + ??_C@_0BCF@BMOGEGNJ@03000000c82d0000016000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCG@GLPHDIGN@03000000d620000010a700000000000@ ; glfw3.lib(input.obj) + InitializeSListHead ; kernel32.lib(KERNEL32.dll) + __imp__execute_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0CE@BEELAIPG@The?5GLFW?5library?5is?5not?5initial@ ; glfw3.lib(init.obj) + ??_C@_02JDPG@rb@ ; stb_image.obj + glfwGetRequiredInstanceExtensions ; glfw3.lib(vulkan.obj) + _glfwPlatformGetTimerValue ; glfw3.lib(win32_time.obj) + ??_C@_0M@JGMCBLGG@bad?5AC?5huff@ ; stb_image.obj + __scrt_stub_for_initialize_mta ; MSVCRT.lib(utility_desktop.obj) + glfwSetWindowUserPointer ; glfw3.lib(window.obj) + ??_C@_0BCG@JDIGBKMP@030000000d0f00006a0000000000000@ ; glfw3.lib(input.obj) + strspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + SetFocus ; user32.lib(USER32.dll) + ??_C@_0BDC@PMNHHHHJ@03000000c82d0000012100000000000@ ; glfw3.lib(input.obj) + _guard_icall_checks_enforced ; MSVCRT.lib(guard_support.obj) + ??_C@_0BBP@NCCKJBD@030000006d04000016c200000000000@ ; glfw3.lib(input.obj) + ??_C@_07EEJOMGGP@bad?5SOS@ ; stb_image.obj + TlsAlloc ; kernel32.lib(KERNEL32.dll) + fread ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_09FLKFJBLM@ntdll?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCH@LIIGHPB@03000000d62000006d5700000000000@ ; glfw3.lib(input.obj) + SetRect ; user32.lib(USER32.dll) + SetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BBD@DBNHIIMF@0300000025090000e80300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BP@CDGGFNNF@EGL_KHR_get_all_proc_addresses@ ; glfw3.lib(egl_context.obj) + ??_C@_0BF@JHMFGJBN@Graphics?5mode?5failed@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0LO@BOPGPFGO@03000000ff000000cb0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@PJHPAMCH@bad?5header@ ; stb_image.obj + ??_C@_0BI@POJNLJDO@Invalid?5mouse?5button?5?$CFi@ ; glfw3.lib(input.obj) + ??_C@_0OH@PKEJNDDF@030000000d0f0000870000000000000@ ; glfw3.lib(input.obj) + ??_C@_01GBGANLPD@0@ ; glfw3.lib(null_window.obj) + ??_C@_0BF@FMIKFMMH@EGL_EXT_platform_x11@ ; glfw3.lib(egl_context.obj) + ??_C@_0OG@DMCABHAN@030000009b280000600000000000000@ ; glfw3.lib(input.obj) + __imp_LoadCursorW ; user32.lib(USER32.dll) + glfwSetJoystickUserPointer ; glfw3.lib(input.obj) + _glfwIsWindows10BuildOrGreaterWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0KB@PHAGMDLE@03000000a30c0000250000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_os_handled_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0CC@HDNEDJNI@A?5validation?5layer?5found?5an?5err@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCH@KDJCJEOK@03000000300f0000070100000000000@ ; glfw3.lib(input.obj) + DragAcceptFiles ; shell32.lib(SHELL32.dll) + ??_C@_0BCF@MBPBHECE@03000000c82d0000009000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CI@MPJNGPNP@EGL?3?5Failed?5to?5make?5context?5cur@ ; glfw3.lib(egl_context.obj) + glfwGetJoystickButtons ; glfw3.lib(input.obj) + _glfwUpdateGamepadGUIDNull ; glfw3.lib(null_joystick.obj) + GetMessageTime ; user32.lib(USER32.dll) + __imp_terminate ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BCO@GFHGFBHD@030000004f04000004b300000000000@ ; glfw3.lib(input.obj) + ??_C@_07IANEBNLB@not?5BMP@ ; stb_image.obj + __imp_malloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ??_C@_0BCO@NPMGKBDH@030000006f0e00002f0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@MDNKOBMC@bad?5codelengths@ ; stb_image.obj + glfwGetTime ; glfw3.lib(input.obj) + _glfwPlatformUnlockMutex ; glfw3.lib(win32_thread.obj) + ??_C@_07CAIJGPF@file?3?1?1@ ; glfw3.lib(init.obj) + glfwSetInputMode ; glfw3.lib(input.obj) + __imp_LoadLibraryA ; kernel32.lib(KERNEL32.dll) + _glfwWaitEventsNull ; glfw3.lib(null_window.obj) + _glfwPlatformGetTimerFrequency ; glfw3.lib(win32_time.obj) + _glfwInputKey ; glfw3.lib(input.obj) + _glfwGetCursorPosWin32 ; glfw3.lib(win32_window.obj) + glfwGetJoystickHats ; glfw3.lib(input.obj) + glfwSetWindowFocusCallback ; glfw3.lib(window.obj) + _glfwInputErrorWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BCE@DAIILIHH@0300000011010000311400000000000@ ; glfw3.lib(input.obj) + __imp_SetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwSetClipboardStringWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0P@FBBCPGMN@invalid?5filter@ ; stb_image.obj + _glfwCreateCursorWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0O@GLACEBNI@xinput1_2?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0P@DOGMHEBI@no?5preset?5dict@ ; stb_image.obj + strcpy_s ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + GetWindowRect ; user32.lib(USER32.dll) + WindowFromPoint ; user32.lib(USER32.dll) + _crt_atexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + GetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + ??_C@_07ECNCNLIK@not?5PSD@ ; stb_image.obj + __imp_ToUnicode ; user32.lib(USER32.dll) + ??_C@_0O@NALGGDJF@Out?5of?5memory@ ; glfw3.lib(init.obj) + ??_C@_0CC@NOHNODHG@Invalid?5window?5maximum?5size?5?$CFix@ ; glfw3.lib(window.obj) + ??_C@_0CK@JKJFDJLH@WGL?3?5Failed?5to?5make?5dummy?5conte@ ; glfw3.lib(wgl_context.obj) + ??_C@_0OG@IHHMBDDK@030000009b280000320000000000000@ ; glfw3.lib(input.obj) + __real@3fdd1745c0000000 ; dllmain.obj + ??_C@_0BH@NCJDMLMG@WGL_ARB_create_context@ ; glfw3.lib(wgl_context.obj) + glfwWindowHint ; glfw3.lib(window.obj) + RemovePropW ; user32.lib(USER32.dll) + ??_C@_0BBJ@GCDIHNCJ@03000000b8050000041000000000000@ ; glfw3.lib(input.obj) + __imp___current_exception_context ; vcruntime.lib(VCRUNTIME140.dll) + __imp_FreeLibrary ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBI@BNPIODHF@03000000101c0000171c00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@OLMCGDIA@03000000c82d0000202800000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowIconNull ; glfw3.lib(null_window.obj) + ??_C@_0BCF@HEDDGGCD@030000004f04000015b300000000000@ ; glfw3.lib(input.obj) + __imp_fgetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetPhysicalDevicePresentationSupport ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@MGGCIPBD@03000000bd12000002e000000000000@ ; glfw3.lib(input.obj) + ??_C@_0N@OJEJPFOD@504944564944@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ ; glfw3.lib(context.obj) + ??_C@_0EE@ICKHNPHB@An?5EGLDisplay?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBM@PJHGKLCN@03000000300f00000b0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0L@CEBLLDFF@GLESv2?4dll@ ; glfw3.lib(egl_context.obj) + ??_C@_0CH@KLCPDMM@EGL?5is?5not?5or?5could?5not?5be?5init@ ; glfw3.lib(egl_context.obj) + ??_C@_0KI@EKGGNLIH@030000004f04000087b600000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@GNEHAHOH@bad?5SOS?5len@ ; stb_image.obj + __imp_ldexp ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + _glfwChooseFBConfig ; glfw3.lib(context.obj) + ??_C@_0BCD@MDFEPGHO@030000006b140000010c00000000000@ ; glfw3.lib(input.obj) + __imp_SetRect ; user32.lib(USER32.dll) + glfwSetCursor ; glfw3.lib(input.obj) + ??_C@_0CO@HAIMLOLL@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + GetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwPostEmptyEventWin32 ; glfw3.lib(win32_window.obj) + IsProcessorFeaturePresent ; kernel32.lib(KERNEL32.dll) + ??_C@_0OJ@OOLHGLBN@03000000d8140000086200000000000@ ; glfw3.lib(input.obj) + glfwGetMonitorWorkarea ; glfw3.lib(monitor.obj) + ??_C@_0BBL@MNJAPGHD@03000000bc200000631200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@MLHIDNOG@03000000b8050000061000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@BICCDPK@030000000d0f00004d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBP@CEOMIJKI@030000006d040000d1ca00000000000@ ; glfw3.lib(input.obj) + __imp_MapVirtualKeyW ; user32.lib(USER32.dll) + __imp_SetCursor ; user32.lib(USER32.dll) + __imp_strtol ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0ME@PAHEPGN@030000007e050000072000000100000@ ; glfw3.lib(input.obj) + _glfwSetRawMouseMotionWin32 ; glfw3.lib(win32_window.obj) + _glfwSetWindowFloatingNull ; glfw3.lib(null_window.obj) + ??_C@_01NOFIACDB@w@ ; glfw3.lib(null_window.obj) + QueryPerformanceFrequency ; kernel32.lib(KERNEL32.dll) + __castguard_check_failure_debugbreak ; MSVCRT.lib(guard_support.obj) + __imp___stdio_common_vsscanf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BF@HABDPBMA@wglGetCurrentContext@ ; glfw3.lib(wgl_context.obj) + ?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ ; MSVCRT.lib(utility.obj) + glfwWaitEvents ; glfw3.lib(window.obj) + ??_C@_0LJ@DONCMJNG@03000000c82d0000035100000000000@ ; glfw3.lib(input.obj) + free ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + __imp_SetWindowTextW ; user32.lib(USER32.dll) + ??_C@_0BBJ@KBEDPJIE@030000008f0e0000030000000000000@ ; glfw3.lib(input.obj) + _glfwInitJoysticksNull ; glfw3.lib(null_joystick.obj) + __xmm@fa7efa7efa7efa7efa7efa7efa7efa7e ; dllmain.obj + LoadImageW ; user32.lib(USER32.dll) + DestroyWindow ; user32.lib(USER32.dll) + __imp_IsDebuggerPresent ; kernel32.lib(KERNEL32.dll) + __imp_GetSystemTimeAsFileTime ; kernel32.lib(KERNEL32.dll) + MsgWaitForMultipleObjects ; user32.lib(USER32.dll) + ??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ ; glfw3.lib(context.obj) + _glfwSetWindowMousePassthroughNull ; glfw3.lib(null_window.obj) + ??_C@_0PF@BCABPIDK@030000006e050000072000000000000@ ; glfw3.lib(input.obj) + __imp_GetSystemMetrics ; user32.lib(USER32.dll) + ??_C@_0BDA@HBJEDFJC@0300000038070000508200000000000@ ; glfw3.lib(input.obj) + ??_C@_08GGMBIFE@bad?5file@ ; stb_image.obj + ??_C@_0CJ@KOFEFGNB@The?5requested?5API?5version?5is?5un@ ; glfw3.lib(init.obj) + ??_C@_0BBP@NILOBHMB@0300000032150000070700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@CJMIIMBG@GL_ARB_compatibility@ ; glfw3.lib(context.obj) + ??_C@_0O@KOJFNJDA@GLESv1_CM?4dll@ ; glfw3.lib(egl_context.obj) + _glfwPollJoystickNull ; glfw3.lib(null_joystick.obj) + ??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ ; glfw3.lib(context.obj) + GetCurrentProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0MA@LPHGGGL@0300000025090000012800000000000@ ; glfw3.lib(input.obj) + __imp_GetKeyState ; user32.lib(USER32.dll) + ??_C@_0BBG@BDLNPAJM@03000000242f0000730000000000000@ ; glfw3.lib(input.obj) + _glfwPollEventsNull ; glfw3.lib(null_window.obj) + _glfwInputCursorEnter ; glfw3.lib(input.obj) + __scrt_uninitialize_crt ; MSVCRT.lib(utility.obj) + ??_C@_01FDFGLJHB@2@ ; glfw3.lib(null_window.obj) + ??_C@_07KFDJIKCK@?$CD?$DPRGBE?6@ ; stb_image.obj + __imp_realloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + glfwSetDropCallback ; glfw3.lib(input.obj) + __xmm@00000000000000010003600100030001 ; glfw3.lib(window.obj) + _glfwSetRawMouseMotionNull ; glfw3.lib(null_window.obj) + __scrt_is_ucrt_dll_in_use ; MSVCRT.lib(ucrt_detection.obj) + ??_C@_01JEJKBAGA@g@ ; glfw3.lib(null_window.obj) + GetWindowPlacement ; user32.lib(USER32.dll) + _glfwWindowHoveredNull ; glfw3.lib(null_window.obj) + ??_C@_0EE@FBMMOIJB@A?5NativeWindowType?5argument?5doe@ ; glfw3.lib(egl_context.obj) + ??_C@_0PP@COADMKLJ@030000006d0400000ac200000000000@ ; glfw3.lib(input.obj) + _glfwFreeJoystick ; glfw3.lib(input.obj) + ??_C@_07IEJCHBDI@bad?5BMP@ ; stb_image.obj + ??_C@_06EOBKMJJD@righty@ ; glfw3.lib(input.obj) + glfwSetClipboardString ; glfw3.lib(input.obj) + __xmm@11c8e09e11c8e09e11c8e09e11c8e09e ; dllmain.obj + LeaveCriticalSection ; kernel32.lib(KERNEL32.dll) + __imp_GetClipboardData ; user32.lib(USER32.dll) + __scrt_is_nonwritable_in_current_image ; MSVCRT.lib(utility.obj) + ??_C@_0BCG@NFDJDGAI@0300000079000000d21800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBB@HMBGBDKD@03000000fa190000070600000000000@ ; glfw3.lib(input.obj) + ??_C@_0P@PNPBPNLI@eglMakeCurrent@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCF@IAGAPBPO@030000000d0f0000090000000000000@ ; glfw3.lib(input.obj) + _glfwRefreshContextAttribs ; glfw3.lib(context.obj) + ??_C@_0BBK@KLAOAEFP@0300000063250000230600000000000@ ; glfw3.lib(input.obj) + _glfwPlatformFreeModule ; glfw3.lib(win32_module.obj) + ??_C@_0BH@JFGBLLKC@FORMAT?$DN32?9bit_rle_rgbe@ ; stb_image.obj + ??_C@_0CJ@HAGOIHNO@WGL?3?5Failed?5to?5set?5selected?5pix@ ; glfw3.lib(wgl_context.obj) + __imp_UnregisterClassW ; user32.lib(USER32.dll) + ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@9 + fclose ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0M@ONOEDIJO@dinput8?4dll@ ; glfw3.lib(win32_init.obj) + atexit ; MSVCRT.lib(utility.obj) + ??_C@_04KBFEPHFH@S?$IA?v4@ ; stb_image.obj + ??_C@_0BDD@MHIPFANA@0300000049190000190400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBO@ILBJPILH@030000006f0e0000141300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBK@LLHMDGJD@03000000120c0000f61c00000000000@ ; glfw3.lib(input.obj) + SetLayeredWindowAttributes ; user32.lib(USER32.dll) + __imp_TlsSetValue ; kernel32.lib(KERNEL32.dll) + WaitMessage ; user32.lib(USER32.dll) + ??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ ; glfw3.lib(context.obj) + GetRawInputData ; user32.lib(USER32.dll) + __real@ffefffffffffffff ; glfw3.lib(input.obj) + ??_C@_0BL@MIAEELOL@OSMesaCreateContextAttribs@ ; glfw3.lib(osmesa_context.obj) + _glfwTerminateJoysticksWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCG@PCDGGODL@03000000c62400001a8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BD@IJCCAMHG@DirectInput8Create@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBO@PNIOEBFD@0300000079000000020000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@JADLEPAM@EGL_EXT_present_opaque@ ; glfw3.lib(egl_context.obj) + EnumDisplaySettingsExW ; user32.lib(USER32.dll) + ??_C@_01KICIPPFI@?2@ ; glfw3.lib(null_window.obj) + __GSHandlerCheck ; MSVCRT.lib(gshandler.obj) + ??_C@_0OO@CIFMNJJH@030000004f0400000ab100000000000@ ; glfw3.lib(input.obj) + __imp_VerSetConditionMask ; kernel32.lib(KERNEL32.dll) + __imp___stdio_common_vsprintf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BM@IGBABBBF@Failed?5to?5write?5to?5registry@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0BA@PCPJHDKJ@tRNS?5after?5IDAT@ ; stb_image.obj + ??_C@_0BBM@NFNOIOJB@0300000063250000260500000000000@ ; glfw3.lib(input.obj) + ??_C@_08NOGIMCHF@outofmem@ ; stb_image.obj + __imp_RegisterDeviceNotificationW ; user32.lib(USER32.dll) + ??_C@_07EAKGIKCB@EGL?4dll@ ; glfw3.lib(egl_context.obj) + __imp_SetFocus ; user32.lib(USER32.dll) + ??_C@_0BC@FFKMKEGM@wglGetProcAddress@ ; glfw3.lib(wgl_context.obj) + ??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ ; glfw3.lib(context.obj) + CreateWindowExW ; user32.lib(USER32.dll) + glfwSetMonitorCallback ; glfw3.lib(monitor.obj) + __imp_strncmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwGetVideoModesNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BCE@MPKCEKIF@030000006b14000001a100000000000@ ; glfw3.lib(input.obj) + __imp___std_type_info_destroy_list ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0GG@ODICGIHF@The?5current?5surface?5of?5the?5call@ ; glfw3.lib(egl_context.obj) + __imp_ftell ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetMonitorPos ; glfw3.lib(monitor.obj) + ferror ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + _glfwPollEventsWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@HFNLKKMF@030000000d0f0000540000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@GILNGNCB@0300000025090000668800000000000@ ; glfw3.lib(input.obj) + _glfwInputScroll ; glfw3.lib(input.obj) + ??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ ; glfw3.lib(context.obj) + strtok ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0M@EENLKPDI@bad?5APP?5len@ ; stb_image.obj + __imp_EmptyClipboard ; user32.lib(USER32.dll) + ??_C@_01MHEDDDHA@v@ ; glfw3.lib(null_window.obj) + __imp_BringWindowToTop ; user32.lib(USER32.dll) + ??_C@_0CH@GBHCOIGC@A?5fence?5or?5query?5has?5not?5yet?5co@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCG@GAMGMHOH@03000000c82d0000026100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@MDMCFBDG@eglCreateWindowSurface@ ; glfw3.lib(egl_context.obj) + _glfwGetKeyScancodeWin32 ; glfw3.lib(win32_window.obj) + __imp_strtoul ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ ; glfw3.lib(context.obj) + __xmm@013501340133013201310130012f012e ; glfw3.lib(win32_init.obj) + ??_C@_05NDJBMDKM@lefty@ ; glfw3.lib(input.obj) + _glfwFramebufferTransparentWin32 ; glfw3.lib(win32_window.obj) + ReadPointerNoFence ; MSVCRT.lib(guard_support.obj) + ??_C@_0BCO@JIFBCBLK@0300000055090000147200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@INJHJNOL@OSMesaGetProcAddress@ ; glfw3.lib(osmesa_context.obj) + _glfwPlatformSetTls ; glfw3.lib(win32_thread.obj) + ??_C@_0BCK@OFGGBLGN@03000000d62000001d5700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBN@MLCKKOPD@030000002a060000102400000000000@ ; glfw3.lib(input.obj) + glfwCreateCursor ; glfw3.lib(input.obj) + ??_C@_0M@EPMOIECP@bad?5DNL?5len@ ; stb_image.obj + ??_C@_0CH@CKFBCGDL@OSMesa?3?5Failed?5to?5make?5context?5@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0CP@FOBJNCLA@vkGetPhysicalDeviceWin32Present@ ; glfw3.lib(win32_window.obj) + ??_C@_0BCA@KPDCPHP@78696e7075740500000000000000000@ ; glfw3.lib(input.obj) + ??_C@_01GEODFPGF@?8@ ; glfw3.lib(null_window.obj) + _glfwSetCursorPosNull ; glfw3.lib(null_window.obj) + ??_C@_0BDC@BPGFOMKB@03000000782300000a1000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@LOJNHICN@03000000a30600000b0400000000000@ ; glfw3.lib(input.obj) + ??_C@_01MCMALHOG@a@ ; glfw3.lib(input.obj) + ??_C@_0EO@EKFIJHGG@An?5unrecognized?5attribute?5or?5at@ ; glfw3.lib(egl_context.obj) + __imp_PostMessageW ; user32.lib(USER32.dll) + ??_C@_0CK@NHHHNGID@The?5specified?5cursor?5shape?5is?5u@ ; glfw3.lib(init.obj) + ??_C@_0BB@PIPBCKIA@read?5past?5buffer@ ; stb_image.obj + CreateIconIndirect ; user32.lib(USER32.dll) + glfwInitHint ; glfw3.lib(init.obj) + GetDeviceCaps ; gdi32.lib(GDI32.dll) + ??_C@_01KMDKNFGN@?1@ ; glfw3.lib(null_window.obj) + SwapBuffers ; gdi32.lib(GDI32.dll) + __imp__seh_filter_dll ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + RtlVirtualUnwind ; kernel32.lib(KERNEL32.dll) + __stdio_common_vsprintf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_GetWindowRect ; user32.lib(USER32.dll) + ??_C@_0BAP@FBAIDBI@0300000015200000018200000000000@ ; glfw3.lib(input.obj) + glfwSetGamma ; glfw3.lib(monitor.obj) + _glfwSetWindowResizableNull ; glfw3.lib(null_window.obj) + ??_C@_0BCE@JJDBCGKI@03000000c82d0000003100000000000@ ; glfw3.lib(input.obj) + ??_C@_06LJIHDFHI@bad?5TQ@ ; stb_image.obj + ??_C@_0DD@OOKDLCED@A?5requested?5format?5is?5not?5suppo@ ; glfw3.lib(vulkan.obj) + VerSetConditionMask ; kernel32.lib(KERNEL32.dll) + ??_C@_0CI@LDEHPBDB@Win32?3?5Failed?5to?5create?5standar@ ; glfw3.lib(win32_window.obj) + _glfwGetRequiredInstanceExtensionsWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0FE@ILJLDKCD@A?5swapchain?5no?5longer?5matches?5t@ ; glfw3.lib(vulkan.obj) + ??_C@_0L@GICFCFGJ@OSMesa?4dll@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BO@NDHCIMGN@WGL?3?5Platform?5not?5initialized@ ; glfw3.lib(wgl_context.obj) + __imp_SetClipboardData ; user32.lib(USER32.dll) + ??_C@_01FJMABOPO@x@ ; glfw3.lib(input.obj) + DragQueryPoint ; shell32.lib(SHELL32.dll) + __xmm@80808080808080808080808080808080 ; dllmain.obj + _glfw_min ; glfw3.lib(init.obj) + ??_C@_0BA@PLHGLONG@IDAT?5size?5limit@ ; stb_image.obj + _glfwUpdateKeyNamesWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0CD@FOMFMBIL@WGL_EXT_create_context_es2_prof@ ; glfw3.lib(wgl_context.obj) + ??_C@_0O@MKGNGALN@invalid?5width@ ; stb_image.obj + glfwRestoreWindow ; glfw3.lib(window.obj) + ??_C@_0BCN@BNINGACN@030000006f0e0000140200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BO@JCPCDDEA@Invalid?5cursor?5position?5?$CFf?5?$CFf@ ; glfw3.lib(input.obj) + ??_C@_01IIACKFLH@q@ ; glfw3.lib(null_window.obj) + _glfwSetWindowIconWin32 ; glfw3.lib(win32_window.obj) + glfwGetInstanceProcAddress ; glfw3.lib(vulkan.obj) + ??_C@_0MA@ECCMLEBD@03000000bd12000015d000000000000@ ; glfw3.lib(input.obj) + _glfwSetVideoModeWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BDB@JPJOJNNC@0300000032150000001100000000000@ ; glfw3.lib(input.obj) + __scrt_stub_for_acrt_uninitialize ; MSVCRT.lib(ucrt_stubs.obj) + ??_C@_0BCJ@BOGEPGKL@0300000032150000020400000000000@ ; glfw3.lib(input.obj) + __imp_GetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + __imp_WaitMessage ; user32.lib(USER32.dll) + ??_C@_0NA@FFFKKMHD@030000001008000001e100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCG@OOIEPIIL@030000000d0f00006b0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0CE@KNFDBMCE@Invalid?5image?5dimensions?5for?5cu@ ; glfw3.lib(input.obj) + _glfwSetWindowPosWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0NN@GDFALEBB@03000000bd12000013d000000000000@ ; glfw3.lib(input.obj) + glfwSetGammaRamp ; glfw3.lib(monitor.obj) + ??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ ; glfw3.lib(context.obj) + ClipCursor ; user32.lib(USER32.dll) + ??_C@_0BCG@MGNGMDPB@03000000c62400002b8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0DA@LMPKCOPB@WGL?3?5Failed?5to?5retrieve?5pixel?5f@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BA@GHGALGFD@xinput9_1_0?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0M@DMDNBACF@bad?5png?5sig@ ; stb_image.obj + _glfwCreateUTF8FromWideStringWin32 ; glfw3.lib(win32_init.obj) + GetCurrentProcessId ; kernel32.lib(KERNEL32.dll) + _glfwCreateStandardCursorNull ; glfw3.lib(null_window.obj) + __xmm@01010000010100000101000001010000 ; dllmain.obj + ??_C@_01CBDEGOCN@j@ ; glfw3.lib(null_window.obj) + glfwGetCursorPos ; glfw3.lib(input.obj) + ??_C@_0BCP@HPMIMEAF@03000000a306000023f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBL@NMDIMCBK@03000000c0110000065500000000000@ ; glfw3.lib(input.obj) + _initterm_e ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BAE@PFJOMAIP@03000000791d0000010300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@MPCJCEEO@Invalid?5image?5count?5for?5window?5@ ; glfw3.lib(window.obj) + ??_C@_0BCD@KBOGKJIK@03000000d81d00000f0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@PDCFBJPK@Invalid?5input?5mode?50x?$CF08X@ ; glfw3.lib(input.obj) + FreeLibrary ; kernel32.lib(KERNEL32.dll) + at_quick_exit ; MSVCRT.lib(utility.obj) + _glfwUpdateGamepadGUIDWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_01EKENIIDA@3@ ; glfw3.lib(null_window.obj) + ??_C@_0BA@LGGPEDOH@GetDpiForWindow@ ; glfw3.lib(win32_init.obj) + ??_C@_0BC@BNOBCLNJ@eglDestroyContext@ ; glfw3.lib(egl_context.obj) + ??_C@_0BG@PJBJDAGM@can?8t?5merge?5dc?5and?5ac@ ; stb_image.obj + ??_C@_05MKIKPCON@leftx@ ; glfw3.lib(input.obj) + ??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ ; glfw3.lib(context.obj) + ??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ ; glfw3.lib(context.obj) + ??_C@_0BL@OIILILNJ@Arguments?5are?5inconsistent@ ; glfw3.lib(egl_context.obj) + _glfwGetHMONITORContentScaleWin32 ; glfw3.lib(win32_monitor.obj) + memcpy ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0N@CLKIAFGP@righttrigger@ ; glfw3.lib(input.obj) + ??_C@_0BE@DAPHADHL@bad?5component?5count@ ; stb_image.obj + __xmm@f493f493f493f493f493f493f493f493 ; dllmain.obj + ??_C@_0LE@DMNOHJBL@03000000300f0000121000000000000@ ; glfw3.lib(input.obj) + __imp_SetWindowPos ; user32.lib(USER32.dll) + ??_C@_0BAF@EBPNLKIJ@0300000032150000000300000000000@ ; glfw3.lib(input.obj) + __imp_QueryPerformanceFrequency ; kernel32.lib(KERNEL32.dll) + ??_C@_0BP@JAOBDJGN@WGL_ARB_create_context_profile@ ; glfw3.lib(wgl_context.obj) + __imp_ClipCursor ; user32.lib(USER32.dll) + _crt_at_quick_exit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __xmm@0000201e0000201d0000202300002022 ; glfw3.lib(wgl_context.obj) + TlsSetValue ; kernel32.lib(KERNEL32.dll) + ??_C@_0O@GCGJMHDL@wglShareLists@ ; glfw3.lib(wgl_context.obj) + _glfwGetCursorPosNull ; glfw3.lib(null_window.obj) + ??_C@_0BH@IPANDFMH@OSMesaCreateContextExt@ ; glfw3.lib(osmesa_context.obj) + glfwGetError ; glfw3.lib(init.obj) + __imp_TranslateMessage ; user32.lib(USER32.dll) + ??_C@_01LAKCGALK@9@ ; glfw3.lib(null_window.obj) + ??_C@_0BBM@FNOHJIMD@030000000d0f0000c10000000000000@ ; glfw3.lib(input.obj) + __stdio_common_vsscanf ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_InitializeSListHead ; kernel32.lib(KERNEL32.dll) + ??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0DF@KADNFCFI@Vulkan?3?5Failed?5to?5query?5instanc@ ; glfw3.lib(vulkan.obj) + __castguard_check_failure_user_handled_fptr ; MSVCRT.lib(guard_support.obj) + _glfwGetWindowPosNull ; glfw3.lib(null_window.obj) + _glfwCreateWindowSurfaceWin32 ; glfw3.lib(win32_window.obj) + _glfw_strdup ; glfw3.lib(init.obj) + ??_C@_0BCE@PHFLGEEP@03000000d81d0000100000000000000@ ; glfw3.lib(input.obj) + glfwSetWindowContentScaleCallback ; glfw3.lib(window.obj) + __imp_DescribePixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0BBN@DDIMFOMP@0300000020380000090000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformInitTimer ; glfw3.lib(win32_time.obj) + ??_C@_1BK@OPNBOCAD@?$AAG?$AAL?$AAF?$AAW?$AA3?$AA?5?$AAH?$AAe?$AAl?$AAp?$AAe?$AAr@ ; glfw3.lib(win32_init.obj) + ??_C@_0BC@BHMPBBMG@not?5enough?5pixels@ ; stb_image.obj + ??_C@_0BDM@IEGKPAEF@03000000222c0000022300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBD@FGLPEKLC@0300000038070000803400000000000@ ; glfw3.lib(input.obj) + ??_C@_0FM@BBONGFMN@The?5requested?5version?5of?5Vulkan@ ; glfw3.lib(vulkan.obj) + _glfwSetGammaRampNull ; glfw3.lib(null_monitor.obj) + glfwGetMonitorUserPointer ; glfw3.lib(monitor.obj) + __xmm@00000200000002000000020000000200 ; dllmain.obj + __castguard_slow_path_check_fastfail ; MSVCRT.lib(guard_support.obj) + ??_C@_0JL@IDKPNGMK@03000000c82d0000189000000000000@ ; glfw3.lib(input.obj) + _seh_filter_dll ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0PH@HDPKEOEB@0300000026090000888800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@MLLMMLGE@OSMesa?3?5Library?5not?5found@ ; glfw3.lib(osmesa_context.obj) + glfwSetWindowShouldClose ; glfw3.lib(window.obj) + ??_C@_0DL@GNLICFMC@The?5application?5must?5destroy?5al@ ; glfw3.lib(egl_context.obj) + _glfwDetectJoystickDisconnectionWin32 ; glfw3.lib(win32_joystick.obj) + _glfwSetGammaRampWin32 ; glfw3.lib(win32_monitor.obj) + _glfwSetWindowAspectRatioWin32 ; glfw3.lib(win32_window.obj) + SetPixelFormat ; gdi32.lib(GDI32.dll) + __imp_ClientToScreen ; user32.lib(USER32.dll) + ??_C@_0BP@OHFKOFFD@Win32?3?5Failed?5to?5create?5cursor@ ; glfw3.lib(win32_window.obj) + ??_C@_0BN@GDKHKIAN@wglGetPixelFormatAttribivARB@ ; glfw3.lib(wgl_context.obj) + _glfwConnectWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BF@BPPLLLDH@OSMesaGetDepthBuffer@ ; glfw3.lib(osmesa_context.obj) + ??_C@_05MPLLHCJG@bad?5V@ ; stb_image.obj + glfwGetJoystickUserPointer ; glfw3.lib(input.obj) + _glfwShowWindowNull ; glfw3.lib(null_window.obj) + _glfwWindowHoveredWin32 ; glfw3.lib(win32_window.obj) + _glfwAllocMonitor ; glfw3.lib(monitor.obj) + ??_C@_0O@HFAAEHFL@libGLESv2?4dll@ ; glfw3.lib(egl_context.obj) + ??_C@_0CM@GKIHKJDL@A?5return?5array?5was?5too?5small?5fo@ ; glfw3.lib(vulkan.obj) + ??_C@_0BP@KPGBLOB@Win32?3?5Unknown?5standard?5cursor@ ; glfw3.lib(win32_window.obj) + _glfwSplitBPP ; glfw3.lib(monitor.obj) + ??_C@_0O@NIPGCINC@Unknown?5error@ ; glfw3.lib(win32_monitor.obj) + fseek ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + _glfwInputDrop ; glfw3.lib(input.obj) + GetActiveWindow ; user32.lib(USER32.dll) + OffsetRect ; user32.lib(USER32.dll) + glfwGetCurrentContext ; glfw3.lib(context.obj) + ??_C@_0BBN@OLDKGLCG@03000000300f0000110100000000000@ ; glfw3.lib(input.obj) + ??_C@_0OH@FOPKIOOK@030000000d0f0000880000000000000@ ; glfw3.lib(input.obj) + glfwGetVideoModes ; glfw3.lib(monitor.obj) + _glfwInputError ; glfw3.lib(init.obj) + _glfwAllocGammaArrays ; glfw3.lib(monitor.obj) + ??_C@_0BCD@DJDMNCGP@0300000088880000080300000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@LPHNODCG@bad?5DRI?5len@ ; stb_image.obj + __real@43e0000000000000 ; glfw3.lib(input.obj) + ??_C@_0BCH@DHEFONIG@0300000038070000665200000000000@ ; glfw3.lib(input.obj) + _glfwRestoreWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BH@PHEJANJA@Invalid?5joystick?5ID?5?$CFi@ ; glfw3.lib(input.obj) + __scrt_stub_for_is_c_termination_complete ; MSVCRT.lib(ucrt_stubs.obj) + _get_startup_argv_mode ; MSVCRT.lib(argv_mode.obj) + ??_C@_0BH@FDAKHMHL@VK_KHR_wayland_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0CE@MEIEKJIC@Win32?3?5Failed?5to?5allocate?5TLS?5i@ ; glfw3.lib(win32_thread.obj) + ??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ ; glfw3.lib(win32_joystick.obj) + _glfwPlatformDestroyMutex ; glfw3.lib(win32_thread.obj) + __imp_RtlVirtualUnwind ; kernel32.lib(KERNEL32.dll) + __xmm@00ff00ff00ff00ff00ff00ff00ff00ff ; dllmain.obj + PtInRect ; user32.lib(USER32.dll) + _glfwInputWindowSize ; glfw3.lib(window.obj) + __scrt_initialize_winrt ; MSVCRT.lib(utility_desktop.obj) + AdjustWindowRectEx ; user32.lib(USER32.dll) + ??_C@_0BDE@MNGLEAIF@0300000038070000848300000000000@ ; glfw3.lib(input.obj) + __imp_GetRawInputDeviceInfoA ; user32.lib(USER32.dll) + ??_C@_0BBJ@OPMOLAIB@030000009d0d0000133000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@EPDBKPKA@0300000080830000030000000000000@ ; glfw3.lib(input.obj) + __xmm@166f166f166f166f166f166f166f166f ; dllmain.obj + _glfwSetCursorNull ; glfw3.lib(null_window.obj) + ??_C@_07LDLFNPGN@Windows@ ; glfw3.lib(win32_joystick.obj) + __imp_free ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ??_C@_05BLPKENEJ@bad?5H@ ; stb_image.obj + GetDC ; user32.lib(USER32.dll) + ??_C@_0P@DEBOOHKH@eglSwapBuffers@ ; glfw3.lib(egl_context.obj) + ??_C@_0CE@FEGPCKPN@WGL?3?5Failed?5to?5make?5context?5cur@ ; glfw3.lib(wgl_context.obj) + ??_C@_07CKIELOEH@no?5PLTE@ ; stb_image.obj + _glfwGetMonitorContentScaleNull ; glfw3.lib(null_monitor.obj) + __imp_GetDC ; user32.lib(USER32.dll) + SetClipboardData ; user32.lib(USER32.dll) + __imp_ungetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0CO@CNHHHABN@Win32?3?5Failed?5to?5register?5helpe@ ; glfw3.lib(win32_init.obj) + ??_C@_0BN@HJHDCKKP@Win32?3?5Failed?5to?5create?5icon@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBM@ENBFFJGN@03000000f0250000c28300000000000@ ; glfw3.lib(input.obj) + CreateBitmap ; gdi32.lib(GDI32.dll) + __raise_securityfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0BBJ@HBGMHFLL@0300000010080000030000000000000@ ; glfw3.lib(input.obj) + SetPropW ; user32.lib(USER32.dll) + ??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ ; glfw3.lib(win32_joystick.obj) + __xmm@80000000000000008000000000000000 ; glfw3.lib(win32_window.obj) + _glfwFreeMonitorWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCB@CIAKNBHG@030000008305000031b000000000000@ ; glfw3.lib(input.obj) + ??_C@_0JL@GGABLAON@03000000a30c0000270000000000000@ ; glfw3.lib(input.obj) + fopen_s ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0OB@DNKPJMLF@0300000038100000121400000000000@ ; glfw3.lib(input.obj) + glfwSetWindowTitle ; glfw3.lib(window.obj) + MoveWindow ; user32.lib(USER32.dll) + _glfwCreateWideStringFromUTF8Win32 ; glfw3.lib(win32_init.obj) + ??_C@_0BE@OHIPHHMJ@GL_ARB_debug_output@ ; glfw3.lib(context.obj) + ??_C@_0DJ@KAONABFK@A?5wait?5operation?5has?5not?5comple@ ; glfw3.lib(vulkan.obj) + ??_C@_0EF@PCMNMHKP@The?5requested?5feature?5has?5not?5y@ ; glfw3.lib(init.obj) + ??_C@_0BEF@OFEGMHGG@030000006f0e0000800100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDG@HFKCDPDO@030000004f0400000ed000000000000@ ; glfw3.lib(input.obj) + glfwGetMouseButton ; glfw3.lib(input.obj) + __imp_IsProcessorFeaturePresent ; kernel32.lib(KERNEL32.dll) + ??_C@_0CJ@NBJEEEJD@EGL?3?5Failed?5to?5clear?5current?5co@ ; glfw3.lib(egl_context.obj) + __imp_GlobalLock ; kernel32.lib(KERNEL32.dll) + EnumDisplaySettingsW ; user32.lib(USER32.dll) + ??_C@_01DHDKHMHF@6@ ; glfw3.lib(null_window.obj) + ??_C@_06LDHPELJC@dpdown@ ; glfw3.lib(input.obj) + __imp_UnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCC@ICCBFEBO@030000000d0f0000ee0000000000000@ ; glfw3.lib(input.obj) + _glfwGetFramebufferSizeNull ; glfw3.lib(null_window.obj) + __xmm@e09ee565e09ee565e09ee565e09ee565 ; dllmain.obj + _RTC_Initialize ; MSVCRT.lib(initsect.obj) + ??_C@_0N@IECDHMDI@zlib?5corrupt@ ; stb_image.obj + ??_C@_0L@NCPEAJBD@?$CD?$DPRADIANCE@ ; stb_image.obj + ??_C@_0BM@OCGPLDNC@ChangeWindowMessageFilterEx@ ; glfw3.lib(win32_init.obj) + ??_C@_0BCG@DHLFHLM@03000000c82d0000026000000000000@ ; glfw3.lib(input.obj) + EnumDisplayDevicesW ; user32.lib(USER32.dll) + RegisterClassExW ; user32.lib(USER32.dll) + __imp_GetCurrentThreadId ; kernel32.lib(KERNEL32.dll) + DragFinish ; shell32.lib(SHELL32.dll) + ??_C@_0CM@IALNOPFK@Win32?3?5Failed?5to?5retrieve?5own?5m@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBJ@PKNJJDLA@0300000025090000888800000000000@ ; glfw3.lib(input.obj) + ??_C@_0LO@EDCIDLIK@0300000079000000110000000000000@ ; glfw3.lib(input.obj) + __real@408f400000000000 ; glfw3.lib(win32_window.obj) + ??_C@_0OD@GOLNACF@030000000d0f0000270000000000000@ ; glfw3.lib(input.obj) + __imp_GetMonitorInfoW ; user32.lib(USER32.dll) + glfwGetWindowOpacity ; glfw3.lib(window.obj) + ??_C@_0BBL@EFBOJJAL@0300000066f70000050000000000000@ ; glfw3.lib(input.obj) + ??_C@_1BE@LDFMCOHA@?$AAG?$AAL?$AAF?$AAW?$AA_?$AAI?$AAC?$AAO?$AAN@ ; glfw3.lib(win32_window.obj) + _glfw_free ; glfw3.lib(init.obj) + ??_C@_0OM@HGBIMFGF@03000000300f0000161100000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@DMAPJJO@bad?5format@ ; stb_image.obj + __guard_xfg_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_0PC@EBDFKGFN@0300000079000000441800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCL@PCNFJELE@030000006e0500000a2000000000000@ ; glfw3.lib(input.obj) + QueryPerformanceCounter ; kernel32.lib(KERNEL32.dll) + _glfwGetWindowSizeNull ; glfw3.lib(null_window.obj) + ??_C@_0BCJ@NOGEFCJN@0300000032150000010400000000000@ ; glfw3.lib(input.obj) + glfwGetKey ; glfw3.lib(input.obj) + ??_C@_01KGKMHCOC@e@ ; glfw3.lib(null_window.obj) + ??_C@_0KI@EPMKBGDM@0300000000f00000f10000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CA@KCGCFCEG@Invalid?5window?5attribute?50x?$CF08X@ ; glfw3.lib(window.obj) + ??_C@_0BCG@NCIHPENA@03000000c62400001b8900000000000@ ; glfw3.lib(input.obj) + malloc ; ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + SetUnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + DispatchMessageW ; user32.lib(USER32.dll) + GetKeyState ; user32.lib(USER32.dll) + FormatMessageW ; kernel32.lib(KERNEL32.dll) + ??_C@_0BBP@NMPDIJKG@78696e7075740800000000000000000@ ; glfw3.lib(input.obj) + GetRawInputDeviceInfoA ; user32.lib(USER32.dll) + ??_C@_0KL@BLLPLAOA@0300000079000000241800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BD@KGLHBPN@WGL_EXT_colorspace@ ; glfw3.lib(wgl_context.obj) + ??_C@_02PCIJFNDE@?$AN?6@ ; glfw3.lib(input.obj) + ??_C@_0BCG@LIMAPBKF@03000000a30600000b0400000001000@ ; glfw3.lib(input.obj) + ?configure_argv@__scrt_narrow_argv_policy@@SAHXZ ; MSVCRT.lib(utility.obj) + ??_C@_0BA@EPLGABLH@Xbox?5Controller@ ; glfw3.lib(win32_joystick.obj) + __imp_TlsAlloc ; kernel32.lib(KERNEL32.dll) + ??_C@_0M@ILLOCNCO@bad?5palette@ ; stb_image.obj + glfwTerminate ; glfw3.lib(init.obj) + SetCursorPos ; user32.lib(USER32.dll) + ??_C@_0BB@FOKGPEKG@bad?5code?5lengths@ ; stb_image.obj + glfwGetInputMode ; glfw3.lib(input.obj) + ??_C@_0LI@CLAPJPEB@03000000c82d0000015100000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowPosNull ; glfw3.lib(null_window.obj) + __imp_GetWindowPlacement ; user32.lib(USER32.dll) + _RTC_Terminate ; MSVCRT.lib(initsect.obj) + ??_C@_0BCA@MGCGIKLM@030000006b140000020300000000000@ ; glfw3.lib(input.obj) + __imp_SetThreadExecutionState ; kernel32.lib(KERNEL32.dll) + ??_C@_0BA@KLNDOKJD@expected?5marker@ ; stb_image.obj + __real@41cb3333 ; glfw3.lib(win32_monitor.obj) + glfwGetKeyName ; glfw3.lib(input.obj) + strtol ; ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ??_C@_0CO@KALOHMEN@WGL?3?5Unknown?5pixel?5format?5attri@ ; glfw3.lib(wgl_context.obj) + ??_C@_0CL@LJNEEKEI@Win32?3?5Failed?5to?5create?5Vulkan?5@ ; glfw3.lib(win32_window.obj) + EmptyClipboard ; user32.lib(USER32.dll) + glfwRequestWindowAttention ; glfw3.lib(window.obj) + ??_C@_0JK@EKFMIBLA@03000000c82d000021ab00000000000@ ; glfw3.lib(input.obj) + glfwGetGammaRamp ; glfw3.lib(monitor.obj) + __scrt_set_unhandled_exception_filter ; MSVCRT.lib(utility_desktop.obj) + ??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ ; glfw3.lib(win32_joystick.obj) + _glfwWaitEventsTimeoutNull ; glfw3.lib(null_window.obj) + ??_C@_07IMHMNOIB@BMP?5RLE@ ; stb_image.obj + ??_C@_0DB@JJADGKIE@Raw?5mouse?5motion?5is?5not?5support@ ; glfw3.lib(input.obj) + qsort ; ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ??_C@_09OJDLMMBJ@too?5large@ ; stb_image.obj + ??_C@_07NCIOKENI@not?5HDR@ ; stb_image.obj + ??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCF@KHBKMEME@03000000c82d0000016100000000000@ ; glfw3.lib(input.obj) + glfwSetWindowIconifyCallback ; glfw3.lib(window.obj) + SetWindowPos ; user32.lib(USER32.dll) + ??_C@_0L@ELKKGGMD@libEGL?4dll@ ; glfw3.lib(egl_context.obj) + __current_exception_context ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0CN@FGAGPCCP@Win32?3?5Failed?5to?5convert?5clipbo@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@LNLJDDIF@030000004f04000003d000000000000@ ; glfw3.lib(input.obj) + _register_onexit_function ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _execute_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BBK@DBILHFPC@030000005509000000b400000000000@ ; glfw3.lib(input.obj) + ??_C@_07FLLKAONK@dpright@ ; glfw3.lib(input.obj) + __xmm@00002018000020170000201600002015 ; glfw3.lib(wgl_context.obj) + __imp_DragQueryPoint ; shell32.lib(SHELL32.dll) + ??_C@_0OC@FELEMKIB@03000000120c0000f60e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBK@FBBILDLI@0300000038070000853200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BF@OOKNCFMF@OSMesaDestroyContext@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BDF@FFJELFPB@030000006b140000020d00000000000@ ; glfw3.lib(input.obj) + _glfwWaitEventsTimeoutWin32 ; glfw3.lib(win32_window.obj) + glfwPostEmptyEvent ; glfw3.lib(window.obj) + __scrt_stub_for_acrt_thread_attach ; MSVCRT.lib(ucrt_stubs.obj) + UnregisterClassW ; user32.lib(USER32.dll) + ??_C@_0BBF@DJBNPOOL@0300000066660000670600000000000@ ; glfw3.lib(input.obj) + glfwGetOSMesaColorBuffer ; glfw3.lib(osmesa_context.obj) + __imp_MonitorFromWindow ; user32.lib(USER32.dll) + glfwDestroyWindow ; glfw3.lib(window.obj) + ??_C@_07IBAPPAHJ@glClear@ ; glfw3.lib(context.obj) + ??_C@_0FB@EPGEGHDL@An?5EGLSurface?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + _glfwDetectJoystickConnectionWin32 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BF@DMNOCJMB@VK_EXT_metal_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_06CLMBLEP@no?5SOI@ ; stb_image.obj + ??_C@_0CI@JNBCHAIF@WGL?3?5Failed?5to?5create?5OpenGL?5ES@ ; glfw3.lib(wgl_context.obj) + ??_C@_0JF@MFNKBEDG@03000000c82d0000095100000000000@ ; glfw3.lib(input.obj) + _glfwGetMonitorPosWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0M@HOIDFNFN@?$CD?$DPRADIANCE?6@ ; stb_image.obj + ??_C@_0NN@EKBBEDOM@03000000c82d0000065000000000000@ ; glfw3.lib(input.obj) + MonitorFromWindow ; user32.lib(USER32.dll) + ??_C@_0BM@OMEGJAIK@ERROR?3?5UNKNOWN?5VULKAN?5ERROR@ ; glfw3.lib(vulkan.obj) + ??_C@_0OI@FJCLICAJ@03000000b5070000140300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@OJFJMLEI@The?5specified?5window?5has?5no?5con@ ; glfw3.lib(init.obj) + __guard_check_icall_fptr ; MSVCRT.lib(guard_support.obj) + ??_C@_09MBBNGCKB@bad?5ctype@ ; stb_image.obj + _glfwSetWindowFloatingWin32 ; glfw3.lib(win32_window.obj) + _glfwInputWindowFocus ; glfw3.lib(window.obj) + GetSystemTimeAsFileTime ; kernel32.lib(KERNEL32.dll) + ??_C@_0PI@OKGGAFMJ@03000000341a0000010400000000000@ ; glfw3.lib(input.obj) + MultiByteToWideChar ; kernel32.lib(KERNEL32.dll) + ??_C@_0BD@CBEDEJPH@unknown?5image?5type@ ; stb_image.obj + ??_C@_0LC@FKHGODJA@03000000c82d0000129000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@IHJGMBHI@The?5logical?5or?5physical?5device?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BCD@KNBJHBAH@030000005e0400000a0b00000000000@ ; glfw3.lib(input.obj) + _glfwRestoreWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0JL@MEEFIFEH@03000000a30c0000280000000000000@ ; glfw3.lib(input.obj) + TranslateMessage ; user32.lib(USER32.dll) + ??_C@_0BF@HHLAJKBF@OSMesaGetColorBuffer@ ; glfw3.lib(osmesa_context.obj) + __imp__configure_narrow_argv ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetVulkanResultString ; glfw3.lib(vulkan.obj) + ??_C@_0BCP@ONIMJMJ@0300000066660000048800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@HLGICLNK@030000008f0e00000d3100000000000@ ; glfw3.lib(input.obj) + SetCapture ; user32.lib(USER32.dll) + glfwSetWindowSize ; glfw3.lib(window.obj) + _glfwInputMonitorWindow ; glfw3.lib(monitor.obj) + ??_C@_0DF@FEPNJFGL@Vulkan?3?5Loader?5does?5not?5export?5@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBH@LCHOLIJA@030000000d0f00005e0000000000000@ ; glfw3.lib(input.obj) + glfwSetFramebufferSizeCallback ; glfw3.lib(window.obj) + ??_C@_01FMEDJKGI@o@ ; glfw3.lib(null_window.obj) + ??_C@_0KB@CIFFNJNE@0300000000f00000030000000000000@ ; glfw3.lib(input.obj) + glfwInitVulkanLoader ; glfw3.lib(init.obj) + glfwPlatformSupported ; glfw3.lib(platform.obj) + __imp_GetProcAddress ; kernel32.lib(KERNEL32.dll) + ??_C@_0O@DHHDCCLF@glGetIntegerv@ ; glfw3.lib(context.obj) + _glfwInputMouseClick ; glfw3.lib(input.obj) + sscanf ; glfw3.lib(context.obj) + ??_C@_06FHABPINC@rightx@ ; glfw3.lib(input.obj) + ??_C@_0LK@DEPDOLNO@0300000028040000014000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BC@ICHKG@eglDestroySurface@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCD@JLFNAMGI@030000006b140000030300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BAE@KADGKHDN@030000000d0f0000700000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDB@KNKJIBDH@030000006f0e0000320100000000000@ ; glfw3.lib(input.obj) + _glfwInputWindowDamage ; glfw3.lib(window.obj) + ??_C@_0CE@OJEBIEPE@OSMesa?3?5OpenGL?5profiles?5unavail@ ; glfw3.lib(osmesa_context.obj) + glfwSetCharCallback ; glfw3.lib(input.obj) + __imp_MsgWaitForMultipleObjects ; user32.lib(USER32.dll) + _glfwGetWindowPosWin32 ; glfw3.lib(win32_window.obj) + __imp_WideCharToMultiByte ; kernel32.lib(KERNEL32.dll) + ??_C@_0DF@NPMNAJFG@WGL?3?5Driver?5does?5not?5support?5Op@ ; glfw3.lib(wgl_context.obj) + ??_C@_0N@IGFNFAOP@eglTerminate@ ; glfw3.lib(egl_context.obj) + __imp_GetCurrentProcessId ; kernel32.lib(KERNEL32.dll) + _glfwPlatformDestroyTls ; glfw3.lib(win32_thread.obj) + ??_C@_0EN@CIIGDABJ@EGL?3?5The?5context?5must?5be?5curren@ ; glfw3.lib(egl_context.obj) + ReleaseCapture ; user32.lib(USER32.dll) + ??_C@_0BE@NAMJKDNF@missing?5color?5table@ ; stb_image.obj + ??_C@_0BBJ@FKANGOML@0300000025090000050000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBN@HKPLBABN@78696e7075740600000000000000000@ ; glfw3.lib(input.obj) + __scrt_is_managed_app ; MSVCRT.lib(utility_desktop.obj) + glfwDefaultWindowHints ; glfw3.lib(window.obj) + __castguard_set_user_handler ; MSVCRT.lib(guard_support.obj) + feof ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0BCB@OOEANFEH@03000000300f0000100100000000000@ ; glfw3.lib(input.obj) + ??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ ; glfw3.lib(context.obj) + ??_C@_0BCL@EMNJKCNM@030000004f04000023b300000000000@ ; glfw3.lib(input.obj) + ??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ ; glfw3.lib(context.obj) + ??_C@_1CI@MPNNJFCJ@?$AAG?$AAL?$AAF?$AAW?$AA?5?$AAm?$AAe?$AAs?$AAs?$AAa?$AAg?$AAe?$AA?5?$AAw?$AAi@ ; glfw3.lib(win32_init.obj) + __real@3ff0000000000000 ; dllmain.obj + __security_init_cookie ; MSVCRT.lib(gs_support.obj) + ??_C@_0BBH@LKFOHLNE@030000000d0f00005f0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@CMBLEBDK@03000000242f00008a0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0NO@NNNFDMKP@030000006d0400001ac200000000000@ ; glfw3.lib(input.obj) + __castguard_slow_path_check_os_handled ; MSVCRT.lib(guard_support.obj) + __imp_PeekMessageW ; user32.lib(USER32.dll) + __guard_dispatch_icall_fptr ; MSVCRT.lib(guard_support.obj) + _glfw_fminf ; glfw3.lib(init.obj) + ??_C@_0BM@KPJJBADD@Graphics?5mode?5not?5supported@ ; glfw3.lib(win32_monitor.obj) + _glfwGetVideoModeNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BEP@LJAOBMNM@030000006f0e0000840100000000000@ ; glfw3.lib(input.obj) + __imp_SetCursorPos ; user32.lib(USER32.dll) + __imp_SetPixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0CM@DGJKGOGD@WGL?3?5Failed?5to?5find?5a?5suitable?5@ ; glfw3.lib(wgl_context.obj) + __scrt_stub_for_acrt_initialize ; MSVCRT.lib(ucrt_stubs.obj) + glfwGetJoystickName ; glfw3.lib(input.obj) + ??_C@_0BBD@HKHEBCPH@030000006e050000052000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@KEAIGPHD@eglGetPlatformDisplayEXT@ ; glfw3.lib(egl_context.obj) + ??_C@_0CD@IGHBCNOG@Win32?3?5Failed?5to?5query?5monitor?5@ ; glfw3.lib(win32_monitor.obj) + WideCharToMultiByte ; kernel32.lib(KERNEL32.dll) + __imp_DeleteDC ; gdi32.lib(GDI32.dll) + _glfwSetWindowMonitorNull ; glfw3.lib(null_window.obj) + ??_C@_0BCB@EPBJCJPK@030000000d050000030800000000000@ ; glfw3.lib(input.obj) + glfwGetJoystickAxes ; glfw3.lib(input.obj) + ??_C@_0BJ@ODLLHDDH@WGL_EXT_framebuffer_sRGB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0FA@OHOPKHFK@WGL?3?5OpenGL?5profile?5requested?5b@ ; glfw3.lib(wgl_context.obj) + GetPropW ; user32.lib(USER32.dll) + glfwSetWindowCloseCallback ; glfw3.lib(window.obj) + __scrt_get_dyn_tls_init_callback ; MSVCRT.lib(dyn_tls_init.obj) + ?__scrt_uninitialize_type_info@@YAXXZ ; MSVCRT.lib(tncleanup.obj) + ??_C@_0BD@DKPJMBMG@VK_KHR_xcb_surface@ ; glfw3.lib(vulkan.obj) + ??_C@_0N@KDLCCKCH@bad?5tRNS?5len@ ; stb_image.obj + __CastGuardVftablesStart ; MSVCRT.lib(guard_support.obj) + __report_rangecheckfailure ; MSVCRT.lib(gs_report.obj) + ??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ ; glfw3.lib(context.obj) + ??_C@_06IFCEAHIA@no?5SOF@ ; stb_image.obj + ??_C@_0BO@LHMLBOLK@SetProcessDpiAwarenessContext@ ; glfw3.lib(win32_init.obj) + ??_C@_0BBN@FMDJFAID@0300000002200000009000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ ; glfw3.lib(win32_joystick.obj) + _glfwGetWindowContentScaleNull ; glfw3.lib(null_window.obj) + ChoosePixelFormat ; gdi32.lib(GDI32.dll) + _glfwSetWindowOpacityNull ; glfw3.lib(null_window.obj) + __xmm@eb1a08a9eb1a08a9eb1a08a9eb1a08a9 ; dllmain.obj + ??_C@_07MLPECBNA@no?5IDAT@ ; stb_image.obj + UnregisterDeviceNotification ; user32.lib(USER32.dll) + ??_C@_0BBF@GOLEDGAH@030000006d04000011c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0OJ@NCDOGEIN@030000000d0f0000920000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCM@OALNNLEB@030000005e0400008e0200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CI@KAHNKLLC@One?5or?5more?5argument?5values?5are@ ; glfw3.lib(egl_context.obj) + __imp_strspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _guard_rf_checks_enforced ; MSVCRT.lib(guard_support.obj) + ??_C@_0BC@GHLIKKMD@bad?5filter?5method@ ; stb_image.obj + ??_C@_0BC@HONLJDPH@eglGetProcAddress@ ; glfw3.lib(egl_context.obj) + ??_C@_0CE@HKNBGEPI@A?5host?5memory?5allocation?5has?5fa@ ; glfw3.lib(vulkan.obj) + ??_C@_0P@HJKEKLKD@eglQueryString@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCP@NIMGPLGA@0300000038070000638200000000000@ ; glfw3.lib(input.obj) + __xmm@0000202400002021000020200000201f ; glfw3.lib(wgl_context.obj) + ??_C@_0BDG@FAKOKHMO@030000004f04000000b300000000000@ ; glfw3.lib(input.obj) + __isa_available_default ; dllmain.obj + ??_C@_0BK@KJGCMOHN@Invalid?5window?5size?5?$CFix?$CFi@ ; glfw3.lib(window.obj) + __scrt_dllmain_uninitialize_critical ; MSVCRT.lib(utility.obj) + ??_C@_0ED@GAJEHCGA@An?5EGLContext?5argument?5does?5not@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBC@LOLNAEDE@03000000ac0500002c0200000000000@ ; glfw3.lib(input.obj) + ??_C@_01OHGJGJJP@?$FL@ ; glfw3.lib(null_window.obj) + ??_C@_0BBL@BABJOOFG@03000000ffff0000000000000000000@ ; glfw3.lib(input.obj) + __imp_SetForegroundWindow ; user32.lib(USER32.dll) + __imp_pow ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0BDN@CCAJAJCK@0300000079000000001800000000000@ ; glfw3.lib(input.obj) + glfwGetTimerFrequency ; glfw3.lib(input.obj) + __xmm@ffffffffffffffffffffffffffffffff ; MSVCRT.lib(utility.obj) + RtlCaptureContext ; kernel32.lib(KERNEL32.dll) + _glfwGetEGLNativeDisplayNull ; glfw3.lib(null_window.obj) + memset ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCP@EHCNAHCG@03000000d62000009f3100000000000@ ; glfw3.lib(input.obj) + __real@42ff0000 ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBF@CLNKBPGE@030000008f0e0000120000000000000@ ; glfw3.lib(input.obj) + ??_C@_0JO@HBLEAOAI@03000000c0110000135200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CA@CJLAIOKE@WGL_ARB_create_context_no_error@ ; glfw3.lib(wgl_context.obj) + glfwGetWindowFrameSize ; glfw3.lib(window.obj) + __scrt_dllmain_crt_thread_attach ; MSVCRT.lib(utility.obj) + ??_C@_0NO@KCLNENJG@03000000c82d0000303200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@FFMMFAIL@Invalid?5image?5dimensions?5for?5wi@ ; glfw3.lib(window.obj) + glfwSetMonitorUserPointer ; glfw3.lib(monitor.obj) + __CastGuardVftablesEnd ; MSVCRT.lib(guard_support.obj) + __imp_QueryPerformanceCounter ; kernel32.lib(KERNEL32.dll) + GetClassLongPtrW ; user32.lib(USER32.dll) + _glfwPollJoystickWin32 ; glfw3.lib(win32_joystick.obj) + __imp__register_onexit_function ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + glfwFocusWindow ; glfw3.lib(window.obj) + _glfwIconifyWindowWin32 ; glfw3.lib(win32_window.obj) + _glfwGetWindowContentScaleWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0OO@GFAPAFAG@0300000011010000191400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBO@IBHMMFFH@030000008f0e0000080000000000000@ ; glfw3.lib(input.obj) + ??_C@_0KC@KGMCONBG@03000000c82d0000302800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@MKBJECLN@030000000d0f00009c0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@CBIJNOOO@03000000a306000020f600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ ; glfw3.lib(win32_joystick.obj) + glfwGetMonitorName ; glfw3.lib(monitor.obj) + ??_C@_0BCD@KBJOCLC@03000000c82d0000036000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCH@GKMNBEOK@03000000c0110000035500001101000@ ; glfw3.lib(input.obj) + ??_C@_04ELNJHLFH@PICT@ ; stb_image.obj + ??_C@_0BF@JCGDPBAA@bad?5interlace?5method@ ; stb_image.obj + ??_C@_01DICPFPGM@k@ ; glfw3.lib(null_window.obj) + ??_C@_0BCA@IDEGIHPL@030000006d04000018c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CB@LDOHHBIH@OSMesa?3?5Failed?5to?5create?5contex@ ; glfw3.lib(osmesa_context.obj) + __real@bf800000 ; glfw3.lib(input.obj) + TlsFree ; kernel32.lib(KERNEL32.dll) + glfwGetOSMesaContext ; glfw3.lib(osmesa_context.obj) + ??_C@_0N@MEFCLEJO@leftshoulder@ ; glfw3.lib(input.obj) + __imp__initterm_e ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetWindowFrameSizeNull ; glfw3.lib(null_window.obj) + powf ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0N@IILPFLFM@vulkan?91?4dll@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBB@PJOPHLEI@0300000036280000010000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BA@KMGHNAFM@Invalid?5time?5?$CFf@ ; glfw3.lib(window.obj) + fgetc ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0P@JEAFOMAF@first?5not?5IHDR@ ; stb_image.obj + _glfwInitGamepadMappings ; glfw3.lib(input.obj) + _glfwInputWindowCloseRequest ; glfw3.lib(window.obj) + ??_C@_0CA@HGIOILGO@EGL_ANGLE_platform_angle_vulkan@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBD@LABNEKLL@0300000038070000188800000000000@ ; glfw3.lib(input.obj) + glfwCreateWindowSurface ; glfw3.lib(vulkan.obj) + __scrt_initialize_default_local_stdio_options ; MSVCRT.lib(default_local_stdio_options.obj) + ??_C@_0M@CICAFFCH@bad?5COM?5len@ ; stb_image.obj + __imp_GlobalUnlock ; kernel32.lib(KERNEL32.dll) + ??_C@_0MI@KAOJFFGI@030000007d040000054000000000000@ ; glfw3.lib(input.obj) + ??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ ; glfw3.lib(win32_joystick.obj) + _glfwGetPhysicalDevicePresentationSupportNull ; glfw3.lib(null_window.obj) + ??_C@_0BJ@IHHANIOG@Allocation?5size?5overflow@ ; glfw3.lib(init.obj) + _glfwDestroyWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BG@HBCIDECD@vkGetInstanceProcAddr@ ; glfw3.lib(vulkan.obj) + ??_C@_0BK@JOBLJGNA@wglGetExtensionsStringARB@ ; glfw3.lib(wgl_context.obj) + glfwJoystickIsGamepad ; glfw3.lib(input.obj) + __imp_CreateRectRgn ; gdi32.lib(GDI32.dll) + _load_config_used ; MSVCRT.lib(loadcfg.obj) + __xmm@000000ff000000ff000000ff000000ff ; dllmain.obj + ??_C@_0BCN@IMCBAJO@030000006f0e0000026300000000000@ ; glfw3.lib(input.obj) + _glfwSetWindowTitleWin32 ; glfw3.lib(win32_window.obj) + __imp_GetDeviceCaps ; gdi32.lib(GDI32.dll) + __crt_debugger_hook ; MSVCRT.lib(utility_desktop.obj) + ??_C@_00CNPNBAHC@@ ; stb_image.obj + ??_C@_0BCG@EICBBMKF@03000000c82d0000159000000000000@ ; glfw3.lib(input.obj) + ??_C@_07KMJLPAII@not?5GIF@ ; stb_image.obj + _glfwPlatformCreateMutex ; glfw3.lib(win32_thread.obj) + RtlLookupFunctionEntry ; kernel32.lib(KERNEL32.dll) + ??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ ; glfw3.lib(context.obj) + ??_C@_0LK@IEAMBPJF@03000000a0050000323200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@BAKFEMPI@03000000a30600001af500000000000@ ; glfw3.lib(input.obj) + __imp_RegisterRawInputDevices ; user32.lib(USER32.dll) + ??_C@_0N@DJABBOOH@unknown?5code@ ; stb_image.obj + ??_C@_0DK@CDBDDLLM@WGL?3?5Driver?5does?5not?5support?5th@ ; glfw3.lib(wgl_context.obj) + ??_C@_0LN@ELDHBANA@0300000083050000602000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@BAPIEFAH@Invalid?5gamma?5value?5?$CFf@ ; glfw3.lib(monitor.obj) + ??_C@_0BCF@OCBMGCLB@030000004c050000680200000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@DHLNGPDM@rightstick@ ; glfw3.lib(input.obj) + ??_C@_0BL@IDFNAMEG@Invalid?5window?5hint?50x?$CF08X@ ; glfw3.lib(window.obj) + ??_C@_01GLPGHMHM@z@ ; glfw3.lib(null_window.obj) + _glfwWindowMaximizedNull ; glfw3.lib(null_window.obj) + _glfwInitWGL ; glfw3.lib(wgl_context.obj) + __castguard_slow_path_check_debugbreak ; MSVCRT.lib(guard_support.obj) + __castguard_check_failure_nop ; MSVCRT.lib(guard_support.obj) + ??_C@_0M@OPOBFDCB@glGetString@ ; glfw3.lib(context.obj) + ??_C@_0BBB@MOEBBOIH@030000008305000009a000000000000@ ; glfw3.lib(input.obj) + TlsGetValue ; kernel32.lib(KERNEL32.dll) + LoadCursorW ; user32.lib(USER32.dll) + SystemParametersInfoW ; user32.lib(USER32.dll) + _glfwDestroyWindowNull ; glfw3.lib(null_window.obj) + _glfwTerminateNull ; glfw3.lib(null_init.obj) + __scrt_dllmain_after_initialize_c ; MSVCRT.lib(utility.obj) + ??_C@_0BAA@HNPCOCLG@030000000d0f0000110000000000000@ ; glfw3.lib(input.obj) + __xmm@00000002000000000000000400000000 ; dllmain.obj + ??_C@_0NF@EPHCAKNM@030000007d040000084000000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@JDIGFFDA@030000004b120000014d00000000000@ ; glfw3.lib(input.obj) + __xmm@80000000800000008000000080000000 ; dllmain.obj + _glfwSetWindowTitleNull ; glfw3.lib(null_window.obj) + ??_C@_0CH@NEGEBDM@A?5requested?5extension?5is?5not?5su@ ; glfw3.lib(vulkan.obj) + ??_C@_0BBJ@MEIBJIGF@0300000010080000010000000000000@ ; glfw3.lib(input.obj) + __imp_SetUnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_08PEMNBIMD@DwmFlush@ ; glfw3.lib(win32_init.obj) + strncmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0DH@EKEHMEFD@Too?5many?5objects?5of?5the?5type?5ha@ ; glfw3.lib(vulkan.obj) + __scrt_release_startup_lock ; MSVCRT.lib(utility.obj) + ??_C@_01EFFIKLCJ@n@ ; glfw3.lib(null_window.obj) + __imp_IsIconic ; user32.lib(USER32.dll) + ??_C@_0BBL@JKCMMIPG@0300000038070000388800000000000@ ; glfw3.lib(input.obj) + __imp__cexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0BF@NPDKPIKE@WGL_EXT_swap_control@ ; glfw3.lib(wgl_context.obj) + __imp_CreateIconIndirect ; user32.lib(USER32.dll) + __std_type_info_destroy_list ; vcruntime.lib(VCRUNTIME140.dll) + glfwGetMonitors ; glfw3.lib(monitor.obj) + ??_C@_0OB@DOLNAILH@0300000026090000262500000000000@ ; glfw3.lib(input.obj) + _glfwGetRequiredInstanceExtensionsNull ; glfw3.lib(null_window.obj) + ??_C@_0ME@GIJLHGEN@030000007e050000062000000100000@ ; glfw3.lib(input.obj) + __imp_GetCursorPos ; user32.lib(USER32.dll) + __isa_available_init ; MSVCRT.lib(cpu_disp.obj) + __real@3fe0000000000000 ; glfw3.lib(input.obj) + _glfwGetEGLPlatformNull ; glfw3.lib(null_window.obj) + __scrt_fastfail ; MSVCRT.lib(utility_desktop.obj) + _glfwFocusWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BO@FABLLHKK@WGL_ARB_context_flush_control@ ; glfw3.lib(wgl_context.obj) + glfwHideWindow ; glfw3.lib(window.obj) + __imp_TlsGetValue ; kernel32.lib(KERNEL32.dll) + ??_C@_0EL@BBAGGFOK@An?5EGLConfig?5argument?5does?5not?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0O@ENGHJHNB@OpenGL?5ES?9CM?5@ ; glfw3.lib(context.obj) + _glfwSetCursorModeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0CB@EJFBPGFM@A?5surface?5is?5no?5longer?5availabl@ ; glfw3.lib(vulkan.obj) + __imp__initialize_narrow_environment ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0LL@KLNOPNHB@030000008f0e0000133000000000000@ ; glfw3.lib(input.obj) + ??_C@_0DD@JDDDNHLP@Null?3?5Gamma?5ramp?5size?5must?5matc@ ; glfw3.lib(null_monitor.obj) + __real@7f7fffff ; glfw3.lib(monitor.obj) + _glfwGetScancodeNameWin32 ; glfw3.lib(win32_window.obj) + _glfwGetFramebufferSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0O@CNHKKDIM@bad?5DQT?5table@ ; stb_image.obj + ??_C@_0BAK@PBDFELHA@030000000d0f0000220000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BP@PHOHHIJJ@EGL?3?5Failed?5to?5bind?5OpenGL?3?5?$CFs@ ; glfw3.lib(egl_context.obj) + ??_C@_0CD@CODEPNKE@EGL?3?5Failed?5to?5get?5EGL?5display?3@ ; glfw3.lib(egl_context.obj) + ??_C@_01HHGOMJKL@l@ ; glfw3.lib(null_window.obj) + ??_C@_01MIFGBAGJ@?$CL@ ; glfw3.lib(null_window.obj) + ??_C@_0BB@KEKMNHDF@eglCreateContext@ ; glfw3.lib(egl_context.obj) + ??_C@_0BP@BFHGHOIO@Win32?3?5Failed?5to?5create?5window@ ; glfw3.lib(win32_window.obj) + strcspn ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + _glfwGetWindowSizeWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BJ@PGPMJKGJ@Vulkan?3?5Loader?5not?5found@ ; glfw3.lib(vulkan.obj) + ??_C@_0PJ@FPHAKAJD@0300000079000000451800000000000@ ; glfw3.lib(input.obj) + _glfwCompareVideoModes ; glfw3.lib(monitor.obj) + ??_C@_0BM@PKHPFLOM@There?5is?5no?5current?5context@ ; glfw3.lib(init.obj) + ??_C@_0BBE@JFJIACOB@03000000ac0500004d0400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCC@FJIJNHMA@03000000d62000006dca00000000000@ ; glfw3.lib(input.obj) + _glfwGetEGLPlatformWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0M@FLKHLCCP@lefttrigger@ ; glfw3.lib(input.obj) + ??_C@_0O@DJDONBGH@libOSMesa?4dll@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0O@BMJFLKOA@eglGetDisplay@ ; glfw3.lib(egl_context.obj) + ??_C@_0P@IENCOMCD@VK_KHR_surface@ ; glfw3.lib(vulkan.obj) + _initterm ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + NtCurrentTeb ; MSVCRT.lib(utility.obj) + ??_C@_0BI@INMBJMIJ@vkCreateWin32SurfaceKHR@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBP@ECGIDGCJ@03000000120c0000210e00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBI@BKECFDAD@0300000079000000070000000000000@ ; glfw3.lib(input.obj) + __imp__initterm ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_0OC@CPLNMNJF@030000004c050000da0c00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BC@CLDFFND@GL_EXT_robustness@ ; glfw3.lib(context.obj) + ??_C@_0BCG@LJNCMOGI@03000000c62400002a8900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@HKBKHEFP@0300000045130000083000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BK@PMMAHJAK@ERROR?3?5UNKNOWN?5GLFW?5ERROR@ ; glfw3.lib(init.obj) + ??_C@_0BCN@POFKMMNB@03000000d6200000955700000000000@ ; glfw3.lib(input.obj) + __imp_memcpy ; vcruntime.lib(VCRUNTIME140.dll) + _glfwWindowVisibleWin32 ; glfw3.lib(win32_window.obj) + __scrt_acquire_startup_lock ; MSVCRT.lib(utility.obj) + _glfwInputWindowMaximize ; glfw3.lib(window.obj) + __xmm@00002003000020130000200100002010 ; glfw3.lib(wgl_context.obj) + __imp_fread ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_01FAMBOPH@4@ ; glfw3.lib(null_window.obj) + __xmm@e9cf12d0e9cf12d0e9cf12d0e9cf12d0 ; dllmain.obj + _glfwCenterCursorInContentArea ; glfw3.lib(input.obj) + _glfwFreeGammaArrays ; glfw3.lib(monitor.obj) + _glfwStringInExtensionString ; glfw3.lib(context.obj) + ??_C@_0CH@MMCOKIKC@EGL?5cannot?5access?5a?5requested?5r@ ; glfw3.lib(egl_context.obj) + ??_C@_0BBK@NKANFPJB@0300000045750000040100000000000@ ; glfw3.lib(input.obj) + __imp_IsWindowVisible ; user32.lib(USER32.dll) + ??_C@_0DM@FCAOPKO@WGL?3?5Failed?5to?5enable?5sharing?5w@ ; glfw3.lib(wgl_context.obj) + ??_C@_0LF@DNFJHMLL@0300000000050000289b00000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCN@BCBEDKCA@030000006f0e0000190100000000000@ ; glfw3.lib(input.obj) + ??_C@_0M@KHBIBJBG@unknown?5BMP@ ; stb_image.obj + ??_C@_0BJ@HDECIKCI@Invalid?5init?5hint?50x?$CF08X@ ; glfw3.lib(init.obj) + glfwMakeContextCurrent ; glfw3.lib(context.obj) + _glfwSetWindowResizableWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BE@EJHIPKNO@1?12?14?18?116?9bit?5only@ ; stb_image.obj + ??_C@_0N@BOFJCHAP@bad?5DQT?5type@ ; stb_image.obj + glfwSetTime ; glfw3.lib(input.obj) + ??_C@_01LKDEMHDF@s@ ; glfw3.lib(null_window.obj) + ??_C@_01KDCPPGHE@r@ ; glfw3.lib(null_window.obj) + ??_C@_0O@ONJGDDHG@xinput1_1?4dll@ ; glfw3.lib(win32_init.obj) + ??_C@_0L@HJOCIPHF@eglBindAPI@ ; glfw3.lib(egl_context.obj) + ??_C@_03HAFBONIK@IG_@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BCC@JCAIEANG@03000000a3060000210600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@CEDNNLBG@tRNS?5before?5PLTE@ ; stb_image.obj + ??_C@_0BCN@NICPPBBL@0300000038070000625200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBD@DCBELLKM@03000000bd12000003c000000000000@ ; glfw3.lib(input.obj) + _glfwGetKeyScancodeNull ; glfw3.lib(null_window.obj) + __real@405e000000000000 ; glfw3.lib(win32_window.obj) + GlobalLock ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCC@FCCEALDM@03000000450c0000204300000000000@ ; glfw3.lib(input.obj) + glfwGetProcAddress ; glfw3.lib(context.obj) + ShowWindow ; user32.lib(USER32.dll) + ??_C@_0M@NOCCBFAC@bad?5DC?5huff@ ; stb_image.obj + ??_C@_0LC@FALCBLOD@03000000c82d0000622800000000000@ ; glfw3.lib(input.obj) + __imp_FormatMessageW ; kernel32.lib(KERNEL32.dll) + ??_C@_0CH@EMJGILEP@EGL?3?5Failed?5to?5find?5support?5for@ ; glfw3.lib(egl_context.obj) + ??_C@_0BF@NOEEEFMF@bad?5bits_per_channel@ ; stb_image.obj + _glfwInputCursorPos ; glfw3.lib(input.obj) + ??_C@_0BBC@LKELPOKL@03000000ef050000030000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BE@IBFIPFO@output?5buffer?5limit@ ; stb_image.obj + _glfwCreateWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0MH@JBIEFOEI@03000000c82d0000031000000000000@ ; glfw3.lib(input.obj) + __imp_AdjustWindowRectEx ; user32.lib(USER32.dll) + glfwSwapInterval ; glfw3.lib(context.obj) + _glfwPlatformGetTls ; glfw3.lib(win32_thread.obj) + glfwGetKeyScancode ; glfw3.lib(input.obj) + __guard_xfg_check_icall_fptr ; MSVCRT.lib(guard_support.obj) + glfwSetWindowMaximizeCallback ; glfw3.lib(window.obj) + _glfwGetEGLNativeDisplayWin32 ; glfw3.lib(win32_window.obj) + ??_C@_01HIHLOKLC@1@ ; glfw3.lib(null_window.obj) + __imp_LeaveCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwGetOSMesaDepthBuffer ; glfw3.lib(osmesa_context.obj) + ??_C@_0CC@NBPCCDGB@Invalid?5window?5hint?5string?50x?$CF0@ ; glfw3.lib(window.obj) + ??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBI@IMFOKND@03000000d9040000020000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@DGFLCCMF@SetProcessDpiAwareness@ ; glfw3.lib(win32_init.obj) + _glfwInitEGL ; glfw3.lib(egl_context.obj) + ??_C@_0BCB@PGBBGDNC@03000000c82d0000402800000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@JDPIFELH@bad?5offset@ ; stb_image.obj + __imp_memmove ; vcruntime.lib(VCRUNTIME140.dll) + _glfwFocusWindowWin32 ; glfw3.lib(win32_window.obj) + DeleteDC ; gdi32.lib(GDI32.dll) + ??_C@_0BB@OGAIJNNO@wglDeleteContext@ ; glfw3.lib(wgl_context.obj) + __imp_MoveWindow ; user32.lib(USER32.dll) + __imp_ShowWindow ; user32.lib(USER32.dll) + ??_C@_0MI@LCKMPFJJ@03000000c82d0000510600000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCF@NLOPKJKL@03000000d62000002a7900000000000@ ; glfw3.lib(input.obj) + ??_C@_0BH@LOKBIIOJ@illegal?5code?5in?5raster@ ; stb_image.obj + ??_C@_0CI@HCGBBANC@The?5requested?5platform?5is?5not?5s@ ; glfw3.lib(platform.obj) + ??_C@_0BAK@EANFDDAF@030000009f000000adbb00000000000@ ; glfw3.lib(input.obj) + __imp_OpenClipboard ; user32.lib(USER32.dll) + ??_C@_0BP@EMCHFHHH@Invalid?5standard?5cursor?50x?$CF08X@ ; glfw3.lib(input.obj) + ??_C@_05HLIEEKJG@guide@ ; glfw3.lib(input.obj) + __real@3f000000 ; dllmain.obj + ??_C@_0BI@KJPLJBHH@DwmIsCompositionEnabled@ ; glfw3.lib(win32_init.obj) + glfwGetClipboardString ; glfw3.lib(input.obj) + ??_C@_0ON@KEJKIAHI@03000000222c0000002000000000000@ ; glfw3.lib(input.obj) + __imp_powf ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + IsWindowVisible ; user32.lib(USER32.dll) + ??_C@_01KBJDNOO@i@ ; glfw3.lib(null_window.obj) + ??_C@_0CJ@JPDPLHCM@EGL?3?5Failed?5to?5find?5a?5suitable?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCC@NMJPCJOC@03000000b8050000021000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCA@BCGGNNCE@03000000c82d000011ab00000000000@ ; glfw3.lib(input.obj) + _glfwHideWindowWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BG@GOAKKGGB@EGL_KHR_gl_colorspace@ ; glfw3.lib(egl_context.obj) + _glfwSetWindowDecoratedWin32 ; glfw3.lib(win32_window.obj) + _glfwIsValidContextConfig ; glfw3.lib(context.obj) + ??_C@_0DO@OLPMIGEJ@The?5requested?5feature?5cannot?5be@ ; glfw3.lib(init.obj) + ??_C@_0HI@IJLNGEMH@0300000073070000040100000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_os_handled ; MSVCRT.lib(guard_support.obj) + _glfwSetWindowSizeNull ; glfw3.lib(null_window.obj) + _glfwEncodeUTF8 ; glfw3.lib(init.obj) + ??_C@_01IHBHIGKO@?0@ ; glfw3.lib(input.obj) + ??_C@_0ON@DOLMEDL@0300000079000000461800000000000@ ; glfw3.lib(input.obj) + __imp_SetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BBG@ODDFOEO@03000000ff110000413300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CJ@JFEDIEDE@Win32?3?5Failed?5to?5remove?5raw?5inp@ ; glfw3.lib(win32_window.obj) + glfwSwapBuffers ; glfw3.lib(context.obj) + __imp_CreateBitmap ; gdi32.lib(GDI32.dll) + ??_C@_0PP@HNFBKAIN@030000006f0e0000070200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBL@JOPBPDPP@03000000d620000011a700000000000@ ; glfw3.lib(input.obj) + ??_C@_0CE@PKGOIGHB@Win32?3?5Failed?5to?5create?5mask?5bi@ ; glfw3.lib(win32_window.obj) + CloseClipboard ; user32.lib(USER32.dll) + ??_C@_0BK@OEGBAIFC@Computer?5restart?5required@ ; glfw3.lib(win32_monitor.obj) + ??_C@_0JJ@DHPDMCKL@03000000c82d0000003000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDA@ENLICDAF@030000006b140000130d00000000000@ ; glfw3.lib(input.obj) + glfwSetWindowAspectRatio ; glfw3.lib(window.obj) + ??_C@_0BCF@OOFHHKMG@03000000c82d0000006100000000000@ ; glfw3.lib(input.obj) + _glfwWindowMaximizedWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BCJ@OFAKENFF@03000000242f00002d0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BL@PDDHMPGF@wglCreateContextAttribsARB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ ; glfw3.lib(context.obj) + glfwGetFramebufferSize ; glfw3.lib(window.obj) + ??_C@_0BCB@KIGAAAPL@03000000f0250000c38300000000000@ ; glfw3.lib(input.obj) + glfwGetWindowPos ; glfw3.lib(window.obj) + __xmm@00080008000800080008000800080008 ; dllmain.obj + ??_C@_0CA@FNCFBEIG@Win32?3?5Failed?5to?5open?5clipboard@ ; glfw3.lib(win32_window.obj) + ??_C@_0BK@HGDBIG@wglGetExtensionsStringEXT@ ; glfw3.lib(wgl_context.obj) + ??_C@_0OA@BPMCGMAH@78696e7075740300000000000000000@ ; glfw3.lib(input.obj) + DefWindowProcW ; user32.lib(USER32.dll) + sprintf ; glfw3.lib(win32_joystick.obj) + UnhandledExceptionFilter ; kernel32.lib(KERNEL32.dll) + ??_C@_0DO@PGEACBCJ@Win32?3?5Vulkan?5instance?5missing?5@ ; glfw3.lib(win32_window.obj) + ??_C@_0BCE@CFNIKJCA@03000000c82d0000103800000000000@ ; glfw3.lib(input.obj) + __imp_strncpy ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + __imp_FlashWindow ; user32.lib(USER32.dll) + glfwGetGamepadState ; glfw3.lib(input.obj) + __imp_OffsetRect ; user32.lib(USER32.dll) + ??_C@_01PAPGNFGE@c@ ; glfw3.lib(null_window.obj) + ??_C@_0BA@BMKCDCKD@wglGetCurrentDC@ ; glfw3.lib(wgl_context.obj) + ??_C@_0CE@OHDHEPIL@Win32?3?5Failed?5to?5lock?5global?5ha@ ; glfw3.lib(win32_window.obj) + ??_C@_0BF@OGGDOHFN@WGL_ARB_pixel_format@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BCA@PDBJCLJJ@030000006d04000019c200000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCJ@GDBCPJIF@030000000d0f0000840000000000000@ ; glfw3.lib(input.obj) + _glfwInputJoystickButton ; glfw3.lib(input.obj) + glfwSetCursorPosCallback ; glfw3.lib(input.obj) + ??_C@_0BCC@CJMNKOGI@03000000e3050000960500000000000@ ; glfw3.lib(input.obj) + ??_C@_0O@MGDACKOJ@no?5clear?5code@ ; stb_image.obj + ??_C@_0ME@PNFMJONN@030000007e050000062000000000000@ ; glfw3.lib(input.obj) + _glfwChooseVideoMode ; glfw3.lib(monitor.obj) + __imp_SetDeviceGammaRamp ; gdi32.lib(GDI32.dll) + ??_C@_0BD@NKJFFLKL@unsupported?5format@ ; stb_image.obj + ??_C@_01COCBENDE@7@ ; glfw3.lib(null_window.obj) + ??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ ; glfw3.lib(win32_joystick.obj) + glfwInit ; glfw3.lib(init.obj) + ??_C@_0BD@IINOPBDD@wglSwapIntervalEXT@ ; glfw3.lib(wgl_context.obj) + glfwSetWindowIcon ; glfw3.lib(window.obj) + infolog + pow ; ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ??_C@_0CF@OGLFKBHA@WGL?3?5Failed?5to?5describe?5pixel?5f@ ; glfw3.lib(wgl_context.obj) + ??_C@_0JC@NGKIIHPA@03000000921200004b4600000000000@ ; glfw3.lib(input.obj) + TrackMouseEvent ; user32.lib(USER32.dll) + ??_C@_0FO@KAELFDNN@Vulkan?3?5Window?5surface?5creation@ ; glfw3.lib(vulkan.obj) + GetModuleHandleW ; kernel32.lib(KERNEL32.dll) + __imp_GetPropW ; user32.lib(USER32.dll) + ??_C@_07JNJHIMGH@bad?5bpp@ ; stb_image.obj + ??_C@_0BDH@LGMFPGNL@030000005e040000ea0200000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@JHECHMPF@OSMesa?3?5OpenGL?5ES?5is?5not?5availa@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0O@OMNEJBKO@eglGetConfigs@ ; glfw3.lib(egl_context.obj) + _glfwGetMappingNameNull ; glfw3.lib(null_joystick.obj) + ??_C@_0M@DOFMJEMP@bad?5SOF?5len@ ; stb_image.obj + ??_C@_0P@PNCLKCLJ@bad?5DNL?5height@ ; stb_image.obj + __imp__initialize_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwGetEGLNativeWindowNull ; glfw3.lib(null_window.obj) + glfwGetVideoMode ; glfw3.lib(monitor.obj) + ??_C@_0BCH@BOPAENED@030000006e050000032000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BDA@LBDFNLMA@03000000c0110000014000000000000@ ; glfw3.lib(input.obj) + glfwSetKeyCallback ; glfw3.lib(input.obj) + ??_C@_0BCC@BGKKLNHG@030000005f140000c50100000000000@ ; glfw3.lib(input.obj) + __imp_EnumDisplaySettingsExW ; user32.lib(USER32.dll) + _glfwGetWindowOpacityNull ; glfw3.lib(null_window.obj) + _glfwRawMouseMotionSupportedWin32 ; glfw3.lib(win32_window.obj) + __imp_strcmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_0OJ@KFMPHKBC@0300000010000000820000000000000@ ; glfw3.lib(input.obj) + ??_C@_0O@IFDGNEHH@XInput?5Guitar@ ; glfw3.lib(win32_joystick.obj) + _glfwInputJoystickHat ; glfw3.lib(input.obj) + __imp_feof ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + EnumDisplayMonitors ; user32.lib(USER32.dll) + ??_C@_0DC@HFHALHIB@WGL?3?5The?5driver?5does?5not?5appear@ ; glfw3.lib(wgl_context.obj) + ??_C@_07PBILKAFL@Success@ ; glfw3.lib(vulkan.obj) + ??_C@_0CC@GOIKODMM@EGL?3?5Failed?5to?5create?5context?3?5@ ; glfw3.lib(egl_context.obj) + ??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ ; glfw3.lib(context.obj) + SendMessageW ; user32.lib(USER32.dll) + ??_C@_0BCG@JCENNNEN@0300000063250000230500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@JHAKKPHF@030000008f0e0000103000000000000@ ; glfw3.lib(input.obj) + ??_C@_0BJ@CIMJOHKL@WGL_ARB_framebuffer_sRGB@ ; glfw3.lib(wgl_context.obj) + ??_C@_0GC@KIFEGHB@03000000fa2d0000010000000000000@ ; glfw3.lib(input.obj) + _glfwSetCursorModeNull ; glfw3.lib(null_window.obj) + ??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ ; glfw3.lib(context.obj) + _glfwDestroyCursorWin32 ; glfw3.lib(win32_window.obj) + _glfwGetMonitorWorkareaWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BI@BFOJALMM@Invalid?5refresh?5rate?5?$CFi@ ; glfw3.lib(window.obj) + ??_C@_01OMGOGALD@u@ ; glfw3.lib(null_window.obj) + _glfwInitVulkan ; glfw3.lib(vulkan.obj) + __xmm@1c5a1c5a1c5a1c5a1c5a1c5a1c5a1c5a ; dllmain.obj + ??_C@_0BCO@ICLHBGLC@03000000d6200000600000000000000@ ; glfw3.lib(input.obj) + _glfwPlatformCreateTls ; glfw3.lib(win32_thread.obj) + _glfw_realloc ; glfw3.lib(init.obj) + ??_C@_0BCD@CGKCHHKM@78696e7075740400000000000000000@ ; glfw3.lib(input.obj) + __guard_memcpy_fptr ; vcruntime.lib(softmemtag.obj) + ??_C@_0P@GJNJCPDJ@too?5many?5codes@ ; stb_image.obj + ??_C@_0FN@NPOMMKHN@WGL?3?5A?5forward?5compatible?5OpenG@ ; glfw3.lib(wgl_context.obj) + _cexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + GetSystemMetrics ; user32.lib(USER32.dll) + ??_C@_0CC@NGDHIGBI@eglCreatePlatformWindowSurfaceE@ ; glfw3.lib(egl_context.obj) + ??_C@_0BCN@JADNPMFA@030000006f0e0000110100000000000@ ; glfw3.lib(input.obj) + __imp_DispatchMessageW ; user32.lib(USER32.dll) + ??_C@_0BP@NMKFFDCO@EGL_ANGLE_platform_angle_metal@ ; glfw3.lib(egl_context.obj) + glfwVulkanSupported ; glfw3.lib(vulkan.obj) + __imp__crt_atexit ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + _glfwCreateStandardCursorWin32 ; glfw3.lib(win32_window.obj) + glfwCreateWindow ; glfw3.lib(window.obj) + ??_C@_0BBE@BNPLHIOK@03000000ac0500003d0300000000000@ ; glfw3.lib(input.obj) + _glfwPostEmptyEventNull ; glfw3.lib(null_window.obj) + ??_C@_0BL@IKJGDNLO@Invalid?5cursor?5mode?50x?$CF08X@ ; glfw3.lib(input.obj) + ??_C@_0BDD@DODHFLKI@030000007e050000092000000000000@ ; glfw3.lib(input.obj) + ??_C@_0MJ@DMAMFLIE@030000001008000001e500000000000@ ; glfw3.lib(input.obj) + ??_C@_0PI@MHCFEKFM@03000000ff110000313300000000000@ ; glfw3.lib(input.obj) + ??_C@_0CH@GAPNPCHF@Win32?3?5Failed?5to?5register?5windo@ ; glfw3.lib(win32_window.obj) + ??_C@_0BBC@NNMIKKEI@03000000341a0000090800000000000@ ; glfw3.lib(input.obj) + _glfwInputFramebufferSize ; glfw3.lib(window.obj) + ??_C@_0EE@NKCAIGPH@A?5NativePixmapType?5argument?5doe@ ; glfw3.lib(egl_context.obj) + ??_C@_0BB@MAMHPNNC@GetDpiForMonitor@ ; glfw3.lib(win32_init.obj) + __imp_SendMessageW ; user32.lib(USER32.dll) + glfwWaitEventsTimeout ; glfw3.lib(window.obj) + glfwMaximizeWindow ; glfw3.lib(window.obj) + glfwSetCharModsCallback ; glfw3.lib(input.obj) + SetForegroundWindow ; user32.lib(USER32.dll) + __real@42c00000 ; glfw3.lib(win32_monitor.obj) + ??_C@_09DAEBACAB@bad?5masks@ ; stb_image.obj + ??_C@_0BCD@PNMMMGBA@030000008f0e0000143100000000000@ ; glfw3.lib(input.obj) + ??_C@_01INIBCBCB@f@ ; glfw3.lib(null_window.obj) + ??_C@_0BCA@JHGJKADI@03000000f0250000c18300000000000@ ; glfw3.lib(input.obj) + __imp_ReleaseCapture ; user32.lib(USER32.dll) + ??_C@_0MP@NNGGKFCK@0300000025090000001700000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCE@CONCKJMB@03000000c82d0000019000000000000@ ; glfw3.lib(input.obj) + ??_C@_0P@MADFBLIB@libGLES_CM?4dll@ ; glfw3.lib(egl_context.obj) + __imp_GetLastError ; kernel32.lib(KERNEL32.dll) + glfwGetWindowUserPointer ; glfw3.lib(window.obj) + ??_C@_0CG@DAAALEIC@The?5requested?5platform?5is?5unava@ ; glfw3.lib(init.obj) + _glfwSelectPlatform ; glfw3.lib(platform.obj) + ??_C@_0BCN@IFHHFAPH@030000006f0e00001a0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCP@LIBLBNIN@03000000d6200000c75700000000000@ ; glfw3.lib(input.obj) + _glfwHideWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BDA@PPKEBMHL@030000006d040000d2ca00000000000@ ; glfw3.lib(input.obj) + __imp_DeleteObject ; gdi32.lib(GDI32.dll) + _glfwGetGammaRampNull ; glfw3.lib(null_monitor.obj) + ??_C@_06DJHOIPC@?$CFs?3?5?$CFs@ ; glfw3.lib(win32_init.obj) + strstr ; vcruntime.lib(VCRUNTIME140.dll) + __scrt_initialize_mta ; MSVCRT.lib(utility_desktop.obj) + GetClientRect ; user32.lib(USER32.dll) + ??_C@_0OH@IPHKKKC@03000000790000001b1800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BBJ@FKKMPNGK@03000000341a0000060800000000000@ ; glfw3.lib(input.obj) + _glfwMaximizeWindowWin32 ; glfw3.lib(win32_window.obj) + __imp_GetClientRect ; user32.lib(USER32.dll) + ??_C@_0BBD@GHNGPLFD@0300000038070000808400000000000@ ; glfw3.lib(input.obj) + ??_C@_0CL@GPJNIICL@Win32?3?5Failed?5to?5register?5raw?5i@ ; glfw3.lib(win32_window.obj) + __imp_CreateDCW ; gdi32.lib(GDI32.dll) + _glfwSetWindowMonitorWin32 ; glfw3.lib(win32_window.obj) + _glfwSetWindowSizeLimitsWin32 ; glfw3.lib(win32_window.obj) + BringWindowToTop ; user32.lib(USER32.dll) + glfwGetMonitorPhysicalSize ; glfw3.lib(monitor.obj) + ??_C@_0P@FCCEJHCC@XInputGetState@ ; glfw3.lib(win32_init.obj) + __imp_TlsFree ; kernel32.lib(KERNEL32.dll) + glfwSetWindowPosCallback ; glfw3.lib(window.obj) + ??_C@_0BBF@IGGJOAJN@03000000341a0000020800000000000@ ; glfw3.lib(input.obj) + ??_C@_0L@JLFHOCGA@OpenGL?5ES?5@ ; glfw3.lib(context.obj) + ??_C@_01ICJEACDI@?$DL@ ; glfw3.lib(null_window.obj) + ??_C@_0P@BBBFNDGG@wglMakeCurrent@ ; glfw3.lib(wgl_context.obj) + ??_C@_0FN@PJBCJBIL@The?5requested?5window?5is?5already@ ; glfw3.lib(vulkan.obj) + IsZoomed ; user32.lib(USER32.dll) + ??_C@_0BH@GIBFIFPN@EGL_KHR_create_context@ ; glfw3.lib(egl_context.obj) + _glfwTerminateWin32 ; glfw3.lib(win32_init.obj) + ??_C@_0BCA@NJAENDKN@03000000341a0000230800000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@LNEGOMA@no?5header?5height@ ; stb_image.obj + CreateRectRgn ; gdi32.lib(GDI32.dll) + _glfwGetPhysicalDevicePresentationSupportWin32 ; glfw3.lib(win32_window.obj) + ??_C@_0BO@IDEEMGNC@EGL_KHR_context_flush_control@ ; glfw3.lib(egl_context.obj) + ??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BE@EFOBHOAB@VK_KHR_xlib_surface@ ; glfw3.lib(vulkan.obj) + __scrt_dllmain_exception_filter ; MSVCRT.lib(utility.obj) + ??_C@_0CF@EKIADPFB@WGL?3?5Failed?5to?5clear?5current?5co@ ; glfw3.lib(wgl_context.obj) + _glfwInputChar ; glfw3.lib(input.obj) + ??_C@_0BBG@IEDKEHBE@03000000790000000a0000000000000@ ; glfw3.lib(input.obj) + _glfwGetGammaRampWin32 ; glfw3.lib(win32_monitor.obj) + ??_C@_0BCK@MNABGIK@030000006b140000010300000000000@ ; glfw3.lib(input.obj) + ??_C@_19JBPKICJI@?$AAG?$AAL?$AAF?$AAW@ ; glfw3.lib(win32_window.obj) + __imp_GetWindowLongW ; user32.lib(USER32.dll) + ??_C@_0BH@PDIOJKKP@EGL?3?5API?5not?5available@ ; glfw3.lib(egl_context.obj) + glfwUpdateGamepadMappings ; glfw3.lib(input.obj) + _glfwInitWin32 ; glfw3.lib(win32_init.obj) + ??_C@_03LPIGJBNC@lib@ ; glfw3.lib(egl_context.obj) + ??_C@_06EBHLNDKL@dpleft@ ; glfw3.lib(input.obj) + ??_C@_01EANLCPLP@y@ ; glfw3.lib(input.obj) + __imp_ferror ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + __imp_GetLayeredWindowAttributes ; user32.lib(USER32.dll) + _glfwIconifyWindowNull ; glfw3.lib(null_window.obj) + ??_C@_0BDB@PPKHIPGK@0300000038070000813400000000000@ ; glfw3.lib(input.obj) + ??_C@_0BCB@GBOFCHI@03000000a30600000c0400000000000@ ; glfw3.lib(input.obj) + ??_C@_0KC@BDMHLJAH@0300000010280000090000000000000@ ; glfw3.lib(input.obj) + ??_C@_0N@DOKAJOHF@opengl32?4dll@ ; glfw3.lib(wgl_context.obj) + ??_C@_0BCG@JIGLIOKN@03000000d1180000009400000000000@ ; glfw3.lib(input.obj) + _glfwTerminateWGL ; glfw3.lib(wgl_context.obj) + _configure_narrow_argv ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + __imp_ScreenToClient ; user32.lib(USER32.dll) + __imp_fopen_s ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ??_C@_0DC@KKLJAJOK@OSMesa?3?5Forward?9compatible?5cont@ ; glfw3.lib(osmesa_context.obj) + ??_C@_0BG@IPJFJLIC@EGL_EXT_platform_base@ ; glfw3.lib(egl_context.obj) + __imp_GetClassLongPtrW ; user32.lib(USER32.dll) + __scrt_initialize_crt ; MSVCRT.lib(utility.obj) + ??_C@_0BC@DBAKKFEN@Invalid?5parameter@ ; glfw3.lib(win32_monitor.obj) + __imp_EnumDisplayDevicesW ; user32.lib(USER32.dll) + ??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ ; glfw3.lib(win32_joystick.obj) + glfwSetWindowOpacity ; glfw3.lib(window.obj) + glfwGetMonitorContentScale ; glfw3.lib(monitor.obj) + __xmm@11c8f9c311c8f9c311c8f9c311c8f9c3 ; dllmain.obj + __imp_GetMessageTime ; user32.lib(USER32.dll) + __imp_fseek ; ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + glfwGetWin32Monitor ; glfw3.lib(win32_monitor.obj) + ??_C@_01KJLJFBPL@8@ ; glfw3.lib(null_window.obj) + ??_C@_0O@EEJFKEKH@eglInitialize@ ; glfw3.lib(egl_context.obj) + _glfwInputWindowMonitor ; glfw3.lib(window.obj) + glfwGetEGLContext ; glfw3.lib(egl_context.obj) + glfwSetScrollCallback ; glfw3.lib(input.obj) + ??_C@_0BCD@BABDCDPH@030000004c050000cc0900000000000@ ; glfw3.lib(input.obj) + ??_C@_01GOHFPIOK@m@ ; glfw3.lib(null_window.obj) + GlobalAlloc ; kernel32.lib(KERNEL32.dll) + ??_C@_0BCB@FAGFKFBC@03000000c82d0000013000000000000@ ; glfw3.lib(input.obj) + __castguard_check_failure_fastfail ; MSVCRT.lib(guard_support.obj) + OpenClipboard ; user32.lib(USER32.dll) + __imp_GetModuleHandleW ; kernel32.lib(KERNEL32.dll) + ??_C@_0IN@KIPMJDI@03000000c82d0000045100000000000@ ; glfw3.lib(input.obj) + _glfwGetMonitorPosNull ; glfw3.lib(null_monitor.obj) + ??_C@_0BDE@NDAIINLM@0300000038070000843300000000000@ ; glfw3.lib(input.obj) + ??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ ; glfw3.lib(win32_joystick.obj) + ??_C@_0BBG@IKJMKIKH@03000000790000001c1800000000000@ ; glfw3.lib(input.obj) + _glfwInputWindowIconify ; glfw3.lib(window.obj) + glfwDestroyCursor ; glfw3.lib(input.obj) + glfwGetWindowContentScale ; glfw3.lib(window.obj) + ??_C@_0BCO@NNBOKIIL@030000006f0e00001e0100000000000@ ; glfw3.lib(input.obj) + ??_C@_0DI@GNLCAHHB@A?5requested?5layer?5is?5not?5presen@ ; glfw3.lib(vulkan.obj) + ??_C@_0L@BCINMEBJ@only?58?9bit@ ; stb_image.obj + ??_C@_0CJ@EFIFNOJC@Win32?3?5Failed?5to?5convert?5string@ ; glfw3.lib(win32_init.obj) + ??_C@_0N@POJLKMKK@bad?5IHDR?5len@ ; stb_image.obj + __imp_GlobalFree ; kernel32.lib(KERNEL32.dll) + __real@7fefffffffffffff ; glfw3.lib(window.obj) + ??_C@_0N@ODCBCBFN@BMP?5JPEG?1PNG@ ; stb_image.obj + ??_C@_05FAGFPHJG@start@ ; glfw3.lib(input.obj) + ??_C@_0BCH@HONEFEFO@030000000d0f00005c0000000000000@ ; glfw3.lib(input.obj) + _glfwCreateWindowSurfaceNull ; glfw3.lib(null_window.obj) + __scrt_get_show_window_mode ; MSVCRT.lib(utility_desktop.obj) + memmove ; vcruntime.lib(VCRUNTIME140.dll) + __imp_strstr ; vcruntime.lib(VCRUNTIME140.dll) + __scrt_dllmain_crt_thread_detach ; MSVCRT.lib(utility.obj) + __imp_EnumDisplaySettingsW ; user32.lib(USER32.dll) + ??_C@_0BN@OHLJPDPM@EGL_ANGLE_platform_angle_d3d@ ; glfw3.lib(egl_context.obj) + _initialize_onexit_table ; ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ??_C@_07BIDACDEF@0?5width@ ; stb_image.obj + ??_C@_0BBL@HCLFABAI@03000000bc200000641200000000000@ ; glfw3.lib(input.obj) + ??_C@_0OM@PAPEIDEH@030000000d0f0000400000000000000@ ; glfw3.lib(input.obj) + glfwShowWindow ; glfw3.lib(window.obj) + __real@437f0000 ; dllmain.obj + ??_C@_0CE@KDBKFLEE@Invalid?5argument?5for?5enum?5param@ ; glfw3.lib(init.obj) + __imp_RegisterClassExW ; user32.lib(USER32.dll) + __xmm@00000008000000080000000800000008 ; glfw3.lib(window.obj) + ??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@ ; stb_image.obj + __imp_GetCurrentProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0BJ@MBAAGFCG@AdjustWindowRectExForDpi@ ; glfw3.lib(win32_init.obj) + _CRT_INIT ; MSVCRT.lib(dll_dllmain.obj) + __imp_ChoosePixelFormat ; gdi32.lib(GDI32.dll) + glfwGetEGLDisplay ; glfw3.lib(egl_context.obj) + _glfwInitNull ; glfw3.lib(null_init.obj) + EnterCriticalSection ; kernel32.lib(KERNEL32.dll) + glfwSetWindowPos ; glfw3.lib(window.obj) + __real@477fff00 ; dllmain.obj + ??_C@_0BDN@OKDOLNP@03000000222c0000002300000000000@ ; glfw3.lib(input.obj) + DescribePixelFormat ; gdi32.lib(GDI32.dll) + ??_C@_0FH@MCDKNJAI@Initialization?5of?5an?5object?5cou@ ; glfw3.lib(vulkan.obj) + __report_securityfailureEx ; MSVCRT.lib(gs_report.obj) + ??_C@_0M@MHDBFHD@unsupported@ ; stb_image.obj + ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA ; MSVCRT.lib(default_local_stdio_options.obj) + _glfwRawMouseMotionSupportedNull ; glfw3.lib(null_window.obj) + __scrt_dllmain_uninitialize_c ; MSVCRT.lib(utility.obj) + ??_C@_09IFDKCGFO@bad?5delta@ ; stb_image.obj + ??_C@_0BCJ@JCLGLLDN@03000000d620000013a700000000000@ ; glfw3.lib(input.obj) + PeekMessageW ; user32.lib(USER32.dll) + ??_C@_0BBO@FCIHICKG@03000000b5070000120300000000000@ ; glfw3.lib(input.obj) + GetStartupInfoW ; kernel32.lib(KERNEL32.dll) + glfwSetWindowAttrib ; glfw3.lib(window.obj) + ??_C@_0CA@OJFEOPKP@EGL_KHR_create_context_no_error@ ; glfw3.lib(egl_context.obj) + _glfwConnectNull ; glfw3.lib(null_init.obj) + ??_C@_0BK@NKEDGNNN@EnableNonClientDpiScaling@ ; glfw3.lib(win32_init.obj) + __imp___current_exception ; vcruntime.lib(VCRUNTIME140.dll) + ??_C@_04EDFFKKLO@dpup@ ; glfw3.lib(input.obj) + _glfwGetScancodeNameNull ; glfw3.lib(null_window.obj) + ??_C@_0BM@KHOPPJNJ@EGL?3?5No?5EGLConfigs?5returned@ ; glfw3.lib(egl_context.obj) + __imp_DragQueryFileW ; shell32.lib(SHELL32.dll) + TerminateProcess ; kernel32.lib(KERNEL32.dll) + ??_C@_0BE@PJBNGDBE@wrong?5channel?5count@ ; stb_image.obj + ??_C@_0BCG@NPOEDNBE@030000000d0f00008a0000000000000@ ; glfw3.lib(input.obj) + ??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ ; glfw3.lib(context.obj) + ??_C@_0O@CHBCDKKC@wrong?5version@ ; stb_image.obj + strcmp ; ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ??_C@_01PFHFFBPC@t@ ; glfw3.lib(null_window.obj) + ??_C@_0BCB@JPNPNPJC@0300000079000000220100000000000@ ; glfw3.lib(input.obj) + 已完成对 /ORDER 选项的处理 + 已丢弃 "`string'" (??_C@_07CAIJGPF@file?3?1?1@)(从 glfw3.lib(init.obj) 中) + 已丢弃 "`string'" (??_C@_0CB@DDANHPKI@can?8t?5fopen?0?5Unable?5to?5open?5fil@)(从 stb_image.obj 中) + 已丢弃 __CastGuardVftablesStart(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __CastGuardVftablesEnd(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$stbi__cpuid3(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__start_file(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__fopen(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__get8(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__at_eof(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $chain$0$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $chain$1$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 $unwind$stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__paeth(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $chain$0$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $chain$1$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__do_png(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__png_load(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__png_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__psd_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $chain$2$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $chain$3$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__gif_test(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 $unwind$stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 $unwind$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$1$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$2$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $chain$3$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $unwind$__report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $unwind$__get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 $unwind$atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$_onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$?configure_argv@__scrt_narrow_argv_policy@@SAHXZ(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $unwind$__scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $unwind$__castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_printf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 "unsigned __int64 `__local_stdio_scanf_options'::`2'::_OptionsStorage" (?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA)(从 MSVCRT.lib(default_local_stdio_options.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_fptr(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __isa_available_default(从 dllmain.obj 中) + 已丢弃 $pdata$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$1$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$2$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$3$_glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 $pdata$__report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 $pdata$__get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 $pdata$atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$_onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$?configure_argv@__scrt_narrow_argv_policy@@SAHXZ(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 $pdata$__scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$__castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 $pdata$stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__gif_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$2$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$3$stbi__pic_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__psd_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__png_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__png_load(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__do_png(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$0$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$1$stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__paeth(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 $pdata$stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$0$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$1$stbi__zreceive(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__at_eof(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__get8(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__fopen(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__start_file(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 $pdata$stbi__cpuid3(从 stb_image.obj 中) + 已丢弃“.idata$4”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$4”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __imp_GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __imp___current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp___current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __imp__crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp__register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 __imp_ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 __imp_strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃“.idata$6”(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 __check_isa_support(从 intrinsic.obj 中) + 已丢弃 check_isa(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_sse(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_avx(从 intrinsic.obj 中) + 已丢弃 load_intrinsic_512(从 intrinsic.obj 中) + 已丢弃 stbi__cpuid3(从 stb_image.obj 中) + 已丢弃 stbi__sse2_available(从 stb_image.obj 中) + 已丢弃 stbi__start_callbacks(从 stb_image.obj 中) + 已丢弃 stbi__start_file(从 stb_image.obj 中) + 已丢弃 stbi__rewind(从 stb_image.obj 中) + 已丢弃 stbi__err(从 stb_image.obj 中) + 已丢弃 stbi__malloc(从 stb_image.obj 中) + 已丢弃 stbi__addsizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mul2sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mad2sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__mad3sizes_valid(从 stb_image.obj 中) + 已丢弃 stbi__malloc_mad2(从 stb_image.obj 中) + 已丢弃 stbi__malloc_mad3(从 stb_image.obj 中) + 已丢弃 stbi__fopen(从 stb_image.obj 中) + 已丢弃 stbi__get8(从 stb_image.obj 中) + 已丢弃 stbi__at_eof(从 stb_image.obj 中) + 已丢弃 stbi__compute_y(从 stb_image.obj 中) + 已丢弃 stbi__compute_y_16(从 stb_image.obj 中) + 已丢弃 stbi__build_fast_ac(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_huff_decode(从 stb_image.obj 中) + 已丢弃 stbi__extend_receive(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_get_bits(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_get_bit(从 stb_image.obj 中) + 已丢弃 stbi__clamp(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_reset(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_dequantize(从 stb_image.obj 中) + 已丢弃 stbi__skip_jpeg_junk_at_end(从 stb_image.obj 中) + 已丢弃 stbi__cleanup_jpeg(从 stb_image.obj 中) + 已丢弃 stbi__blinn_8x8(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_load(从 stb_image.obj 中) + 已丢弃 stbi__jpeg_test(从 stb_image.obj 中) + 已丢弃 stbi__bitreverse16(从 stb_image.obj 中) + 已丢弃 stbi__bit_reverse(从 stb_image.obj 中) + 已丢弃 stbi__zeof(从 stb_image.obj 中) + 已丢弃 stbi__zget8(从 stb_image.obj 中) + 已丢弃 stbi__zreceive(从 stb_image.obj 中) + 已丢弃 stbi__zhuffman_decode(从 stb_image.obj 中) + 已丢弃 stbi__parse_zlib_header(从 stb_image.obj 中) + 已丢弃 stbi__do_zlib(从 stb_image.obj 中) + 已丢弃 stbi_zlib_decode_malloc_guesssize_headerflag(从 stb_image.obj 中) + 已丢弃 stbi__get_chunk_header(从 stb_image.obj 中) + 已丢弃 stbi__paeth(从 stb_image.obj 中) + 已丢弃 stbi__compute_transparency(从 stb_image.obj 中) + 已丢弃 stbi__compute_transparency16(从 stb_image.obj 中) + 已丢弃 stbi__expand_png_palette(从 stb_image.obj 中) + 已丢弃 stbi__de_iphone(从 stb_image.obj 中) + 已丢弃 stbi__do_png(从 stb_image.obj 中) + 已丢弃 stbi__png_load(从 stb_image.obj 中) + 已丢弃 stbi__png_test(从 stb_image.obj 中) + 已丢弃 stbi__bmp_test_raw(从 stb_image.obj 中) + 已丢弃 stbi__bmp_test(从 stb_image.obj 中) + 已丢弃 stbi__bitcount(从 stb_image.obj 中) + 已丢弃 stbi__shiftsigned(从 stb_image.obj 中) + 已丢弃 stbi__tga_get_comp(从 stb_image.obj 中) + 已丢弃 stbi__psd_test(从 stb_image.obj 中) + 已丢弃 stbi__pic_test_core(从 stb_image.obj 中) + 已丢弃 stbi__copyval(从 stb_image.obj 中) + 已丢弃 stbi__pic_test(从 stb_image.obj 中) + 已丢弃 stbi__gif_test(从 stb_image.obj 中) + 已丢弃 stbi__hdr_test_core(从 stb_image.obj 中) + 已丢弃 stbi__pnm_test(从 stb_image.obj 中) + 已丢弃 stbi__pnm_isspace(从 stb_image.obj 中) + 已丢弃 stbi__pnm_isdigit(从 stb_image.obj 中) + 已丢弃 _glfwEncodeUTF8(从 glfw3.lib(init.obj) 中) + 已丢弃 _glfwParseUriList(从 glfw3.lib(init.obj) 中) + 已丢弃 __report_rangecheckfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 __report_securityfailure(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 __report_securityfailureEx(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 capture_current_context(从 MSVCRT.lib(gs_report.obj) 中) + 已丢弃 "int __cdecl dllmain_raw(struct HINSTANCE__ * const,unsigned long,void * const)" (?dllmain_raw@@YAHQEAUHINSTANCE__@@KQEAX@Z)(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 _CRT_INIT(从 MSVCRT.lib(dll_dllmain.obj) 中) + 已丢弃 __get_entropy(从 MSVCRT.lib(gs_support.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_argv_policy::configure_argv(void)" (?configure_argv@__scrt_narrow_argv_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "struct _IMAGE_SECTION_HEADER * __cdecl find_pe_section(unsigned char * const,unsigned __int64)" (?find_pe_section@@YAPEAU_IMAGE_SECTION_HEADER@@QEAE_K@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "public: static int __cdecl __scrt_narrow_environment_policy::initialize_environment(void)" (?initialize_environment@__scrt_narrow_environment_policy@@SAHXZ)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 "bool __cdecl is_potentially_valid_image_base(void * const)" (?is_potentially_valid_image_base@@YA_NQEAX@Z)(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 NtCurrentTeb(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 _onexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 at_quick_exit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 atexit(从 MSVCRT.lib(utility.obj) 中) + 已丢弃 __scrt_get_show_window_mode(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_initialize_winrt(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_is_managed_app(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_set_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_stub_for_initialize_mta(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 __scrt_unhandled_exception_filter(从 MSVCRT.lib(utility_desktop.obj) 中) + 已丢弃 ReadNoFence64(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 ReadPointerNoFence(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_os_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_check_failure_user_handled_wrapper(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_set_user_handler(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_debugbreak(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_fastfail(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_nop(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_os_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_check_user_handled(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __castguard_slow_path_compat_check(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_icall_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 _guard_rf_checks_enforced(从 MSVCRT.lib(guard_support.obj) 中) + 已丢弃 __current_exception(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 __current_exception_context(从 vcruntime.lib(VCRUNTIME140.dll) 中) + 已丢弃 ftell(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 ferror(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fclose(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 realloc(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 fseek(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fgetc(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strncmp(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 fopen_s(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strtol(从 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中) + 已丢弃 ldexp(从 ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) 中) + 已丢弃 free(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 ungetc(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 feof(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 fread(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 malloc(从 ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) 中) + 已丢弃 strcpy_s(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strncpy(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __stdio_common_vsscanf(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 strcspn(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strspn(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 strtoul(从 ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) 中) + 已丢弃 strtok(从 ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) 中) + 已丢弃 __stdio_common_vsprintf(从 ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) 中) + 已丢弃 qsort(从 ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) 中) + 已丢弃 _register_onexit_function(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_atexit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 _crt_at_quick_exit(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 terminate(从 ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) 中) + 已丢弃 InitializeCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 EnterCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 LeaveCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 DeleteCriticalSection(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsAlloc(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsGetValue(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsSetValue(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TlsFree(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 QueryPerformanceCounter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 QueryPerformanceFrequency(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 VerSetConditionMask(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetLastError(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetModuleHandleExW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 FormatMessageW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 MultiByteToWideChar(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 WideCharToMultiByte(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 FreeLibrary(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetProcAddress(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 LoadLibraryA(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetModuleHandleW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalAlloc(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalUnlock(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalLock(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GlobalFree(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 SetThreadExecutionState(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlCaptureContext(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlLookupFunctionEntry(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 RtlVirtualUnwind(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 UnhandledExceptionFilter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 SetUnhandledExceptionFilter(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentProcess(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TerminateProcess(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 IsProcessorFeaturePresent(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentProcessId(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetCurrentThreadId(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetSystemTimeAsFileTime(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 InitializeSListHead(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 IsDebuggerPresent(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 GetStartupInfoW(从 kernel32.lib(KERNEL32.dll) 中) + 已丢弃 TranslateMessage(从 user32.lib(USER32.dll) 中) + 已丢弃 DispatchMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 PeekMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterDeviceNotificationW(从 user32.lib(USER32.dll) 中) + 已丢弃 UnregisterDeviceNotification(从 user32.lib(USER32.dll) 中) + 已丢弃 DefWindowProcW(从 user32.lib(USER32.dll) 中) + 已丢弃 UnregisterClassW(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterClassExW(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateWindowExW(从 user32.lib(USER32.dll) 中) + 已丢弃 DestroyWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 ShowWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 ToUnicode(从 user32.lib(USER32.dll) 中) + 已丢弃 MapVirtualKeyW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetDC(从 user32.lib(USER32.dll) 中) + 已丢弃 ReleaseDC(从 user32.lib(USER32.dll) 中) + 已丢弃 ChangeDisplaySettingsExW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplaySettingsW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplaySettingsExW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplayDevicesW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetMonitorInfoW(从 user32.lib(USER32.dll) 中) + 已丢弃 EnumDisplayMonitors(从 user32.lib(USER32.dll) 中) + 已丢弃 TrackMouseEvent(从 user32.lib(USER32.dll) 中) + 已丢弃 GetMessageTime(从 user32.lib(USER32.dll) 中) + 已丢弃 SendMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 PostMessageW(从 user32.lib(USER32.dll) 中) + 已丢弃 WaitMessage(从 user32.lib(USER32.dll) 中) + 已丢弃 GetLayeredWindowAttributes(从 user32.lib(USER32.dll) 中) + 已丢弃 SetLayeredWindowAttributes(从 user32.lib(USER32.dll) 中) + 已丢弃 FlashWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 MoveWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowPos(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowPlacement(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowPlacement(从 user32.lib(USER32.dll) 中) + 已丢弃 IsWindowVisible(从 user32.lib(USER32.dll) 中) + 已丢弃 IsIconic(从 user32.lib(USER32.dll) 中) + 已丢弃 BringWindowToTop(从 user32.lib(USER32.dll) 中) + 已丢弃 IsZoomed(从 user32.lib(USER32.dll) 中) + 已丢弃 OpenClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 CloseClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 SetClipboardData(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClipboardData(从 user32.lib(USER32.dll) 中) + 已丢弃 EmptyClipboard(从 user32.lib(USER32.dll) 中) + 已丢弃 SetFocus(从 user32.lib(USER32.dll) 中) + 已丢弃 GetActiveWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 GetKeyState(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCapture(从 user32.lib(USER32.dll) 中) + 已丢弃 ReleaseCapture(从 user32.lib(USER32.dll) 中) + 已丢弃 MsgWaitForMultipleObjects(从 user32.lib(USER32.dll) 中) + 已丢弃 GetSystemMetrics(从 user32.lib(USER32.dll) 中) + 已丢弃 SetForegroundWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 SetPropW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetPropW(从 user32.lib(USER32.dll) 中) + 已丢弃 RemovePropW(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowTextW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClientRect(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowRect(从 user32.lib(USER32.dll) 中) + 已丢弃 AdjustWindowRectEx(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCursorPos(从 user32.lib(USER32.dll) 中) + 已丢弃 SetCursor(从 user32.lib(USER32.dll) 中) + 已丢弃 GetCursorPos(从 user32.lib(USER32.dll) 中) + 已丢弃 ClientToScreen(从 user32.lib(USER32.dll) 中) + 已丢弃 ScreenToClient(从 user32.lib(USER32.dll) 中) + 已丢弃 WindowFromPoint(从 user32.lib(USER32.dll) 中) + 已丢弃 ClipCursor(从 user32.lib(USER32.dll) 中) + 已丢弃 SetRect(从 user32.lib(USER32.dll) 中) + 已丢弃 OffsetRect(从 user32.lib(USER32.dll) 中) + 已丢弃 PtInRect(从 user32.lib(USER32.dll) 中) + 已丢弃 GetWindowLongW(从 user32.lib(USER32.dll) 中) + 已丢弃 SetWindowLongW(从 user32.lib(USER32.dll) 中) + 已丢弃 GetClassLongPtrW(从 user32.lib(USER32.dll) 中) + 已丢弃 LoadCursorW(从 user32.lib(USER32.dll) 中) + 已丢弃 DestroyIcon(从 user32.lib(USER32.dll) 中) + 已丢弃 LoadImageW(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateIconIndirect(从 user32.lib(USER32.dll) 中) + 已丢弃 SystemParametersInfoW(从 user32.lib(USER32.dll) 中) + 已丢弃 MonitorFromWindow(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputData(从 user32.lib(USER32.dll) 中) + 已丢弃 RegisterRawInputDevices(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputDeviceInfoA(从 user32.lib(USER32.dll) 中) + 已丢弃 GetRawInputDeviceList(从 user32.lib(USER32.dll) 中) + 已丢弃 CreateDCW(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DeleteDC(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 GetDeviceCaps(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 GetDeviceGammaRamp(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SetDeviceGammaRamp(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateBitmap(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateRectRgn(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DeleteObject(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 CreateDIBSection(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 ChoosePixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DescribePixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SetPixelFormat(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 SwapBuffers(从 gdi32.lib(GDI32.dll) 中) + 已丢弃 DragQueryFileW(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragQueryPoint(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragFinish(从 shell32.lib(SHELL32.dll) 中) + 已丢弃 DragAcceptFiles(从 shell32.lib(SHELL32.dll) 中) + 已选择符号: + extensionSupportedOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已替换符号: + __scrt_stub_for_is_c_termination_complete (在 MSVCRT.lib(ucrt_stubs.obj) 中) + _glfwGetPhysicalDevicePresentationSupportNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLPlatformNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLNativeWindowNull (在 glfw3.lib(null_window.obj) 中) + _glfwGetEGLNativeDisplayNull (在 glfw3.lib(null_window.obj) 中) + _glfwPollJoystickNull (在 glfw3.lib(null_joystick.obj) 中) + 已选择符号: + _glfwFreeMonitorWin32 (在 glfw3.lib(win32_monitor.obj) 中) + 已替换符号: + _glfwSetRawMouseMotionNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowMousePassthroughNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowIconNull (在 glfw3.lib(null_window.obj) 中) + _glfwWaitEventsTimeoutNull (在 glfw3.lib(null_window.obj) 中) + _glfwPollEventsNull (在 glfw3.lib(null_window.obj) 中) + _glfwRequestWindowAttentionNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetCursorModeNull (在 glfw3.lib(null_window.obj) 中) + _glfwDestroyCursorNull (在 glfw3.lib(null_window.obj) 中) + _guard_check_icall_nop (在 MSVCRT.lib(guard_support.obj) 中) + _glfwUpdateGamepadGUIDNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwTerminateJoysticksNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwSetCursorNull (在 glfw3.lib(null_window.obj) 中) + swapIntervalOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + _glfwGetRequiredInstanceExtensionsNull (在 glfw3.lib(null_window.obj) 中) + _glfwWaitEventsNull (在 glfw3.lib(null_window.obj) 中) + _glfwSetWindowTitleNull (在 glfw3.lib(null_window.obj) 中) + _glfwPostEmptyEventNull (在 glfw3.lib(null_window.obj) 中) + swapBuffersOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + __scrt_stub_for_acrt_initialize (在 MSVCRT.lib(ucrt_stubs.obj) 中) + 已替换符号: + __scrt_stub_for_acrt_uninitialize_critical (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_thread_attach (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_thread_detach (在 MSVCRT.lib(ucrt_stubs.obj) 中) + __scrt_stub_for_acrt_uninitialize (在 MSVCRT.lib(ucrt_stubs.obj) 中) + 已选择符号: + DllMain (在 dllmain.obj 中) + 已替换符号: + _glfwCreateCursorNull (在 glfw3.lib(null_window.obj) 中) + _get_startup_argv_mode (在 MSVCRT.lib(argv_mode.obj) 中) + _glfwCreateStandardCursorNull (在 glfw3.lib(null_window.obj) 中) + _glfwRawMouseMotionSupportedNull (在 glfw3.lib(null_window.obj) 中) + _glfwInitJoysticksNull (在 glfw3.lib(null_joystick.obj) 中) + _glfwRawMouseMotionSupportedWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwGetMonitorContentScaleNull (在 glfw3.lib(null_monitor.obj) 中) + 已替换符号: + _glfwGetWindowContentScaleNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + _glfwGetFramebufferSizeNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + _glfwGetWindowSizeNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + _glfwSetWindowDecoratedWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + _glfwSetWindowResizableWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + _glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + _glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + _glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$_glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__stdio_skip (在 stb_image.obj 中) + 已替换符号: + $unwind$destroyContextOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetGamepadName (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_uninitialize_crt (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwGetVideoModesNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$_glfwDestroyWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwIconifyWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwDestroyWindow (在 glfw3.lib(window.obj) 中) + $unwind$_glfwRestoreWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwSetJoystickCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwShowWindow (在 glfw3.lib(window.obj) 中) + $unwind$glfwJoystickIsGamepad (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickGUID (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickName (在 glfw3.lib(input.obj) 中) + $unwind$_glfwHideWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$releaseMonitor (在 glfw3.lib(win32_window.obj) 中) + $unwind$acquireMonitor (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwJoystickPresent (在 glfw3.lib(input.obj) 中) + $unwind$_glfwSetClipboardStringNull (在 glfw3.lib(null_window.obj) 中) + $unwind$__raise_securityfailure (在 MSVCRT.lib(gs_report.obj) 中) + $unwind$_glfwPlatformDestroyMutex (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwPlatformCreateMutex (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwPlatformDestroyTls (在 glfw3.lib(win32_thread.obj) 中) + $unwind$__scrt_release_startup_lock (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwPlatformCreateTls (在 glfw3.lib(win32_thread.obj) 中) + $unwind$_glfwInitNull (在 glfw3.lib(null_init.obj) 中) + $unwind$glfwMakeContextCurrent (在 glfw3.lib(context.obj) 中) + $unwind$glfwGetProcAddress (在 glfw3.lib(context.obj) 中) + $unwind$glfwSwapInterval (在 glfw3.lib(context.obj) 中) + $unwind$__scrt_initialize_onexit_tables (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwGetWindowOpacityWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwWindowFocusedWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwFocusWindowWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__stdio_eof (在 stb_image.obj 中) + $unwind$stbi__parse_uncompressed_block (在 stb_image.obj 中) + $unwind$initGL (在 StgSharpC.obj 中) + $unwind$_glfw_realloc (在 glfw3.lib(init.obj) 中) + $unwind$stbi__tga_read_rgb16 (在 stb_image.obj 中) + $unwind$_glfw_calloc (在 glfw3.lib(init.obj) 中) + $unwind$makeContextCurrentWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$swapIntervalWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$_glfwCreateCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$extensionSupportedWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$getProcAddressWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$_glfwSetCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwFreeGammaArrays (在 glfw3.lib(monitor.obj) 中) + $unwind$destroyContextWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$refreshVideoModes (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetError (在 glfw3.lib(init.obj) 中) + $unwind$closeJoystick (在 glfw3.lib(win32_joystick.obj) 中) + $unwind$makeContextCurrentEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$glfwGetRequiredInstanceExtensions (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + $unwind$swapBuffersEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$findValidMapping (在 glfw3.lib(input.obj) 中) + $unwind$_glfwCenterCursorInContentArea (在 glfw3.lib(input.obj) 中) + $unwind$_glfwFreeJoystick (在 glfw3.lib(input.obj) 中) + $unwind$extensionSupportedEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$getProcAddressEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$destroyContextEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwDestroyWindowWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$glfwGetTime (在 glfw3.lib(input.obj) 中) + 已替换符号: + $unwind$enableRawMouseMotion (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwWaitEventsTimeoutWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwSetRawMouseMotionWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$disableRawMouseMotion (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$_glfwInputJoystickHat (在 glfw3.lib(input.obj) 中) + 已替换符号: + $unwind$compareVideoModes (在 glfw3.lib(monitor.obj) 中) + 已选择符号: + $unwind$loadImageData (在 StgSharpC.obj 中) + 已替换符号: + $unwind$enableCursor (在 glfw3.lib(win32_window.obj) 中) + $unwind$makeContextCurrentOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$_glfwRestoreVideoModeWin32 (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$_glfwCreateStandardCursorWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$?fin$0@?0??dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + 已替换符号: + $unwind$?fin$0@?0??dllmain_crt_process_detach@@YAH_N@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$?fin$1@?0??dllmain_crt_process_detach@@YAH_N@Z@4HA (在 MSVCRT.lib(dll_dllmain.obj) 中) + 已选择符号: + $unwind$stbi__get_marker (在 stb_image.obj 中) + 已替换符号: + $unwind$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + $unwind$glfwDestroyCursor (在 glfw3.lib(input.obj) 中) + $unwind$swapBuffersWGL (在 glfw3.lib(wgl_context.obj) 中) + $unwind$glfwCreateStandardCursor (在 glfw3.lib(input.obj) 中) + 已选择符号: + $unwind$stbi__resample_row_v_2 (在 stb_image.obj 中) + 已替换符号: + $unwind$__GSHandlerCheckCommon (在 MSVCRT.lib(gshandler.obj) 中) + $unwind$chooseImage (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$glfwDefaultWindowHints (在 glfw3.lib(window.obj) 中) + 已替换符号: + $unwind$__scrt_initialize_default_local_stdio_options (在 MSVCRT.lib(default_local_stdio_options.obj) 中) + $unwind$__GSHandlerCheck (在 MSVCRT.lib(gshandler.obj) 中) + $unwind$glfwGetOSMesaContext (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetEGLContext (在 glfw3.lib(egl_context.obj) 中) + $unwind$?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$glfwGetEGLDisplay (在 glfw3.lib(egl_context.obj) 中) + $unwind$glfwGetTimerValue (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_before_initialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_acquire_startup_lock (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_dllmain_after_initialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetWindowContentScaleCallback (在 glfw3.lib(window.obj) 中) + $unwind$_glfwGetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwTerminateNull (在 glfw3.lib(null_init.obj) 中) + $unwind$glfwRawMouseMotionSupported (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKeyName (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKeyScancode (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetKey (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetMouseButton (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_crt_thread_attach (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetWindowMaximizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwVulkanSupported (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwGetScancodeNameNull (在 glfw3.lib(null_window.obj) 中) + $unwind$__scrt_dllmain_crt_thread_detach (在 MSVCRT.lib(utility.obj) 中) + $unwind$glfwSetCharCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCharModsCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetMouseButtonCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCursorPosCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetCursorEnterCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetScrollCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetDropCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetWindowFocusCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetWindowRefreshCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWGLContext (在 glfw3.lib(wgl_context.obj) 中) + $unwind$glfwSetWindowCloseCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetWindowPosCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWindowUserPointer (在 glfw3.lib(window.obj) 中) + $unwind$__scrt_initialize_crt (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwTerminateOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + $unwind$glfwGetWin32Adapter (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$glfwGetWin32Monitor (在 glfw3.lib(win32_monitor.obj) 中) + $unwind$glfwGetWin32Window (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetTimerFrequency (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetEGLSurface (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwSetCursorPosWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$updateCursorImage (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwIsValidContextConfig (在 glfw3.lib(context.obj) 中) + $unwind$glfwGetCurrentContext (在 glfw3.lib(context.obj) 中) + $unwind$_glfwPollMonitorsNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$glfwGetInputMode (在 glfw3.lib(input.obj) 中) + $unwind$__scrt_dllmain_uninitialize_c (在 MSVCRT.lib(utility.obj) 中) + $unwind$__scrt_dllmain_uninitialize_critical (在 MSVCRT.lib(utility.obj) 中) + $unwind$terminate (在 glfw3.lib(init.obj) 中) + $unwind$glfwSetWindowIconifyCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetKeyCallback (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetWindowOpacity (在 glfw3.lib(window.obj) 中) + $unwind$glfwInit (在 glfw3.lib(init.obj) 中) + $unwind$_glfwTerminateWin32 (在 glfw3.lib(win32_init.obj) 中) + $unwind$_glfwTerminateEGL (在 glfw3.lib(egl_context.obj) 中) + $unwind$_glfwWaitEventsWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetJoystickUserPointer (在 glfw3.lib(input.obj) 中) + $unwind$_glfwGetScancodeNameWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetClipboardString (在 glfw3.lib(input.obj) 中) + $unwind$glfwSetWindowSizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwSetFramebufferSizeCallback (在 glfw3.lib(window.obj) 中) + $unwind$glfwGetWindowMonitor (在 glfw3.lib(window.obj) 中) + $unwind$_glfwPlatformGetTimerValue (在 glfw3.lib(win32_time.obj) 中) + $unwind$glfwGetPlatform (在 glfw3.lib(platform.obj) 中) + $unwind$glfwPlatformSupported (在 glfw3.lib(platform.obj) 中) + $unwind$_glfwSelectPlatform (在 glfw3.lib(platform.obj) 中) + $unwind$glfwGetMonitors (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetPrimaryMonitor (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetMonitorName (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetMonitorUserPointer (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetMonitorCallback (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwGetWindowAttrib (在 glfw3.lib(window.obj) 中) + $unwind$glfwWindowShouldClose (在 glfw3.lib(window.obj) 中) + $unwind$_glfwFramebufferTransparentWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__setup_jpeg (在 stb_image.obj 中) + 已替换符号: + $unwind$index_pair_sse (在 string.obj 中) + 已选择符号: + $unwind$_glfwSetWindowFloatingWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwInitOSMesa (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + $unwind$_glfwCreateWideStringFromUTF8Win32 (在 glfw3.lib(win32_init.obj) 中) + 已替换符号: + $unwind$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$_glfwConnectWin32 (在 glfw3.lib(win32_init.obj) 中) + 已替换符号: + $unwind$_glfwConnectNull (在 glfw3.lib(null_init.obj) 中) + 已选择符号: + $unwind$stbi__refill_buffer (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwGetEGLPlatformWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_RTC_Terminate (在 MSVCRT.lib(initsect.obj) 中) + $unwind$_glfwFocusWindowNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwSetWindowTitleWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_RTC_Initialize (在 MSVCRT.lib(initsect.obj) 中) + $unwind$createKeyTables (在 glfw3.lib(win32_init.obj) 中) + $unwind$_glfwInitGamepadMappings (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetInstanceProcAddress (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwStringInExtensionString (在 glfw3.lib(context.obj) 中) + $unwind$_glfw_strdup (在 glfw3.lib(init.obj) 中) + $unwind$_glfwSetGammaRampNull (在 glfw3.lib(null_monitor.obj) 中) + $unwind$glfwGetVideoModes (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetGammaRamp (在 glfw3.lib(monitor.obj) 中) + $unwind$glfwSetInputMode (在 glfw3.lib(input.obj) 中) + $unwind$loadGlfuncDefault (在 StgSharpC.obj 中) + $unwind$_glfwGetWindowContentScaleWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$glfwGetJoystickButtons (在 glfw3.lib(input.obj) 中) + $unwind$glfwGetJoystickHats (在 glfw3.lib(input.obj) 中) + $unwind$_glfwGetPhysicalDevicePresentationSupportWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__get16le (在 stb_image.obj 中) + $unwind$glfwGetJoystickAxes (在 glfw3.lib(input.obj) 中) + $unwind$stbi__get16be (在 stb_image.obj 中) + $unwind$stbi__out_gif_code (在 stb_image.obj 中) + $unwind$stbi__get32be (在 stb_image.obj 中) + $unwind$stbi__get32le (在 stb_image.obj 中) + $unwind$stbi__gif_test_raw (在 stb_image.obj 中) + $unwind$stbi__decode_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $unwind$stbi__check_png_header (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwInputChar (在 glfw3.lib(input.obj) 中) + $unwind$_DllMainCRTStartup (在 MSVCRT.lib(dll_dllmain.obj) 中) + $unwind$getKeyMods (在 glfw3.lib(win32_window.obj) 中) + $unwind$stbi__pic_is4 (在 stb_image.obj 中) + $unwind$_glfwGetCursorPosWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + $unwind$_glfwSetWindowSizeNull (在 glfw3.lib(null_window.obj) 中) + $unwind$glfwGetPhysicalDevicePresentationSupport (在 glfw3.lib(vulkan.obj) 中) + $unwind$stbi__hdr_convert (在 stb_image.obj 中) + $unwind$_glfwAllocGammaArrays (在 glfw3.lib(monitor.obj) 中) + $unwind$_glfwTerminateJoysticksWin32 (在 glfw3.lib(win32_joystick.obj) 中) + $unwind$_glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$sscanf (在 glfw3.lib(context.obj) 中) + 已替换符号: + $unwind$sprintf (在 glfw3.lib(win32_joystick.obj) 中) + 已选择符号: + $unwind$stbi__zexpand (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwSetCursorModeWin32 (在 glfw3.lib(win32_window.obj) 中) + $unwind$_glfwGetWindowPosWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$stbi__getn (在 stb_image.obj 中) + 已替换符号: + $unwind$stbi__pnm_skip_whitespace (在 stb_image.obj 中) + $unwind$stbi__pnm_getinteger (在 stb_image.obj 中) + $unwind$stbi__psd_decode_rle (在 stb_image.obj 中) + 已选择符号: + $unwind$stbi__convert_16_to_8 (在 stb_image.obj 中) + 已替换符号: + $unwind$__scrt_dllmain_exception_filter (在 MSVCRT.lib(utility.obj) 中) + $unwind$_glfwSetWindowMonitorNull (在 glfw3.lib(null_window.obj) 中) + $unwind$helperWindowProc (在 glfw3.lib(win32_init.obj) 中) + $unwind$glfwCreateWindowSurface (在 glfw3.lib(vulkan.obj) 中) + $unwind$_glfwAllocMonitor (在 glfw3.lib(monitor.obj) 中) + $unwind$_glfwCreateWindowNull (在 glfw3.lib(null_window.obj) 中) + 已选择符号: + $unwind$stbi__decode_jpeg_header (在 stb_image.obj 中) + 已替换符号: + $unwind$glfwCreateCursor (在 glfw3.lib(input.obj) 中) + 已选择符号: + $unwind$glfwGetOSMesaColorBuffer (在 glfw3.lib(osmesa_context.obj) 中) + 已替换符号: + $unwind$glfwGetOSMesaDepthBuffer (在 glfw3.lib(osmesa_context.obj) 中) + 已选择符号: + $unwind$stbi__process_scan_header (在 stb_image.obj 中) + 已替换符号: + $unwind$_glfwGetMonitorContentScaleWin32 (在 glfw3.lib(win32_monitor.obj) 中) + 已选择符号: + $unwind$stbi__parse_zlib (在 stb_image.obj 中) + 已替换符号: + $unwind$stbi__readval (在 stb_image.obj 中) + $unwind$_glfwSetWindowIconWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $unwind$createNativeWindow (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $unwind$_glfwCreateContextEGL (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$1$stbi__hdr_load (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__hdr_load (在 stb_image.obj 中) + 已选择符号: + $chain$6$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$10$load_jpeg_image (在 stb_image.obj 中) + $chain$12$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$1$stbi__gif_header (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__gif_header (在 stb_image.obj 中) + 已选择符号: + $chain$1$stbi__zbuild_huffman (在 stb_image.obj 中) + 已替换符号: + $chain$3$stbi__zbuild_huffman (在 stb_image.obj 中) + 已选择符号: + $chain$2$stbi__get_marker (在 stb_image.obj 中) + 已替换符号: + $chain$4$stbi__get_marker (在 stb_image.obj 中) + 已选择符号: + $chain$7$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$9$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$8$load_jpeg_image (在 stb_image.obj 中) + 已替换符号: + $chain$11$load_jpeg_image (在 stb_image.obj 中) + 已选择符号: + $chain$3$chooseEGLConfig (在 glfw3.lib(egl_context.obj) 中) + 已替换符号: + $chain$5$chooseEGLConfig (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$1$glfwCreateWindow (在 glfw3.lib(window.obj) 中) + 已替换符号: + $chain$3$glfwCreateWindow (在 glfw3.lib(window.obj) 中) + 已选择符号: + $chain$3$_glfwAllocJoystick (在 glfw3.lib(input.obj) 中) + 已替换符号: + $chain$5$_glfwAllocJoystick (在 glfw3.lib(input.obj) 中) + 已选择符号: + $chain$2$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $chain$4$_glfwSetClipboardStringWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $chain$3$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + 已替换符号: + $chain$9$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + $chain$7$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + $chain$5$_glfwInitEGL (在 glfw3.lib(egl_context.obj) 中) + 已选择符号: + $chain$7$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + 已替换符号: + $chain$9$glfwExtensionSupported (在 glfw3.lib(context.obj) 中) + 已选择符号: + $chain$3$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + 已替换符号: + $chain$5$_glfwInitVulkan (在 glfw3.lib(vulkan.obj) 中) + 已选择符号: + $pdata$_glfwGetWindowSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已替换符号: + $pdata$_glfwGetFramebufferSizeWin32 (在 glfw3.lib(win32_window.obj) 中) + 已选择符号: + $pdata$_glfwSetWindowSizeLimitsNull (在 glfw3.lib(null_window.obj) 中) + 已替换符号: + $pdata$_glfwSetWindowAspectRatioNull (在 glfw3.lib(null_window.obj) 中) + ICF 总节省量: 3048 字节 + 正在启动传递 2 + * CIL library *(* CIL module *) + StgSharp.C.exp + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + kernel32.lib(KERNEL32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + user32.lib(USER32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + gdi32.lib(GDI32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + shell32.lib(SHELL32.dll) + glfw3.lib(context.obj) + glfw3.lib(init.obj) + glfw3.lib(input.obj) + glfw3.lib(monitor.obj) + glfw3.lib(platform.obj) + glfw3.lib(vulkan.obj) + glfw3.lib(window.obj) + glfw3.lib(egl_context.obj) + glfw3.lib(osmesa_context.obj) + glfw3.lib(null_init.obj) + glfw3.lib(null_monitor.obj) + glfw3.lib(null_window.obj) + glfw3.lib(null_joystick.obj) + glfw3.lib(win32_module.obj) + glfw3.lib(win32_time.obj) + glfw3.lib(win32_thread.obj) + glfw3.lib(win32_init.obj) + glfw3.lib(win32_joystick.obj) + glfw3.lib(win32_monitor.obj) + glfw3.lib(win32_window.obj) + glfw3.lib(wgl_context.obj) + MSVCRT.lib(argv_mode.obj) + MSVCRT.lib(default_local_stdio_options.obj) + MSVCRT.lib(fltused.obj) + MSVCRT.lib(tncleanup.obj) + MSVCRT.lib(dll_dllmain.obj) + MSVCRT.lib(tlssup.obj) + MSVCRT.lib(initializers.obj) + MSVCRT.lib(utility.obj) + MSVCRT.lib(ucrt_stubs.obj) + MSVCRT.lib(gs_cookie.obj) + MSVCRT.lib(gs_report.obj) + MSVCRT.lib(gs_support.obj) + MSVCRT.lib(guard_support.obj) + MSVCRT.lib(loadcfg.obj) + MSVCRT.lib(dyn_tls_init.obj) + MSVCRT.lib(ucrt_detection.obj) + MSVCRT.lib(cpu_disp.obj) + MSVCRT.lib(utility_desktop.obj) + MSVCRT.lib(initsect.obj) + MSVCRT.lib(gshandler.obj) + MSVCRT.lib(amdsecgs.obj) + MSVCRT.lib(chkstk.obj) + MSVCRT.lib(guard_dispatch.obj) + MSVCRT.lib(guard_xfg_dispatch.obj) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(VCRUNTIME140.dll) + vcruntime.lib(softmemtag.obj) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-utility-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-string-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-stdio-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-runtime-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-math-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-heap-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + ucrt.lib(api-ms-win-crt-convert-l1-1-0.dll) + 已完成传递 2 + StgSharpC.vcxproj -> C:\Users\Youmu\OneDrive - MSFT\大学\毕业设计\GraduationProject\build\StgSharp.C.dll diff --git a/StgSharp.C/x64/Release/StgSharpC.obj b/StgSharp.C/x64/Release/StgSharpC.obj new file mode 100644 index 0000000000000000000000000000000000000000..06aefe2a293dd39801e080ef95e220d0fab9f430 GIT binary patch literal 284248 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 SwE6nzZ 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

!)l*f^R=rU5 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 literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/hash.obj b/StgSharp.C/x64/Release/hash.obj new file mode 100644 index 0000000000000000000000000000000000000000..fc921573eb4b967906abc83da1303ac9a717dfb0 GIT binary patch literal 144394 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%0A{`jvmcfGeA&VltMr*+H!PSI>9%Dd!#RK^ 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 q_l#mX71J2{OQ|~3tv09uC{vb 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 literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/mat4.obj b/StgSharp.C/x64/Release/mat4.obj new file mode 100644 index 0000000000000000000000000000000000000000..03f59fb31e35e4e0aa6168ed5e0422f6d7f250f5 GIT binary patch literal 153504 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
  • QPA=)j>+>}eZ;{ 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 z zo0NB=_fZzTI8X7Cg*MS5oY1s?k-|B=#L2wGS^X;=_vOW(FmuA08G3u=?*o}W{ftiC zW^R%)?1*jmuk7YVQ9N0Grwat>UsmynMjWUs^yNUI=MUb@naTR<8mvqD9t6Zq={CYS{Z}bg!D&y5ztN9}ECCJIs_+Yuqu7uZa{t*T4*f50X#1x))kx=U0?|II-!!lQ^t9*3Vdr)15m1!S@dVI z5{rH)?0L~u5AKF4S{?1>&WrAHUaW>*eO}NeSd#>yX`lO?!%LjZOPsaLd9g5NPB?RT zUaSR~J}rVycV6)3c2#!7wz~(r?Rl{{T_DKP^P+oQVQmf+dX}J`xXLF4oENa${2k8= zmwm@ao-SV!GyV10EB)+K!(2I3|M=fzT`SUGEVdtUTJKaxp6gNEfHwt8L+ zao(*!%WFck-ncsSCp<5>bx84fK?C7=frlB0$-H~*&x<m)IO(|e+9aQ2tWzf6{%r>cwQK}IrEU)WnZSJBV=UH@@`BLyt zJOioDw^cwrt1jUxT9x88=-3kX=!U_mtuNR``%@E6k;~WHE}x7A!VLVX4?1s?j!R5U#Kg z0buhS&=Bo}Moj_r9R<9u!a+>Otr<}5i7KH5wh!DH2W;Joc8gvk>|!mB(3z@BW}jU9 z^de<0P+QYZY_080YulnJ+C4Tm5q~mN^bVOR*+(b+LQikKM7O(xfiBZd$QPr#qKP2 zW3ej=8&hr#5$%J9R$@y1GBM@O5OC#CR0%CeO!vcqM#7yQ63$Hbqy2HvcdY!Gma%w8 zhjH8hqH%AkLpTBg&UG0LksCQg`=YNXhIGlske>NC(K|2EO)pt+MKL^zlcZvpRwPJn z0U>eHK-+)XanA?X8HS!jY4?R87PRk34v6v4jBmltl zxDb{(`wk^I^qoXiUa@sU`=fda48fk>;sOVh5!LaC>amzh{fEUdERJSz6bc(vZft=O zr|Rl7ROzTv*GKgPNIt5kQ~P){$vv~VBdlRmIjfB-CwGxch{8*RxrR)w4Kt*goqs<|@>hdI^ z&t9VQUb2wgBCGT0GES0OWYdaVWG|=71j2ZRP|!FQ>*h>oXg@I7H6|K3x$pB)q4C?RQN%!UVb}~E^1o3H~>!Y+d5M+(S?xwNqY@P zu7alUeC5=3FcEk@3B^mqF2`Kz zG8UJzxP-;UEG|M}+2S59z;iRI^sm&Y$p>ffG7dYTiga2QS$b85TwRrku0)$>?G{=n zW{nUmYeeFhNeIbH#O9>Huwm^AbQ9&Rm_u084ee)bn)aI8#0YDY!Prx0z;hR>bdFKeI?Mq+$F7Cs+2U3(C0BY*Z3h#9VXNX_o%k?n64g2l}h<-oC-|H>RrICQF1>$l%B?RatBJ~m>dx_X5j5|Gx`A*M9erEjy z=$e>?y?nz5&ew+BSMh%ZW{7M*(=W&yeei_tY$n67~o@Kga(^C`qLm(AA9DJlJJzxH{1>Rw>m)U8R&#(~CtrgEip;b4 zmmJCS5SJMSq$dNysqJ7Q@M%vdULqzZMc%Ms>s55qyRR^Zu%#Q?&(?R^+iy?_Ta>}p z1z_uK%%$F9@g|GeEZ$)8Itt6y_j>#fsL~f_YWj;ahZJ9&-$k2e?MGTDW{nUmYeeFh zNeIbH#O9>P8#b)HgKo0+6Xp=sbVK`D`&D~A2bHi!8LV9f);`8u>LV5(viN|-`zS17 zzv-dBql!L5dn*r+99HH5@(&D6I8>e-zs3Q5`;!KX&cj{M2ZmeulBGWnKcSu2TKkLE zK1EYBna_+&<7Jq}^v(u^PCC*Pdg~>+?IjBqSoF(Py|Vw!Nm9>@X+=IW{zGR8gdj{f z1uFXfMW2LIH?%*T)wMz)b{Es(q>OM*MmT@K)arW{-?8|X#WyHyI6LT}HK@|>b*SXu z>-+@C=Xx!*i*ubbS!y|`P_%qiQ8L;pmd{x}G}F}Lf` zn$RHgr0^FG^!ypC9Zich53*5@)ih_3F_NWn>Lg0*aiSb_aJwQiK+JPqqJarb>F=By zJ@r)N-KlP9Kcy?e5bX6vC6rPIrPDy^-c6BQ+wSF;~+uSC`2H=p{3iAVuPUQDNElUJDi zF)-mAj@Ex5kcQRJBed#<_R~5LhG4INN@%4FT5kfa9pJC3Mq#;KQ|k^wmA*1l(_fi6 zr1;8Qi#C5w4yJ`7+PsENpc;%IvUQ*Ss* zhJ>y7^ECtTpUE;D9Rj4YAZtI6jbRA(M#%g)pbQ|_14x$u$R=ox79VF`!z$x98lqpq|FCu~z6Ypbb+iO+4L!lNNQJnz zg(1M%M&RIpGH^`=uI>S@?a&-8REmo_pv&Rf9(san(F$?x2}6Lhhrq!BW#GCH+g2?Z z;Mxn#QBO1^Y~@WnKfloXH1_8Xjd}&XlApkZ8hVpI_oNhd6?%^ycO~C-VoO<^Mn7~* z4b)o*;)5>xBVW7l>8{exSJM42w($9j{Cop!?8C|EHWn+nDD^5V3keLN zbN^x_exE|OCFKFdIz?N4r3vBglkOePfh9xJJAIW7Wk{;^u8};s4=OQGN{7DEj@6$* zAB+K`Y8scLhq3qbkk;*_7!5W{B!ojthPLH{WjpwWs`uzH0T>HFSU;R1uft0baRr}- z90fzLcO)u_EM=SoE5I!N#sNyZkRFYWgbnr#NQYBCmreJl{FVM}p-$l94=J>6O~Sbv z-zoG*fQI6KRbwv>jje(I6dTYP$kVNmp{96qEVR;_Ray`H)$6!oOKHbigaX!%$57lh z$$St`fGAlN07mnP)MBi}g9>7G5)8rKI8@>tWyC56cbilerH$3e=t$ULV->7cg?h)% z_+qs>e8fI6i$(1^v#4FiMJ+T`vNjEjXbz}OfidkoLQvJ1XLD>jPb;3uN6V}&y^WdE zjTy7ahc;t7&p;>m77sAxS;bbuy^B#v ztSBQ^4REtb#VFN^C~UwkMQ_4Zzu5MJL<^UptFaG-*fw2Wteq{aLek>Z-Mj!X5dw&pSs+d-o+He!{tn7ys6~Atwl!(GzjUeA-}kVW!6}@bWaR#cK@l#$M>f%GP| zDoV8qivcKXPTvldgbg+k!z3Amc5Uens6}f)OzD<6Q`7xzCCN0-PP2>#0iwceR(}s=%*gMdLWk0EkmUxK75o5+T%O`w`Gnsz$f)yi@*opv}SX46lE zt3zN2?ne)jUqS=%0g5%TBnZR@Tc2OA@rJRGjkbVg3TttGN#=(zN1I7t=BOkIX14B& zP1C>)cOuU+5Y1)La`!Nraof5!U5UjZQ1*z?HGfE3bYoFL=c63K6+xS5{{`+D7=pd0 zQ3;8Zu_6owlqNLtUWIwJu8Q2&)<=U7pigGm z-i1n`lk(?Vn%{tWLUr?pE4p`XeH{E7c4Sp!6GjlvYz!CwbVK|7dmn~i?>$uFA7%Kr zA?9gP8=$oQeSnT=I2wwBL8Z_?{o?XNs3%lM09zj+;nQ(8LEH$#2G-*LO>8iDuqt!AbvS->U|kHdf2`5A~@v5|0|44 zI1ywW*-ao2wX8QBy2Ee-o~{F zb&Mo`Pp7s69a%o10UT(tQy1BCK|l0ti5@yq17qTdZfL(F3&9ZVbrt+LpbSTLz&uTA zdz5NB7TdDehQ-z>tV;{)!Hei>QB(;P0X?BE>RyFQaljdRu$O~*<;G_vlksu>j_ixA z#$wQLKiXOXLbMC|Ws6OG1jaABfK9+_ZT!>|Ih|59*?>hsFcqr?2 z<9>t|@59n{nIHK|S3-T#ZMcxrJzLn910*k(BiaKXI_ljJLs_j2Rc&x#^e;x1r-1`$ zz|vM~zz|;EKs^lDDd<_JTAL#s);t(?1!e@L_;QUp+KICnbR1D#qscgo{qZ3zMMwI& zLqQyr7YTAfUsv!_?x5x2u?$UU80x}ru5c&~f%)E;TR^Nxq;yp$hx=+ypgU^8MsXz;9HSP1i9Tp1DB14NPIl|1XFtfWbqvwMhcQVP)B66AyIm0lw zkh2aB{@diNTRf*fnNsVOKY_yqe?5!_wL(cO{s^^AXm-@D4o z971C(97s4eL9+|TNC@#&ZG__#3CGFv5e~Q7$zM z?*2@M77=% z#GN%C#JTL0p+&@tvG^*q?}27V z`<@WuYuljxe4+i^`Jmn1RLRgH+Rrnz?}fRA_Pue?0_`a`(+i+o`}Qdw-2zFzIV5S{ z;?aJMPR;F`!_oU;G$J+`sxE>Qiqm{2MDc9C=auP zWli8=Zm{I(2m>^>Fb^l{+Qxmza4c_4WM{G?iN1~ZKu1Bxy%Q-S<7k@YrvN)j=-U5w z?nD>@<`Ym!wo}IIfSX|!f1DDfx{<{VDC|4A(NIa)0JrHnUNch1NU7J1G=O&Znvwfx z4rS4J3wk(lGmMENx}p7!On@QS8!z~AKpBqQg?aGTB2lVoEbd@&JB!;;SeH)KgHO}d z8K@E}0(wGS)V&Hn>z)HSpRnY5*m1%1}u4{224208<-3OHWla@-Z2{e4r@LMy8?3xl;SxWb#xDB zGw3+NzGHlb{qa*QMMwJN9U~pI?-ZwWTUYQ>=Is{b;js)&Xc+c{-(2Bo8UpiIVQv9& zHIdR)og(HPV+Xz^OgKYnbAOzWvbinHOf4QQ*CiRv3Gt^{uoWrv`60+P(8c9NT!{sT zTwbn4bK?^R)^!l#Unw9hTB786_Q%h%oJUF)u$0KqB1)b!b6=0Sg_0X^&=MsfQ{LB< zwp?82g+LNx$+;18f*f%w7DPhMO=x!H+zcW9tqpQs5^`Rc4{|zLa%5-`IWHP=Zo%9_ z&aF5|xvO(f^5y@EoZE`$lv~8|S#~>gL8K563wj~)4m3L=r$LB+Z-dBJg~*p%A<~>^ z?!@Emxtw@1w1~)843T$YZXxn69JEAa+b7=L7!5ZCUM#l7&3n-7+`Jb;{6`yZz9DYD zHXm-flSzgax%s+r^FGWiZYDTr$<6<(e3_0pL5?^T3nC%sel$CB9)J-4*#sC~y!`v~S1Y9GZxOVqY~dOcP=+OshaBt2d{x`j)E zZw@JbqIk3qP{}p*N$4URLSrl(NI0HCvkS-55aPev2*(E!j`!vx9B#Ffp+(_%--P2C z%q`(~76&baLmnPx@Gif(H{UUa(MdBTFA>9T9~BZ<((NxzwtIxV-aZFBAWj^P1+5VG zJenPGFF=U@X@j_rg}4vrgE)78CPRye`^XUYBIXw2Uc$lu5^*mVrW`(2<>0Z2kq{rN`@BE{8;eoxf3jq;i$mUk!ertwFjZ{wZNPtb91 zM)0PQdokW^a`b1K<(o#`(Eb;6zrzqP|AtC(o-$qva9^7y)e+gDYFX5<=zzk$oBKnL z`%_ncp-R}z?@A3^9tSk~H(K@UFrdd)7L5zABevcDpgZb%^~4aH7_w`#g~d5Ya-@?s-3bkW>7MM5mt+~) zE@N7{5;oE_-9w!%EJa!F^M))_uM1R{Y*}$b^%JCJW%q!0(y2 z80`B#y4BYI2IN`e`&~;V}HC1%i@qpmvgc-WXn3! z-8r>A8Qcg*umM#>a4S5P3}}@{OV^_0rDLP`5(~IdwVLkYgrfqo@G!;mQqH1_{S%kR6WqDJc}HQEDF0eE~m#Wud5YMCG6%p zG;nPk&}c8Ty0sA>t2IXKh;4Trx}yd(wfr?`0>Eh`OCoXDW5O}V#b1NY5DKm8ue9>J z)x8QsAZ!1!oHVs0TG)O`%u#2)mqa*-AUQYTe;#%abD11sL}bPzvm_2BE_C(gj4=e; zub0GO?2fHcT&xr>iJ}Ti4NyY-dShg;ZmlYY2C#HpX5Esmg!&*fF~lZ@Y%GbZaFC=% zA8mR?Gz6yCV1K+C%gA;a)6$i&k*4V$>TF?k>Wam_^r!%l_L|)?*DYA)Y;+t#Ltw47 zTXa76$EuYqqz&MY5n^qV#Voz(;d3st23CErc5PJ$d+zoJo`iT{#H&ku^v zUOB|97s=T64JbEWmf3t^T{C`_aJ>HJG#A>~_OD7CHh<^AYyF*E0~#wgE`$EhSOV{A zu!rSa0u&4NvV5=3X>4c=r`f`K1Sz3egD?j{bf@(^V3A7}BjCsr=Ubw?Kn$EC9DxfH z>25M~4YW8+%8@GD*H~`6p?iHZe$8-vK)3B5L>u!>w*g&-?!mA(s$(ofg8j89);7wS z7t5(6SIM=Bs*P1>NQkUxWf@AdT>fQ6tzh||1Vey15tW3UGM0}E!CsTP0Hrz~g!u`EF;@xmIvud*odU1#qQa{6;u=?Q?Q{xSO*4X7x6b^B zzh^%w<9wDs6X{IpQ!j9!x`RIT#_OFyuBBDdW&CTd#(cTLG)@cNu0wb6W#&%w=|@NX zv&4(28`}}rV+77+aX%LHaxUM%=GsOfITi*b$!_HIEjwkArQI=HYX@#2!pi``wCbOr z-OARIEVvD=$Q&0GeFd8;_^)E=yY!#=l`b1E34f+=H5DZyca(r1fff^y)3bJ*120RD zbtxfce4jx-E`aK3CDu~$wd0&MeW!;o%6e)i>s7eR;ky$S<7+6+H^u!+?OsbmzN~er(s8;Z`hIg@5YYj-;EWJv7O;=&S2;v>DBm)qZngd?3^py zZLr(}&EoXD2YsdKX-C|P5m@_#Bsi0lIKwAD6W2CMn#GbsasoWi9sr~RUpAOK*G~BmtdObZTL66se=8@v@t#zgs}Ldnv|9xJ z8ELs&4bQtO?AerX^J()lyP2?vQ^hWa=CSog@*ZE$(sh}oO}gw#W|K8rxPiKIw#1;5Zx4#nf;N5avqVP&UOOE zRR7}lQChwQmW9_Alpcdpu)G+~ZYR9>R+h!fi*(rpN@yO_Wec}aS2%l|-loIEwLYPb zP_;w-{bg#oPc8IMz!Y9Z3XWK2kXMmUvbkd{9D?4bDAqPggky=FWa-mr7SDqfAKK4Q zo0oXG1XOT|e-VaY?*&xiH)Sw69d0(M1f{wUg}ubTq_tnxN)Moi*bLndL9B{ru#9Y% zNm1!a*a&qFY36y6Ej&nNnfDc#jAlYiIH|qR>I2RQ}1uKV_v1K={fD-=L|7 zX^Qp?3AOUaeZ!OtY`8_sH zap{x@z02tz|b6YQAvm>`bhphhkuRiL_`1hD9;Z(TTO7M8y>{WQf zVflerUV&J=1w^a!*lhffj=f4_32m6@$=Tnl@EY5}&rj{2qET$e*3!@PCYY$It}vUE z2&=!aGeq6Iq9t@J-WJ($sb}^%C1X-SAY;|m*I%LA_`LDyHwefynH?_vPO&x?S|R>X zVz$mg89#1Lw=f_*(~$FCPv<~Q=cUcP*PkUuQ_95J$!-k!7xC1@FA!}T6L4J5%s|P` z_(kL1-yF|VMEl$RQ>1o5Nr4(v5+uqvMc%#tG#YKk?0yTbdk_{$JhcOmM&kAY4@9!FDw>Tk}PrR3_; zEbFpOhlM%*1CFN~MORtc1+jy6u13+Cr&(L{Bp`41tc%%`80t$~)OS(MYz z3Z_Z>SwdyL@C7Fai#;%i#Lm_CN$;{bww;U7qUE%dF*})kU|76FJvFga=a-{-ZC`@w zA)iHe2!^pzhXbfEvn0$Q{e?}4D?p6iBbO}$x1sKiE3IBSdtnq(l~a-peFbj(MA-O< zrRy?xX3~Y}>gWWggQ2uD>Bq8SXUt2zVMk^QU(!BIWnilDW0_K#8fD^GTF{+E_oy11 z21L1NufkVUmy<0|ASstqE-V2H{__FF^YDZr{GR)$oOGd>zlmour8FYyfn8Z)UngPUcWXf@hUZa!ik`&&m_ZN znKNl&JX2|d!!5kFhAd?Uj3_~nT7Rr#HpMrlx<&OJ$!h`C(Cg|Fk_(o|RCP^Pvn`nf z0m0t{mLzR;L;G)EHiseD+YFVYEoG$bADFyJ{f<)ohQg-p7Fv50s)X&W{9`8A8iRs-{gchH?c9d5|AnS><{6Zdc^1q(WZt$V_|loj ziCpHHIauo+}^_n2qvHOBg$ z7!jmT6`Nz*xfiFdMpGJbD(YOH>`JnC$@D2zam-%H_9@X#g;I2F9QUOzabPZaxq&6L zxvP$-AVviCgN{U0H?%*Z$HEZo9gRvNN*NLDhUuGBSCpy?i_R=Mu~?AB0xUYBu<<@l zn>k)rC!$K&-Fn#Z%(Fa{IR9vjC=R8{~vYl0VPLqeGjj+D`^!#B4@Ok6=ND0 z5V?0u5NQb#$w=g!qrm};ZNeg95MY~}bIxE4#x%)9gE2Yh9E=0OCMW&xeO0fzy1Hk! zcf|Ld^V2!%-l}@b2nR#pi0!1*4?8U5~r$M8?k*%_)Q+7TmW=&+KRo!qF-OV_I z`twtt^OfBCCmIO3%rze|p(oVcGwBg^AQe|}Hg2CqD8@$H=$77}*Bex4Q)q!eD7`;_ z4x!l$)vQOkppB0gr)dQGTw<1*YgFTWn$fYJ-`FSvU5YNqiD%fTxUNPQkKxU$f*O({9%7mzSF%|$)@$x? z*HTxJip?OQGB#dosVu&&@)lRoBv*_TU)J;_Fb0M^Kj( z(G>oA71n-I`5V|U@QnB))cVPYaB;JqXI3Z7kGKQcTDIIMo<`y+dh;e0J0eLQ6#v9x zdo&m0kT6QN|0h;@WIBu_m=L@fg6s|Ziga1|QT=D?^LDeTXnjw1D}aEP;3OT*GWKN4 zf>Lj70*YR;b34bV(CB*d|&Nr8s5xicbL*zyI(<(u&gI_6+Iq^53knyK*>AB)QC(I&YhU9u4MZq(dWs*mzet}Y)oJ~dRlk;l;0^Tb) z$%Ml)Cg*kFC4Q&@$J$yvtjWU~IOyd3y3u%@jKoKY(n$t%(W&LinjO{@LD1Ho$a2eBH z)n!a&|4Z2ob5u)T)%=h88&RL>C08{>L%7_Oo4cy{gdR}`Qt_TRn_m8uP!cuU#z2Qx zHJ?#vW9TRVh0-nS=Y(c6YWoS=_;_!cM!dctX0W(*p$)NecTh|ctH#$fqaiK0s<908 zs^*)Vc%}=LuqN5J8j=VeVwwmYY?i$An$v5SA*5n^NvMpC_azl^awr?UNR6(>m!OGq|6YTv|nG-5d^QrHpAVTGV(+DORO zH?Vw0p)h4wB(9=MWaIs5IoXLnWbd>)PE~3D z9;g&535oIXffl*j7s>$2hO&MT(Y6V z#9zLDvpB0e>OT>4X%2M$vGKvABHg_L8>wp>v3mTjW5A044D>`@zk5)NuLk^@ zwxiUiRi!$TYEW8@#i8|Iic}hw)lu!oY*1HxsC8l@n#y&bYOF<#=0o-{3%)i*rKdMT z4MvA}Q$JkjsZehyB=bb4h(;m`$JT`qo`e?1P}~5;Xa~aRP;lM9j=iI^9io_!}20 z$%q{vA8C;{@r5#gX1ef)QKsq99BO<5YsSBC8iw@ zLT+q)l=ETpj6plnGmG#Rkf=+4!tRzd(HV(8id&)RM$aH!T(_psut<17Xd4!X)+K== z1=^OCL!zxnq-<98$TS;mO&#EFM~IF{CU6wDXR$q!?FWiGph$1+-C?<^LG_N5;tdE> z(fSRDT>%8VU2u{-XBj(+86ekNI~qs5_zJah)Qp{C!LVKmd?*(liHC+q$k87(f5-#XU@bM)$!+~>IJ@#MHHdc zN8!6#Rwze2+uaR_OD|;ayH(GnxkBP?c-Y1gKd(Rt->L?4Pv|lV5su!`3!E+8D+`*; z4z_wZn}|;>1}N3KqM*rY32T4C$PN_azp(a&vZK@pNuT&alEFcc=uKvH$)E^?Bu~`; ztS6WFo)9c`QW8hCvQ5&-#i6;BfHut%q7zU$Ns z&~hDHnAy3O>)FD@&b9o3EgUGhmK)HLnUcMkn&ug9dagMz!aa-e$57LoLIX`1&Z*{& zp{BPC&@tN794Fya^QKVKo6Q5wz~-MqO_`0&gwK%CrcGJN_0;Cgp{BR61e$@(KZlw! z{Eba^25s6Q6xh5a)b!T4Kr^tJKoi^frvT4=-K{Kk)Ma-S$=1lc+5y$r<>_`yzMmd! z>DI2E4vd5wzZv+VB{p#vV9Qm%g}~9xJUVr=ThrZHm)V^eb#5NvrgvG1Rsux=6ztvp zOjub#?*zf>ohW8>NtSpks07JEOPjZXN^C5)w0SG2gv2@^ZQcqhk+3wS z&09gm6*6O2+B6p#e+3n%RLJI?2>C0hgwnbvjou0>v9vBro40}rI~`zF#w>VMaVpGn zvw})2v?;44Ayhz1$gQCFa|&VB3yrq6LFQuuOp1SH3o|>{@&H?y*twPm*}{R6Yxz4` z63&&J*qFjH*yaA2+=MVc+PMdx1R)znUlWN~bBy4vQTLOZ4~J+nbjqN~h!4;n3DIO^ z6rwR6i!){w7E2b>zPqUhLgidC|EZh-#2|ySmFXALi zG0WI1JO|j`+Os&;p5ftX9Q2ORD@Ns2b6RFNhRU00mZ36VJHGJv_akcWSERV$zh=(l z6J1i^<+Ce%Z!MFT6LY*iUzSupY(OPr{U39CRKB+skIM3-@=XIOTozm)_Q92uD|~M) z9+eeIW%zH3JLs|Zy$;G)|K3_WDl3!9ybY*uS#g2b?H#Z1y|s8$dPt?a0hI?aeLE@{ z>)%_8N9Bj4GNAz#E~t*mxeI!{zPA>S%BrNYY6B`6-!s;~w-%4e8l=Brhiu9gIb^ATiMQ7FO^^HM|n&G z<#nn2Qa{RF4V2fT^2_}wPiUaLK9yhTM|olcaCLih2sd7x%Ctg|myE;{M2M=6#bJe{UDQi~7gsY`zCm}bl z?Cfq)LYLf%bhj+f<u#&MZ#!LX zI^@S9WcT6qJ2`sxrFj9@wUbRY=*bTH>URAZ@RFk?1Kam!!1I8S8n6dD^k=~Hpd|x4 zs)1WwA0*5}k7>ew^2)C7cPh|j9(u9~yTB_u-JMnU@qydjr9ii=-Cb4J^Oxh@Q;-91&;%S0|k9>;{!v{!bV_flOi$;#^P zt-9VE%3Y*qCm}bl?CkDSLYLf%boVXL<(AQtZD@DD61t7-{#bRrICHb%+vP&+m7Tx) ztF9O4vbqPTt`}$SOFcUYxp`%0_a`NE$*oBDrv%tS6y$d3i3Az zV(0ulus}EHlO)J*r+bj1zG*X!SJvU!w{Tan#gme3`) zBHdpV=<w`cUpmN7-x?0BHif)x?!9- z#tU?@t3R?po7aq2_GMYtC-A<=%Ee|9tLdJKa#6q0EarkKJWo3Cr{_57p2z zgP9js%Tqd#U&lg3^t~A*%rEW&eHgu9IIe^)cY#H^zb(+^==Nk2a`Vc{yZXBVU5;)~ zHX%2!>~w#xx?X;jwR?PlZdtqTR!WIprhh*7e)5Z<%!@mZ-93pCmg!+0s$qUHn0axv zEctZ;MEc7w?)H5c&94(n=yJDTq|s2HX%2!th}oy7wB@;@?;Zo^U6;56xH?e ztE}Bq3v|ocb$8oJ^fLYPx%ZP_3}s&2dF*bOm9R_?^H2@*i^0r`t7XZr(;(7ce(~zr zhtd2xy@c*A4Rp^a(B*E-vy+gUS61HDGYfRN8}nona`Vbg_bk=*@~f=fvkP>~+T~7P z;#{Ja>7UQNpZsDd^Wx59cQ?0$WqO#0YM5UPW?oz^Pw9{kA~%)WtN8G3Gv1_q193>) z?LEyTw|nrecgo%qbpCnQJE1PE`b4c=kecF1x$8J3<(3?eRCodBluRF~>*-x^k5s7J znAB89%H42QQf{8|NR_=y?N&06RH)mS)aH(qyJ}TZF1bBY;bpQ@3L@pUZyu>ow=t=$ z9H~+{<-%!5q=^`ia#8k3g}RMNZS6?8^w3BZxHMR?s=-~-QWv9Y$UgW z#j<*S30-n4(!HQSH~g@%k=+YR=r*!@k?JPywnUhA4HtonRkwu?8!u7a?ER0z4;#tR zi?g16_HS1f z=rRvI*@Ru-m7VTYs_R{1l(lUwKckiQMD4elt=4f>?vhmCituGhcB^J0^bn^$&m z{)_5*{aaS|F4gt=_nYj6dO~hRcJD5sOKwHF_Y~-cA2v3!dv6KdMt1L0U2lG73_Okr z=N7N*;(ULBE@R-yCY)QmveW%*fi7d<$tE0YUfJnBP@u~gc(Mt{npbwZ4;JW#b~&dN z>He)iH?+$+tw{Hw0^Kmq9OFg0e=pDtWnSEQ?5+Y!Sf+=0sD_pq%)Gc-mYelYLPYev86?av?gD)nz4m>ogf4f1 zMY>NH=yG&>vI)6)W#wIcra+gY+mlVm%_}?IXI0nBud;TZE6^=#*WIcq(aZGD=iX0# zF_d|6=drs(QNl7k%tJNIF9tI&u9hXgo`*<(`NiG752N|@LJ3{&_KS31EYRhu<;f=G z=9QIq^`!z`u3DaKLT+B!>AtMGUVfFe`$~asS-b9zU5Q?%e?Iqq@{6I&i#w0qt+f)C z>0utKVSX`~d2zKY`SmJ9`pYj~J^L`4U$2$Wy}E(!>jk>pjd^wwa`Vc{yZT0fE_Y*| zY(j2c+3CKix?X;jwfk0qZdtqTu5O85rhh*7e)5Z<%!@mZ-EH3zmg!+0s$qUHn0axv zY(H$=Q*N)~bG^NJ7x-D@_94VO1rXtlf(AF&0kJP3-YtL# zugx0V3J1h~gm|w2BD^#VZUK9a96$)(Fi#i|iJ^`v7oj2U+YJf%dVx-rvJp!C8q`>~ z@ooB_I8qF8hLnrBM~V^fNjar}l#7%{D%5RE>gSGBsYnGR8b-=F8+hm8rpVU3HK@U|}kHwAT zO2~DTbS_FgFF1G}gJV`+ zaB%7fdBMRcILQkRSjNqqkFnz5SF3T<*BYE=1W(5)VZHl_lEv4vKL$Asqj<7V3i5$=1a{q(~Qf#63<3$VF(8d@=!R{ROmF0|U>8Z;!VaEUZt6N$eX%Gk-9xR?jm=4884*-us0{Dk*)IoYLB*#P(Y zoNVToP2Kxzf*-BQ($1;KYh?zeB5!*cn2NlFB~Woe5n=2 zef=P21F)yx#8-Ot(`>BGoO!ta6Js~#EUxXtI?w3M&5)I3{Ypki>&cn`2za;PB+1G$ zlJy%&)~~%}y%i0T!`=_mv7NbV-rr7Mw?Qh=Y9>$L1m6dSrf2=5bTYg>Cp{&Urq_eU z#*>`R9ngWHJI(1YI8_IsF>7>7g_$w^xQfeR^9HaP_DyjBxsTd|bK047PKXW?Ztvw1 zZejP^z9czJ-t^P%UWa%;vD;h4?rMttS74))W+MD)R@8^WSX^tCF%-m3hxj1MVhk z9D(oflh7t4DN-9=BLc4j_cvgE&PWScV>b12}4bD$6&C)uXp>FJB^NC)mPHx zF$FFMrmAi51eYc!j$!~j+Gf=EY{)K02R(ugl5AXq9aR4osnHf`!M>Dnv@x(q-*1yYx%A!2{8eIJ%1dwKNkd@RZ>5tpkuFt5$f!4Suv<% zunwYp3j%z>D7g}RDi^-YVnkJW$-l&ZT)YvxM8@^gImOHtgYz+U=C8yX+irXY8sRUu zX=a%opA@O=^Evd)nws4SKaK?MjyI*5Y$i0(c@8?`dN!d>B$~*x7hqHz_VY|c(D)+R zbEnmGm3j$MQ-((pCMdnkVrO0ExkzTPDZ^0x3af|KWkQW)s+6Cnc@@>6eMrAX>5lqj z;hHX2ucI2RZf64^ino#r|2)x>o3e#;yDQ+ z{r;9QG!hk_p?TRJ&CO#~o2(&eN?4gQbVAyV@v8qj$h%_avY?VldM`SEb2$6p= zuH#TF?);KYrq~_IQT9Wf=0(~V0Uyv#g?0+Fxul&mm>t?Fft`pobh*sFV+=fLvhVm2 znmM(8jSi9_`R%BI&+GRHY`(Y{||>oe;XE+9g#zCviUF@md$A<>q-+HvtgM^ok%nhi;*zO z1hqeSWH!bkg2qu~-|vQHHb`N^B4L8k>@0THWg(AbEtU<-XjTuc%SIxSy?|_3#-KX1 z50E)1-4V%#1;sg8Y_D%1)YD7!xlo<;KDSB>_Skp}YDyo@4ILoPgHyGN+N^$N#cq6U zz96-KkkihNAfo$;>=xbT*X9cmd+}DWn_rtR3~X%i76ZD>N@k0arXm!PbKa}k3$9u*$q(rk~G;<2ht7EziKRuYjh6vP^31#waOzYL1mo+%mI zO>k9o1TNY5^GN`n=q#xZO%~pU9k!+0oOBFMC#%8u4I0|vt)(uI&hlMBFCldYEa4d& zZ{-{vM@N@+Hw}*DO#@3IH#zsenl&WfbTu)ZO9p3jt66L!(Yv` zaWOPb8D8I-vQg?~m0nIjWi~t|yEDJ#`2q3PaZx)uf2$?4i>zz*#z{*l2ay-qKnI8vU(KDmx*E-ejdQ ztJ97&lXazuj#-^{piU&3h{dun%7n|TP9lQF<;cF@)oFQ1VRe!)L1_gRJL@tvMKbBg z>a-%Oht_2djAV9`)oCSEhxP%oGNn7}TME~7X^Byd)*hTN$u5Uh87yX!jYW7R9$k~2 z5~V4jJY3DjtKd3%WkN`Y*NvfNQQ;Z-A={%K9;@194M|hN%ABEs>*zWm#Lz0n(DJD8 z46VlYXcZo-+GGt$Q^Lxeq1*~xiB~0r7+MvEs;i@zjY4KsR#-QrbJx)m4c!%i##jqi^r-qSt8Pu zu(DMm>9uYpUYjO_$eN66FN(#TU((4GyF)peA7w$(uSE;%(n4V#m$Z}+-@|Jb)|`pS>Sf1P9&O$_LeZpXlE8U5kcct zWZ&-sw>6}&z)6^(v<-`$b(#MonZjj(+m_Ws>$3htvV_P2w;ifO`vBRV(jAd3a47D; zVtXW)UnuU#A|Gy%tHoLP^^RQt1iYPbk`87WE9agFQEzPz9BaGdpid<1YNU5FLVKgd zn^gBhu`Sw%$Er5jNmZH>RwB?;nOKSUr65f24zPqqWZP?H-1IKLYnYJ841Ty)*gWCL z$~bv4WDfjL$fUY3hy-391lj`zBvyNg#nwLy-`jY^tCF%-l@DJzISqyLAa*ivkB z3#D38AN;;9+hP4Lln0VD2fq1i>^NT5Wh`YsLC-X0Hx~`Frre!u2F@*#^7-aLpqAy* z?Bn4i1CZ4#Ni@AfDtm-heD!bAwxXX>(A+KhaM-2>^EUgjaeBk{R|p>N3P>hLlA}{P zF?;=*)x+vCWFi?1Q--4Y5LOSV%ZwArY%!$+)rYdWJ(5`q#lu+S`f~tteiqiBBLD=v zKAdFau#7o%I$(Qi({QXEfrC!0(~R_VoDw#|>mMGCv#1`4+UO4`5%4!CRJZQa$3fm4 zgW?TnLs;(anrt>!M_SpVsrW}*m_fxg_{bx`+xnh{VnPZ!m3wn5u<*zuL*LOA-)QxZ zDKLB!+H!^?)i@R!854bb`ZulyL`I*6IS!a4W;ZqJ>F-b-{mC-@J(>Ong#lS0>R|J` zjR^Dc1e`&@gh*&(d)xT<7}iO*oIo?j(oFCmY162xBPUY(IA|w?u=pM3DXQvkSND`&3Y%aVibazGc=vKE8zp z&~#b>SW*b48fQQQW8(J^lIV&T^%IE~9nYg{vg?yHC6u@3vE4d>f-rw3nfamb%TDW- zv|I5rPdHUOaMw?PorwH0-Gqzgyuj?jT)o-5v6Db!KuI>BRFSP8ACz1Q`@pv4W>m&a zs!LcR_4#c0EPL&97<(paVp%bseMjIa68^CULB`+@-cCN3IvsV%?MSj2mFF>dexi@f z&LkJ0J-XFK`a(4}AlFGG9bXp_@MHpJ%#M#wVV#Vxiy;DPm(bc7s7+G@wU@H?OwF#I}PE;Fq)c?4UUvWLKa$p|({VG`{C{l-d%i*gA}h+gKM#3ox%F zW-!$5fJA<%i5@hrf(Ay%=@3d?ub(HV=kVy7?C6lDgz}cem`Z#u1tpwUlfY>xs)S2t zxyjX19IqiJ`=$vnAGMMnFojFkLLOI&!afpelD*fVIw6eZ-PZ=vx;&o1r|}pqd=USMJOKE~sLbqQKQ*yk z?qb>J?&6#06({%HZN2yt3`jqEBP-Izo5eaL2WA7G6v!v^`ltgwOFDm?{6aNH`kw)c z9nW1P5T%~pGC)uJvQKFC@9{m>4c~dG3zJA}$f&rJR{V7Bitn`q z{(`3JtxQ&Yt*))_WM0u6A$)F=r@l*v(LPk0(akaCQK;!7;b zPEd-kuqaz#De_xMtIAe-G6>K>r0{$epeZXvx&&>OoTT0yVf2KR^Ql{kM>}VelXY;NwHI988`Mp)I%W)c;0} zNcA2r(EEFlUL<<3^awO?V^5f&_$UELn!y~biSRgTGtp#}$HouSw(sJQZc`^NJ^>{l zK1sw&EaD&y&QqrGX`C>|FSX6)`$P3Bh#OtTqieFOr8Fg!2S0KgQi(68AS^vYO9L6f zvQ?{I40T1!P6yaTp3*HsUGbyV$g{pXhHoTob>SN+ndcxkWrz#q5Dn$?s81LUaE~9e zpf9j8Go07+ues=_iCm-_FA~0^{s;jg(+~bA_(1ySakl#XGpak5I_aO60D-8zj8pY$ zNTya$`-*9N6({u1HMZII&-G&US{_}K?H_4MC~x~`XeGXmg1~%@mImHGS3zA78~4u> z*2wF=JGOtMtuA~cCG!U4y#5)g{qrX36NZER^CUqfSZ@uKJD2jesWgy_cPhQpiqgAe zok^g{egX|B>N-T&?6=u;#38BW#bQ6DA(WgFhb(LVSb+KDgOm-)0j>{nkh z7g)voqB-USJ8%b8dfoxWX69A2V|*#mj3XYs?1uv5^%80@uC-b zbWL`il%|C85buXtC4Pwzl5XFU+AAow)b-y{`?XfJXBsD8g}&$Ho8%U~&SO=Ztdr7| zurhSAVeePsH;9BzXd4ygUiN0Wg>@@}`z)xP%u3iETNkAGPoh5|7h zZU07Fezd8^uvR&kC;5EG(wjA%vj*xp_8;rm@B+s^D0ECUM&vkTpE|OG*Cn9bkkQ;( z4&U45N;VQ8*r&-H5Xmr>4}oVxwT$Q4@dw04=WJ!37Hw&;kI7-i&GrPP){Z%VS$zv( zYl+dEIYz7aj1mIpa(u3w(!@qeY5vTeQ_6qj{UI|$I$<72qZ8)MDP=lAlWO(xJ^!U@ zcGk|swz+5ywI8HHdzr|oz1a#yGx17AbePA6tdViOYERJmc@4bF%ExF(0)=TYY3_0j)QJwt48GqM)Di9$Ra16)MujD7JbWORh#VUFHH$6;ZH(XoGbBn zloi{H12Lf`-3A8_4_H+V1oun`_7OgVI^VM&?g9 zUua%p)|f6&Abb>rBiDo_TSYUU;XAYo1Z^px;et%!0PtF?;1j)|cDSG}4Y*kks)wBh zb(vXXYLZZ6I-ylC^K^@XneT2a3owLKqJWSt*DCgU=@;_jAugoL18&ws>S3oLU18Rk z2AQ>@34<_47*=Ajqb_4Tl2I%(*2=WWnFFKSY<$1w2!}#U1x{L~qV-AZhX4Xz9VeMM zSjME)iIDczhT&Knii6HqtDv2sb#C#lI4}@T8OMRRDkVolNM>A_(5hoHMF_1% zp^>N!FW_myd({-&C+6x9PbiKuVMkWt8cO6pkx0Rn?9yoSSJ>f{jZ|X|YK%fvxZNtY zy(Vo_+}iH!ikBfCY_C;ddji_>wpC*tf~g%|qVr+zPe=6^1@lg)-eTnmN3D6F47IWG zvXOc}r|^0kIVdiK)hhA-0K_V)x;m?4a@SiWYyP z0{oQ<@l|8v5Z^c+;IC})Hz|#;8k1lcWw= zxmf|n9$@6NQZ=T~sGpVQX;QVR+pDP%!wfMSu*}pBj+5$hlU_6@kFLpXR-`GRJR}vZ z63<0hnR7O$VShpiHY-*&zga0E&aubzmY?t$A6aOMD?E|2157~U*EI`}Qd_0DIBTcSv@|{omc=v|u zsvTeec6Q8h%HBX~*kk4fQn^8}6O9y8l4y^Oe@I>}Wlnk{tGW48I?5! z&v(vwp6d;p_CgLCyFjBlJB*a`de@wRlA+~{h(|JL37y6Wr8l#7n>A2oLA+|q!8XkF z>bPTkyb7Tr0YrdyXMlpWdo@VpXDZQy#vZM@V`nrkM(KTxJ!cJ6Vl=Vk7^P3{OV5pu zSC<$GAUxiyAVzBx#z^#_v3INPm?yW(CF?%3W<*m0H%Zr|yP&;qfum~`I;tA`K?5_i zOmC6QR5C;FPiox2+QERE5Nlf-2cU^jwl@OIzEB%~N&-K3j}t$Hi(SgL$){_@vr(=o z-JIl_(tQP+CikpkIsJ@ggF#TdWl@a-p^=~K7bRY_FpuF}FHJhrHJDf{@gh`}W%(c& zXlZgy$9uvn0QfmR?jtU$Q_vScKiN^96_NFxT+nZffmEJs@A+p`kl0#{)4wV7X6|YBd z^l2Xh736O51g;uKkc##VlTorZvP#G0lrmpG&rAgA?3DF9 z!;Q1HylQJudp}Y`)Z5?YIAp$SpW%>Bo>}yas|`8iq#TFegF}9Vjc3|K6&}M8CQbd0 zux_f#2sCH>@+`Ix`-aS=q!Z$=-{3b^xB$D%ZsexMs#p%Ur!kXStr; zD%YZWz2~$FX6|W|S$b#x+*ZK~FYC{170rA;QtjggQ9gR;y9ke9k?LsK>tzzFWagND zW@okxVbWS5CcDo=E|@hx<#Ql&M`Ucg0cSca_ZI?FKGibco4b@>3l!_~?qtui+^g<2ZI-iKdH&6w7WuM$k_9*x)0PwW0@B);~5 zV7jjoT$-bo{}gpAhMIyn5Cg&Wy*&c067K%>VDkqguJHRpw@8 zXeoug&o+z3BepIWkLGj5KY$)SSCk=#IqC)$JLyE9g9K!dEFgaDVM`14H#B+uX7sf2AzCWW z`|l8senj95`@4kwX1V&i8`R&E)=O7EOcvAe@vK=Dw_)IHbYvFE2C-)=>)9jLvo@2F z#xrevbYPx6M$e|?JYXM>ji<6+m_9+&?(Fy8l^y3e@8eu_7QXi$Z*9pwNzI^7w?SLJ zPgUcofqC#W#4&8ehe#MBlb&H^dtJILk`6-Uv#4~5DKm3s{ngM*VoFzO+CE1{{CL~z zC!2Id{j{xh{duSnEYnZg_=0V;Hx#84!SO{@%d}!DTAx;40TA$B#z}gRWlSsEgIjNH zI~;XJc^wVWj-(uRFr{>U$#rngPE---H-J#x8O87ha8m#c?who~3&9d%=*(a;a93yK zEgA_juql4L8+8$ax1lM0N=P$gc3@Ma0`JTc|97G7GsjKi-3jm4$((8HC1me=N**P! z{U=(mC#~@N?6?H(F#MNT1jDV|b!{c&uvEpcT>alOkzKSZVX11FwRj zpqTpta0$(5Rt6vXT0QrPT=0aN`L0$jZ8(PBYRjbBwxe7Sx`fGbqsc7CItivS=?>N80!u0U4BVb*p4>1@=?^lvr>=cCvboy%iYo9vS@(v+|gI0?<-T#3)4EGVu>E40o?sF>Ra$dfs= z)1HuKV;Q#;bR=}DgrI!bFxVVNEHw?kgDP`=U7U!7p6mlw@(J4hI?Iw@8Ew*ErlR%! z`XPW2j2@h%zgR|pT?RY7wM%iVUBbh~JY2-Xg*a$`t!k84!>M{D>Jv&Z0`C6hL^LHt zU{~TlF1Bw%$=F(xjl`ph%=$b?4H`FdgRo+J+xz&;QHd1AmR1Ix|+wd zN!|h!NmD|3^h2gk+AHxj)Q|*NAGp=)P&CP}{8TYJKpanbli*%H1R*Munj0Q8Aj5%hQ^S*C80)P>K9Xq47~ZfspIjhZ0K73X zxKRM4htd?v_G#0g6@_l2=2UZ`E2286fT|A4O^DBVM8>aMt2SjdCmQsBx`J)ylL&l=hhJNT?@Y;PlH#9~LZVRjT3 zP}~{C>YZr&o_OgleixrYFzeEs4Q76k1gBl0i(b0jvNCT~sozTnqPuxao6N)~O$p@z zt9@08@1d;p`)>5|4ipn>TWRiI?7m_(7-DJn^dsn|%RT&Xs1ieNrps_tna&_#h;%4v z>GV!Hc6i$gL~PH-@L3lOunj^-Vl6ZV-V4B(^d#z$#8W1{y)*W_!BOmvIv@_4)XnnW zmv|hHOba)0{Mfe=r1AbF#;v@`>(-};p92UH{3%Y7Dl8-U9tD}++9NpD9_HciJUqn1 z-*C_=;vfiDA4df}bDymojM{`+^alSiV|;~@!T%*2iIE@Ond)%HpzXYhH)D`t69E(U zF!(xS{K{u#L;V;zBQ(E88)gh~0mVa6tUif0lS{MAONZhSz}>8^{w%FVPxI&^+i8Zm zG$jl-f|?0%JGp#;uW>y?J?Y2akmhqJvZ-%@_O`Z(e?Ox3er572FBU*)c*;Y~Ak@nWH6&$4XN3DyIVNQ8l|9FfA;c>s zAjr5F;#fkwst}J2*6<~S^;8lv^~xTL;|TGZLcHuC*dgXK^#IG${VjE0SKY+vCZyz< zONj54J&2PD@rFXY#4px8g}QI5?z;ohJ(ap|sqQx!UGwla2M=N(w_`}Kn8Rtr zdAk^A7Uzl-s3Z(~G1c=4@sAP^jCe7`1%!BCA-tSq1U!|5UV3FO2p1CKp9K(v z^;8l%>y!~DU>Xkhfml5JW3Ng49h|3A_fkM2O z87CbwHb}A9{1w#wu$eBo73*G2-H%lFD`z($o~M$Kn^*R{zXlM@@xF!VIQAzgO@iY2}wyA7I$PhIK=6w<~=LHnF>t#Ws?qQ+9XHkjfMA zD6un@F4506=jbhyi?_8EY)#ae27->)bFkBY2w{U^ZC92Z2{|*+GXKai*eAaLU~KMm z$7XIL)<1<>Tl7C3gQiHDl(ud;D)A?jm2Jk0jbioE|4*@cxpAx*hTkKqUE_$o z(ilG5iv#V7R{@ONlc+}$PszR4GWNVpbb~7ko1wH`crEz`@wknLKze2ImTx84?!HZ8 zys|L+-`1}z-UkqNneX8wslqanuWbgeEM|gI?K>X6<>4D1zQ#eXEdFJb|BX{Z3EA1Z zE2IAysKJ1u=k`^0!%%FChVWR`CVQt`ni5t*JfU5jEAddug5w7UuN_4XZvFPvml?E{r0vg$xpZBk@Es z=p)~@?b|_?*T-m+zBLuC_w5$|f}fw^Bz?;=`gRW3>8*{yu{N5A*?E|ahfzF?#6dgw zOM~#0QJf1cUgYORu`QaL$Er5j$V*egN=BYmB=Yl6R;YXp#Oiz~CbT(Y`i0|EI*6zH z^#vN9dpM7MZEc-xZW{i^Q2dsF3lWg+lm(O@fp9)!QoZ;%tQ9 zorF~ic3Ozo7OBJtU&1`LNurTR0bwNC@l=9XLva*sF^~m}mT-(_^Q0`JB`u@bX^#L> zFa1+rifxffjPWHrMj{0YbD$lJ#2Sio(iVH9fKiRWG79GMq%5PQ*$9BSX^#LNqh;6@ zsl>d#gvUsvfG{80!APv3I6rN1Z0B#kxXzrW9|A&tflxlZ*W*I%%P$zpI1lZo%ia6F*;9+?lmg8Yr9wy+Rv*~zfRAW@6eG0%OP@7O6 zezBorZ2W7KjFF|N(qmQn=5m)X5~9ADGiOenHpcG+cjzy^wuS*T-{gr5VeH5i9yxVf@ zby+$rgqN!6bes0|CCn2-a5>LJv|3iV=o1#9Gvys=5!R-9isNm4uUkSN0&*CdB3i5cJJcNjT2EvInsa zA+{)h;86Eek^s_!=q1FK1rVH#e2Bm?4`N+HY^4z1y)MSqhhV(CvInsqA+|07!FUxz ztWSt-3LqFCPbCRhc`P;{#I^+xjE@gNre4{D*pLw0Da4yDFJwiL8&wQcvF=9H-M*PF z-7D7Jn7TVO)1_aig{LhMuk!8O5CNl4Kvdk~uwVrPZ$ zrWnF{DhZi-We;KtLhPatgWM{el!w@o5W6abce|6Yp4Eg*y|Tw*D?;q15Z>+1@(|ks zLgqnt&ybWna|!n|ZU>nzX!ic#b~%0WX{0|Ur@uX2pb75ny4==o2UO#itYp28WDSDAE(~nvh+*>{n!V}Xk{)-&r*U+zq$3Y^lYV)sXa$=GqvZUHld3E2ro+yLAB}O z^E@f4TD!bNDuC6`!3@nYIyAPX2BPGHHo zOFSvdsE>^RxRmw?;4wOaZIMb`?n`)#L<$I3pdF0F8j4ra7JHN`Ru0uN*i8U0jr!9_nH>tSGK-Zbmyvx!*g!0~HsfOB@ zzafOaH`bUY4#bk!}4Z z->m>b9214ePM;vaxcybcnH#Rw*!4L@f zyK_icj?eiV@5u>gIr7TfalAJtoaM+zX&lGyrQ$SB{%SS6%}U z@Lm-U@CVCq{U(|k?l4QM6Q zLRrrYL+1$dQIL5&YYiZ@)z5?&3B3s&anMw>KCa#Y5b)l{N&1RqICvrK^wuuGv35QW z=kahZ59i>Z{=RFJ-@_?kebeqrr&8GaCsha!Kc%74^9f3sI=oZzf2@n71xo*dQuw8z zPa$ExG-ST+XO8l7!hG3>dBKPMit)suF>k$dW_)7-i5>!fv%r@r>YDX&ZwMvv@AP|v20DdN!6W;P@8y9~`bjg;s z(Pgq_5TpvTWiT3$ErJJALr@ghq4)#kVdm6nPQ!7k{(*kllsSK#0X5$WaZR1_ZvDch zF^!w%&ozO-NMm_6oG?{fL)(ag{e1$^0#`>Ir3eqrrahnVS z{G9Bx?#aQsgXWqwI(P}p1*3Yta-o=;q3CzQnTJxr*C^B1G?~se$0jo(VmU8xrVNe5 zJc{$v7xn{V&Agi5yd}t=PWm!0PUOJOM6hgU@avjphH>vQS|GG;U!|9^o_P;r%huD4 zgtNY2Xx+T^Cld}sNN2o3BXl}jDAcvD)AN}(Os$Ls6L4CPJpf+HnC}j@I@$||rp?=# z(t(L?T_lt-b3z8%%mpoVrFln}B(lss?rUjdL%XSWGC7Zpzh>TNcmyG~B5zj0};e<#*ep*vK_S_kyZ zeyrn(brFH}@gbPC&hHOe>utx-cU4#{RLEH$MENF>2SE{m^=b%atY>p2bGb2rS3{QA zU?HYhix*?b135+^G782Y6I1C|5Q(6S`((1lM6!CweX^xcUA-RBEP8|3Ah}X#G7!`6 zjrS*+t_C7$HzWKzToY>al8j_>Z)XH#om-kr`<>jEq15*qfTD|p?%$eWr9tjc z(;aRp$0M6=a#_*16YN4BqWS1S9>ZOTH0jc)%%upHF2s4Q2-?OoRnr#b=(5 zSOtO1*fc#M%M8D`l4(o3qdV?!gLBo!5bg?VwNS>cq<*BmC^&knhkEHMEqmn5h$tJ4 zv`Z`T5W0auJ~1?8*tCS7CbP@RK^^ACU!?ZdfW0Z5kwg*Z*JN>6UB+J|BWub~RIf!= z{>58&Jk-T~Z8TONK|Z=m7P+L60g!Ggxbt6!Fn-=}NIX%2&?&g~IbyDKSI2&D9~*Z% zBfV6$mx}QSSG_K(F(+ON>)xFBIEro2qdeLsHz!I{Liv8?#B?63#E%h4=EU_#gL5MD zRxaFlFkiZ72xMqkbT878T;DpdmkofLvL zx!pV&vSz)onc{JEx0^SF(3BB%>6=L6I%PN_vJtC0>m%8*QQEy5)4ZQBeVJRRm`fk3 zm>WAAa4Pjy^o&-JW@*=QDs2=TOi&k&bB#fFNMoWsZc3UKW@cl)Zz^6z;uVTNVsTh~ zxHu`P-Hc^+FyN`HQ7-E@%Y~)E9i4b~r!xgQ`H}JzGdp^M$8e-blcrrWqG>oQ@smW7 zkunwbs!yZnLMW*-kmTE(ZfaDsgH3ManwMhU#Ga?2X>)c>#eZinn1$38FDvb^q}F8p z66Y47QEzOX0W19&4f3R<(Je!x-qy!_0f{{l8~8f>MP7$T)vEPxw{>i{@srcTE3hBH|u zewIiw^mc^3>hmbNp)lZ~w-X~?Zs^ev1`tz=OR#*T+CbHPo2fmMh&zYI8V|XCjiss$ zjO`K{YdqBYHI}M2Ft#guf??F9$(wxKlDHd$Fl;0fBI!jLHoLRBvp$Cmn{+JfLH_@D z$HHFXRb;%9DFF-P-mDx}pG{nqWe%15pfW#dUSgIEgxhTp}{iEtUW0b(SZj2bt22?_$BOT@?9L33!nd^ z;YUyp37tyEwp+?{h#m@A%+eC;Na7;1^kJ;-jHK6qcsPs0>T^ja%IIm9-?=URywuBR z6z`7k25}LUuIYo#{P=rYQsd2hYD|ixX`rd_mP>^rV6XZPif*6{czZF85bqM=3>>^I zHDNK3xjk^`<%bru+&+FfO}tmqMENoAn>dmt{!!9I`N_yP@f(;ZH|!D;fvVgcq~H2C z!)*U{!8s~~ZIbv$)64$$Ff$-DWq4iEEs|83(uv`446BFL=ab=(Pwrs4&kcw9OAZHI zEQqKKhht$gKOFvrD6~cI^BC?Mq-mhT;h#hjd&j|Eqb|y3x6A0#<0Z4HcIu@EggnKR z-E03YWZR_Ye-GJyd;WL`q30#Ckwis${sdMJt1loupLWiPg#0&R*T@-n$Mqyg1{;nA z35KjX8BO^f{!n`OKSez(O#|)W4~PV7r;v#53l${0rAz2hiCcelVHXK9mimPxIO^4D zg8om(=`gbY$c$VXxr zE2TIMfV0>*EHVjVCJ0$I(R4POhDNe8Me!UKht%aGuIPU9mro7PMRot5#hnMKROv3){TC(64RAB|8y@PmGC?NI@?m==EaC zy{=fEmqX+(Mw>j%dkO#G6QZW2^`{Q601$vL!%32eWemk94)3j1;AL$b4_!QryP9~`ZB6DLx%Yk?-od@XoP!`X^Fj*ma-PyeEdh6xo$G{NE;8%rp;d{wJdZCeiy?$ zbCK22sqHT6{pE0z2iG$XlmMvW=ZTn-cT*;lD;}23m3ttQ&^|KM3mdfWMT=yL#Bmlf z<*xt&-u*a9rm&1m`5}z<*6KLcdU%L=SQ!URod+OS5Eb(xHwrQ%;4LEAvnq-P{XuGF z0;8g7XUQj>X`KEB6`4Rx09GLu2tR~sJVq+eDE=MAgd{me zSVlffh0)&H6dW}LzC}Zo6$uX@B;9b;Rc&n}C0|Em>ZeZC`r)J0BKVQ53(@9wfc zqLWSP_Sa9~`G4xKFl%Dl&KMG1dFHDlVqNoyC z{}S4Vk7|7ph-Y%CPty(GH@LZy0~sujSz3^#j;xGBFID8~Y0(_gt~PO-A#qrNP6lZ# zU7!giYjQ74IY|`umwWG77Zo|gaJP(}b%(@tB8OeT}mp76_ zz6yDK2U)T!lGKs0_=DzzIXK5;MrdDK8=j}PBo>Eue$x3FgBbmU$1snjNnK1Qou5)x zQaPeqKS#05w4*eZpc7OAt$3QlT9Q}?qG-m3708Yac?>zzVcD?|D#=)wfb=)_eY1U? zP5$PpE`gUK%Y*2#RbV#{AFe?fWrhhx9ece-Pcw9nO!MpfaS6SJy7SRIHK|Od@k{ha znfIwJokO~0h*@*Y&<&ByB%tHbp9Gd6lFxlyJl*xd1bX)?_5rsGW*2aurywh&OkGM6 z87DX2-SCx-f_C+?(2agg_=KqNmEr1Z!^>_e@gc02G+K@({5bLcET%TA{Z=0A3t26|Fn8 zHGts9R^kW#U>OdbE)JdMIkXKLqO)mUdTU!06Sixo%#D0Ezx2p=g$~NJjX|6FS|L`v za~;NZAqMZ>V@~m5y*_n!Ew_hW{S3l@@D3>8`!s@z;*KGv;Uzs}K9YWtU7;pSSIC=N zT%9aIDdPqBwHqMs6e1h1I7G}_{2;S4$+Smjl3N2j%FjQpM0GaY|UPeVO)GLLD%!#24caLhl7(Ne^?g z@M%UCQab_3n(VE zPD7-q7kj}jlIjp~tC(9VEAe&22h_oUs$auGBvo}W97zqDe~IQP?TG~v@4Dmbt?sYT z$f}uU*1lX&wDAx$R0M z0^RW+tY?Q6d8UnrQ#V5)ySK8iF6y$knt<(;d69`_*cIPkjrA27)5arcET2mnM;%Vn zLNPm>tT7!<({t3bo4Js>3%u9E$ciHYBV$jxd=@?xI2u5}I|?Tmdn{w@-Gs>W)^5bH z_D39a?9DLJ$KaH(UWZpY?@5kT;#<&Y0FQ-ixSp%3nfBtu2_FYxFQ5O!2C(}rsdjen+ z!Xky^TX8mCpGa$erZw9}uZFvC*q=nLywQXj5Y(JHITW)wWyLh7PVqR%P!i52VKjuN zLI%+ghKR;#D9QwDc3IDHG19o8SMKU|>`WhJ!A>U_S6zeN`pkbefWYQVoFw~LM)uu_ zF!a{$z_E5a54Yie=+V|0d?g@r94?JKh6su1zhGztD!?*7x4gt%acZC~88_9srSj-Xkia#2~ zr!h>9T@7Oidl10s0}j`)mJ}#v-eNK~ejH^6|61}3?p_rKUp1~HoS*R~tDFVL=K4_3 z4h^NEedp%3LGpEU)Vbn*G*q8QMZ((b6d}XV1?#T@QGW?y_&$Xk% zhSdK_GEo}Tr%;X7r_JdZoK)NO!Pxi%7lmgjp#IUK9W@#Nmod*lP~zh`3p>xF8sr5K z#TP<*i-KKu{GpB5i)b#_t*Y?~HR!&u9|Sbr1-#0Z*U(aZ0ta={4N!CCaoHM|cWFMp zMujJv%f=s}o$-6!q4SdX4$N?EeQzQ~`U8;c(RiACk-KS;0>7aSH5*)g^LM&Cp3Mi@ zn}Ac_B^N6_|D_9l-J;#`$E=H_1Qgu_wp$Eb42cTiF75IGs7f%ZQ-Xx)87{}rcewoa&`X^ZhQTh~Z=+$5jQjLFQ%rQ3= zRmL)YFGn*Yn3u-KpV6qyivOnB?7Wm%sQ#y>&n@@=07TNk8?BKxen1PQrlt=eiP0_O z&`%#x@l}{eW9o;_IEi03$1O?j63n|jK8BJ;SSFCM@fXh7{}S;{A`({bW$L$X{zp~o zd;FDC`UKU{J1m0Jr$nGLV%!jP3vs%(UYq z?z4<7$+xi7Tl)q_-I5G3g2T+I)0~Ez(+G1Kg;RCtv6x%3qo4gWL{grB+*+9Vl=XdF z3EaJv*@!S~U!^qM5g!{!G?rY7d8YLKi?SArYJ%{v41H&c)AU%$0p6 zqaE7eGZ}LN0nzP16M@W!ob^#C;&mB3x+Z(uPMQ+RlMsEwxe|}0tn}AhWIY>-1u<_g zh`Fwzb5oBLt8F-_1-A~E8&B@_^V#}@_P}GQY5cGc2kv6#0U#1pyoiLKc@Tqkc0jkA z&DlFB((}1UP3$8?7mnjpjJI?Q0xtf#t9x?K-1w7;IiFRqTeI(ggdc;mjSCQb2nuO1 zp|T)qqtO&e*akxhyA|h3JciX0xP_=Y2a3V+osvkh*`kqK7>WrM0VsAWJ@XRPubZno zo`-djw1Cqhv=%HuN5B_&>y{wno9IDf(ZCFzHJOi)Xc|kf!6-Q22dxM)K_^*?X(!d^ z7fOoK1r&+IIKs_^HWNkLpOw)5*mwczi%K_DBzXCeZl15r#*WDCZXAs#wCx(PIW}I1 z&~Qz@_**JYs!>(;5)mJE5Ed}^`(55QwwbLzfEM=L3ra-9FTeZd7#lC_d|kYWuSFv) z>uY2TEh2^l)HgKe*mzNAXo)6<CKp4gn zAT%wFCLKi@<979=5_i!m#Fi;*EmDmM(4ZrI`8ieL<)#Mn6PYQ~22)>2cwIaggULQc zx-5Ax!xTe52wx5jxFIVe0eqKdvAr&nMI>_rDpx?I!mH0+@i^<^ii9o`&`32_qDFQK z)FsBb9!ntia2Ov-8S0$C_)f{{UNGl(_$)GzmKvSfPl9uPBI;_jAeB(aO)o1=3>MU;ij1riKpNua$)rfZ)+X2zK$bq!Wn>-HMoZG3 zQ)JMyl-kC}OHo9;>?O_*P;_8L)4uOt`r)ArF?qH(T@Mh!bpe?%Z!{>~srT~N3uO#N zkkr4C?^75h42vR``s7k~KXjJDa)~i4=BY!Y&RQf-RQ;a^T~O?%@pyHt&&jI4N^c zlaX@E;U>h4d`$UbvDt!Q&Xdpn3NX`Gl{m`|b5md@#AITUuZ<9X+pw)|wyt=2R546H zqU}O|toLlk_;>}&VM+mq715UOebty6axnM0%m)|! zaq#XUj*nNe95yG1JKZ*w_YgH~nXyfWJ!7DVn|c}zlQumoTg)v0!fvx$SChcf7^&GU ztw`TBxJxvV%NG^QQ{MWAu3w|5xl%4&>Z=~9`sFvB^RJ1<(?*Jg+ZI6@8i!5XI??KpmYcY;G`|pT`>JL#7 zj&lm7m!Uc%??mxc(3DWe4w%t+I>kIsvJ0D6EseG-#ZPn@C69w;?Z&GCjGpX9(O?j+ zjy8V))F~UO#_rJYS@y|nlaL+Q$}7vq4wc;NiYHntdz7}K8hg@;#UxnQ$aoD4wpRhz znrO>YR*iiK#^~C>c6P;US+IQzz}7AVQ;q$hAtS}?fFw8wIb6f+gAr`QPq0^adB zNs6(I6k8vpdTZ<9SX&nd&9f7Y^hr1+Y=npLCO8w~WK>FOn(JRl1L~&f*R!b=Jq4oD zXU3@wSRF}Yq-dwogsO86NY`Tb!1QUMOuD8+#(d;>I%J}aX+YdN1I6kj6oWmFgjnW3 zwP~g}9TI0!Z*sAoxeP4UJBt*lXLAAX!TFIRb2dS_m1`WaDHKL<&w*$zV%m5v8gWBn zGs;E+@0-M1X{S1q=M~@p{(OV5xgey{7oggQ!aKCKa8MVaG1%;rp*$oc`|oui>hJb7 zLhQ}VZhtFcg2g2Tx9s&I3^wKaKpkx6a50*$zI-jcFW>iCsp!rO+8 zyKNf_e^n8@HeN08k-)?IYY58^NE^d$Yhn2s?p!u#<8_4Xh)iEfP5}IRR<=hQ5+Gsz zbL7gfh&HmIf3To-F_S?F%^Rr6`>&>=^_k`-00HktoMb4njG1OC%5ui=IM6<{EX#%r#~*+y(87(`^uzxSNXBLx;gu?NA;L;o;Xj{0awk?FFOyB2LvKP@fxrRHHWqUIpXtRbSMOzpQ9Nw?HzOL(TYmjq2I)moO@}i`-aD)KfG# zugnl6PdfyU#h)g~uLCz>WMv5cmi2J^4Zqeo=np}4+8b7Q1W-S^iWKNg-)m3S=8!}a z_TGXRhTw5DAEo5prgmls7MM+k;5!h{cNXB^75GTtQGAa@4nbqS^^E-|fPnWtPLi=K zBV#{9#-0FIYRB{Ndmes=gC;8%Hfa4Dr|L;TD zFZ{y{c=AL+20ZC>tZJ~IlR<5WEt_2HaC z%6&3j7ECH%Kr5k^KdD@bGC6#S#!Q}`&4x&uzoNx+P~{~Ci4`Qq*S@GtjI3xvzreI` zQu&7J*-6Fa1OITVyYUk>&L@)@WN9LIdw%Mu%emAs ztGWWs^nLbZ?UW+1guS*oWlFi6=A)F{AXI0klmfGG$*$^yA)fClz_$y0B=9J9u*fOJ zm~VYb83rKW4aG^)lx3vpOr+^GaHV!N4_EPUB@UXaoknXoPSxvB?_~}Z3NmMeFKRO< zE1J+=qs$pe^(L8PrWEo7f=nr-n@%YtX%pv<_>(S=@)`Mgp$>U{?N2G!Qonv9kC9@{ z4lHj<5s^qlU}!WNrLUxV7N(SL00FOplk^qK=&J-&dTY1fsNFN(2rhO(iPutQ6~^J zxB>fDw4rz0(;0VCHWH1x(2kVTve2GlUh`lUKM@7l<=DW#`Sk$=y!CLB$g_;d zzX(dbwHI)#J+!KX~*P9bNmZG|@|U_=b{Yp~vdgz%Q&dPuH~8fjxuHx+}-1^@!ydN@fNvy3+W92RzWe1>Dkr#yVZ!^b>) z#KVU?e89thaL~rz5VGYjK?o^>II(4iweV5s}pY+20 z9s426jmh~fIcWd}vye6bv=mYq|Im?a6R^UYP3>tj3jRPr>LDCQ#^@VyYRVSm`;mMO zIEL#U!jR)9au5z0GaOry<7aX>BNcobRQQiZZHq#}Urt2l4$u4LN;}2TDyWkwj%@(% zDEqGD~><~_DhQ!2|50LVf;5ma+1nc(zEWbytw ztfZwOGfcvfTg@FLx|8>0pjAo^`V{J!=nAJ!Q$44}^_)&UlboJ2rimU|35Lvt+I|b4 zj9BucS3?pzq|S^Rc@~X4%o+Kw|9c~)M+~lJ>e+Eq|4ma5ccz{*?M#(Lr+qfSw+p4u z$ZXSloXO_-$5r#<+_)F#(TgLT7w1nCFEq<9i0iqKdX98@E}Eu#E{^ND1OvTT zC|!uQ2FLpP>sjx8b|ZGoFw6@{pAq64@?^->(AbOQjWoQ;hcn)MAjptD?r{qUt7Kz5pdC`!nY&8DrqVWPyB^oc{kN@LnWYpD_Obu0+J1@fp zL{Y+E#6gMTDViGwHhA67zp#^wfx++<>aK^#2S-BW~ij5tk%xpM&h<_62#G ze36rRnUgqI&@#b_SzR)dODlEBOv^tTyJU9ZpT#a2TKQ+GOU4KOIiO3jm47yMN!xG* zO^rt9?ysnivwi4hnpjNzGU#jCIG}R8G@~q2q)om7+24Tt5e2^rDT7m3egf5;K{+f9 zzNQ*?>x4En;Ep}+r&WyL&cmbd$k#WA@t%{PuCr^y^rCch%|+zsa;??l=$gw${79)- z7}9=NC8m!E=5=1B?u?8SXXX=Uw94HXkt(0-{?5q!$$f#>R9mT zb>Xi-!>^r*MMiWXB_-HKT#%If4NR4}ogu%YV9sQrMx!mrdegz<|7fF$g{ekczFXs;pAo1x;U9sZ(GRnqK@eVlkRt zn#@Qbr0ENPi8Xx#3g#>qq-ylqZPUu_JA3&<1+gAoUjDbm75;wG6g1WZ0thN583b}_A%DWfI0%S&+oH#0>nOl8Un z&MQp^mnkcWGb@TSTIDiDszamzWV6)(lX_R0YnBImMSqWFYYMd38ApyiY zBX%PJq~VN&LlR&%F!=pXBMHd{5)xbG zH@rxdZh(k3ylm(Z7XxB>V-%-u!^`4?*`&WP+8X*aF0rXbx2(kaaJ0W8px#ZXms{x2 zR+1?#<@b4S#chO%3G!Kn-ybSXD?8;T+E1J<2QU?4WvL~&zz1r1R3h{omAtv`d8mE# zRM~>OW-}iBvz*2_6wji znC)7Onq^$SU>egftM&^fX2)s(Kzc}Ijf6?kV|9?@F+_S?$`~R&*65c?ji6DOHB%ZI z+JnoShPC>oAsJ$$U~8xJG`0tqJ3Zt3r6<`2M!_Zk4C#Iev5lm5Jl*l(fh$-e>AntF zYp45mg0c;dKHZ!1(_L8OP1QUi*w(9Bw_h#}jM9C*egQN|o;F13zJ9-82Bcv&=ogI5 zjF>eW_6w$%wq~P#!PxwXS+jA!U>efaY|=lNsEsxS0EPm|IwL70L&0Vs$MXwA!IjJ} z3Vz$n;GDLqZ?!Sznh z&i&Gp>?20Ob^#a`^D-bCJ7CKy1sT07O~`DayMb27(7hY#!M2B*Gj&Vtf5fzLeSlfw zMz3m5RAQFc9t2&b3XgpmsIn6o%?>;YkJQOW{)|+G6a*&e_%(nX$tW)DMWtMl%3?Ie z)hI6n^m>J~cWwDXYL{F_RcZ}CG1|?%50G)`EIt`AcziR0y)VfFD>u;t6UApgko_~- z{ZXh9tldO*7ar5WlB!g&b|s?(>j2Nwdba90Dy!0%0gSEUniq(3we-Gg(a_&J+ zva=KM8&UG{{qyB#ppFIua?#$w^EW&8rYf^1kExp-#Ny>)BQ6imA39pBkh1Jjz$K=L zrf+xX9e|R*(ryd(BD&=5F|Z*dFd@C6M7395&S4FKgfJ6 zun}x=#fVA?_HiT^jfB)l$iaI8h=h0FWRh2uKt7SYeBII#`v1D+sQ?1r$vBDMEF<=J z!E?OmietweJlxJh$irjhWWJZoLgA_(6Yv>WvK4tz*c!6T0}oE`EvEzNn^k4)s`}TK(qhQpJbLq!@AXR@K zkD*ex6i_k|@A0|!7SpaErZqU@uHa?V)VqA=G2FC>9(2A&YZ34BX=myMtn|x!)-#p3 z01`;0`vJggaJRJ|CZ2haM_=V`YfDu~ey~$yU|aAI86`6>qydkhXkF)T?nbb_g6(N5 zY%=)@`vzu?#859`zbNY^(%&2O75vDc)zKgut$oF;zQQ_-uw6u}AFXD!Rzy}?K`#+m z?c7m`$m*0tWVLfgB_gX+5|P!`9aw!at$r+Hb+dI>D){4k#=Z;ontk#OiYXAA-OJOxaemRYQ3dYyh zaV6)pulNLP%46Nk)&W=)p4ttT8Uy3|I(~idWM4Eb*={M-jZz>$ITl?W@06 zQ%9Xsl9QFG#M$2OX{GZGI*lB<1_p??*V2;sN2dIEj)};3h2&=#ottgJbL17Xo=I<EM z0y!Iu&xPw#9@D{)s%$VmBd-MGWgt$q*TGlBOTa`i^$%wg!ON+~uY6`;a(??E0h3ej zV9-fkN&6Q4-h@r1iFn>^L@Bsm1-EaYXyAAaWHgXO*GSx?fnF!MXrzH4{054#ZvQSF z0r^dGvD;fh|1Z_w0TA%s#z~ruWhBCXp{Kj!TO2#S;o)l>wA;T6mh$%?grwH$_V1DN zM{<%qr`yNLIodpsY3-*^5`PzdQk)cFg?Xm);zO1Sw0s$-r1cN7ce zR~}uJ@BC5~lAoQQK1t{Qjl2@L&!~>J^4^Z`{PL^u39@u<`(yIBb7Qv~FvKdBQy=gA z=>5|9-Cdv0p;aP8jm#~3v+E0xkz3-45gR49z9hL=X+{~18Q`w1s$ zHkOeH0}=P`jwT#C2Jlegp@@Ty0Kb5*JQ#$K)SMB3*%+JMYjEZC`d^7YT^c>s>-}W^ zJ2{7dv)seaIq@o_(8C`PkcN=EX!HUDfc#C1(QEm4`u5ZxKnjUu=U@Wi=lW1)eEy`G zUhYyglh>$3!_1Hv3X;e4HWyJ9I;&_Ven(+;%1Q&2P>BW@1cJ>am^-#IlVA_y(N+0j zNvcBfb69c?wgoeiR}cr#lE0uBGNSZOxnqmj_#5cdTe5c^;Cd6Sjp7o&Q5`ZZ1d#BM z$^zdpmQbo6fnxjZKbA*rxXZ|IFcg&5KT z`qW&DmH`Aq<`(_loiV>hmvuT_b2UX0Q2Q^a@rvN~(YDt`=!B~cQ@4~!!0j&+z z339m|gpkyjc@MY8>rc48@Sf+C@ox@{NyT ztJ2bZwgfpEbmP*irKKabkOoYQc7m)}+5|IgD&Bi!jy;*|Cbd04c8{;KC;yOSqccPex zQZ${!qqHu0D`{Q{g#VdIUG1z#r-+Nt1*5&X^$D>QAzYpR5Juww72SZMeQrt*B%54H zA(cS4kQ)=)yrK=$iej^STz^DnH2R@vqqL$}dNH2;L){ptxW~I9gKMG?Z<1CPHBcg| zkqz-S-ZU*8v4zf5ZKusdzY+Zy;WkIncZ_Hqu?4xBDw3T>@=m@Mw}#h(xj40c6BV95v#C#A-*9OGaXaK<~t2(a4yB;?6AcLU<&7o{F2_{{Rs1_P|LZ z$1>Vt3}Eqdg*bMs#6vd@I%n+(mhw0d?1&E!xkTHG)KwEy)X$XsaqbeYKo`XmnBs)V zg%Kh@;fTVX<<%%BSI!f$6=1@|!uLbR5p-{W;n4lqC5nL9j}YsF8q)n*lk)-KOfU_TZ$jIjh42&WfoU%LqY5dmgVJ1f zj!tnMLfh{0`*mK#2Q@>Q%7p=z-S}mI&WliF^m@Q5p|*?XRY*2kIg#4f#B3P+$Cl5F zo!lfRr@vn(a$0#fD%UPlHWlK=a+JR%iH<;Jc{32@hYs$N9~F?_zet(52y58RN2&mm zAX>aEwFNK)aWWXpB~%0MqsXnTF*iM;)5LfBxSFTqRDRgyyB)Is)($ zNoB;6*0M$Llgn2)Z71buyE0dsN}LP{AM^-2{nHT1fanAGQ_{k=W$F_?HD8!p!{}8H zp5<^~z4Pp}9M96<6Sr|xiPO{g(OtI~{?!iujJokv;!NVl`+ckIMoRyJL^^WzLy>3Y z3+ocPp*6UMhUMTZOJnaWrQTWaOS!!%8s=D#glFdj>Dt`%5>QB-LkSL}^@ZhJhK1}% z05%df)L+Lq0O`CO-Ph;pR*CadV7M;1fnYU)iXFDX0(}?MtxqK`%<8+*8GjMMbVe-7 zd|$bVbw)WZP6;;*32t`6m(*>ENEiWz2bWTAM}X89`^#tn*%9~P7N`629No8~E<1dw z#1)j-scx-TQY+c1^){#VsvNChu2z+}ni8D7>+|&*Y9+hNGYmAhJKfjj=)NOYw@O?` zFzx2i5XylpxQnQX%4qWHypxqiSkPS8=P15ASFy-J;sz>aR$+zJc@M#4I=V4!kKJY! z?^lgO*t_iS%J5<`URRR31~SO=G{1@FCgAGGIV#~(G_npz(4+lbNqQ86w%|V64QFo7 zaX){6SBYC7fh(PR31A}k!+iH?xnBz0UXLr3C{;K7erNa{bsMe{cZ%Ug42S1;qv)3w z_ppwea_++)<^kWR_oJwbi{L@0`T-Eri;IU)m+hS@@gODgmk~XMVgawpJ?yX_%E5jl z7h5GBro`G{siL5W9fVkz!?#Dk8Ise@^~F+-NNez@Gv(2`O;L%*Ac2dNwE!S_Z0|b# zgLr0l9$l5c>m*en`C*cp))wqRUg=bi(}uAqDwAY~>{3j>9Ma1WgwDzsJW(Am{fwtR zz$dE%rXL#A2l!NV!1R*?1|#tr(bJH{tCyhNDz`pjNT$wxqfCmig{Ij~QnF581t;uXTWK{t5H8~rNDvCAav zr+UU$zQ)S<3=wU8_Ky=^2M@y-znFsGZ-6|$*$5VjZxSiibMPqkS?9`Is7goZxm;IN z;%!P~2Lr`#51x0>@8m$gkPEF6?^1$Ml5V0mINk#_+b#E}7PBvp>24`i+T(Ie#Si#U z41sx{3iJDCI$7(;{)$**1YCAb{s-`wYn~QUqgMX_Bl)r^V>}&KB2^_5SLWccKZy}RC2#U6*4k@ z&dRJ&0x$zC<6!p%cyf~aOOTP=f(5Rxh!pR!_KHfQiN*P=UhCK3MJi2jrrPV|%E7ER z2lD8v+^%M+3ds+fa_prR{9+MBVahjvFRzY*N{r;qr$up)-7MwheQl@Md@{t_->{MU-S$&A`7M^jj=p?jzw=TNcZ^#0qXytJmx>*y*h@xl$ z31}U@!?>lWnAWQ2D z@!ODEIkXqxa80YUJ@^mdB%ssL{C}dTmAd|%9u)}048(MDqPQjaz}Yg4qO8hsLV7|0 z_fy+zRmxUGL}9E^%o%}cj-dh#K#qK)8q^*f>ui}xZK2}E8HrgD7^572p(At@bNlkY}tgw#tR1an0kqE7Meh1 z_JOS3CHA57;BT}fl}G7!8CM~%QHfazm$kxc@VCro10!-<8XZkKJ2frt2j^yfnr<_O zK%N~W?(t^P?f2na_Kws6zoFC!kFhySdm&1^d;XDgZjK!1K1LnbQg?V&Vopj>O^#{& znjB}$zk|mQb#tL0LtQKWFrQGdB=~R?!P|zDAMrkQW{m(b9rOGVPbJz36I;R-T7%CV z*xaaM7R48*Mk~vds}fE7P@*OH+yTv#W7QX^%LYp&3?)tji;sV@Efbof1w-upv1WhW zIUli3B^Ch@=>%qUSE7`lM|Uxj^oSp~NNlT(Oozfg<|%(^(9^!b4$L8ZZF)T_UvAIY z`KUq6L0|fQC}Z&b(2(Wgwc$&3$p!L_ku2AC`4ZZgLJNYI4V)Nz zwQ?bbEwP=eiZL+5y@0fET6gY~tVPJRvW-TSkW1F#V(MEOs=Oo?TODm2YB)!KLk?s4 zR&}(mgeEm`a#5<&Ud$}A`&JU9sIjePnP4kl3yz=xXYoGa*eO~NAiD%)}CW(@K=^u6*Zz=_4!*U|}W| zw6c?~YjnS(gbYL#k`<4Ujm#w!R_@<>-lZ4;zC>XoFe4*S-5ptkBeC(l3fPHHL#P&K z^^eZ#rSq)T$}Uu5x%~rqO=QV3w1jVQSxaW_#S*TZZ5PXp-%rkxW%Df2%28s85lay3 z=<@@E=pK{yaJGAciCMN`Rwy= zbTt{tu||1E(+cfXzt9S4<8G4U%4}CrPTj$`Qku>UZKz9lb`-f=P@_G6cjkvKm z8N4`Ym4_3!>s2^b^KuhNz^Y9tcrNtPX*t-7+I*~8)Ayn&bS+W-YgCiZSksN z(y(eUo5x|I9Y0lInybNV5r>Jk-&KJrRD;=yFsb!7Lxt?WuQj{&LKwDz1l~%QD5JP7 z0s6ajVmk=?rR??u9^i|zuVV|CvNYB_l1kFjW0v1`g|17OL{c2T+~_e~a)mF&(W|XE zrb|}AQe12F%451N^~@`dAGb!AJUEfswO3nf&n~&S%nwOZz1f_+DC|hDdhG=}(c)5N zV+xr~c$Bx3cP5z|tmMLFDmGZ{1|S%-D^4=bvWz=h1Cii((+J0o0X&p=DDu$ALjw-F z-)eVAlm~&}w*XC&?>g-PdPre(9>${3);R}C2^v1ZH#=!YYGB7d2$sr~A13Px-DK?o)k1%`4zbgEFegzY9DC6T zt<5einuiB}CogpEO-=@E@}y^m%P8PK4`V+tQkjdKM)~)tjf_Q0i$mVGI`S}?jw-E! zto-|fKOMv2;DB?uB&;`v7E^47cLx%ajhqNZa(lLI_Jh)XZMx1@P4lVSwGb`dvoKhN11MO{stKICJUlrKoVz?cr6zFZh9K8Xr>22(FZfRSRKd8DuIZ)UyEuyt8nU(TQbDsP7!o-7ykP+%Z27^YLJKn3sonaM0=W-&Xz{oXQJ; zZl@A{`Yj|Im&a%V`_j$1Wa3oq?xfDg-cK!@gV3JO3=gReQ=JSg)XH2#4Q};NeN>_y zz9fpl#gEw8d9?%8bn855lrULB|6ggl(7Jg6P7)@T5vErWrUju(qj8aCyBMeP!l0-3 z6qA?HfU&r2(4KV(+3z{TUTt2>y~jyDrp%?_2?>el*jxS!p+FxmLyh=o3H|r+N&o@x z3Y^48mf_J!gMU^gy>=(oAfTaL8 z5P*>o*ouR_F;1-on;KY+0^CFZMpa<^0sw}}U6yL7ZUtGA#uECU zG`9l?u?}&Pq+uCJ^8q@>vhbl}86LWLSQ-aSnLDi1oj8@313hZ#kZf#iKWf}XCMKa> z6?bsZAhhrPA$3G0D)S{lcS8fBP^gSTEe*aKs1g86=zjq2v##8WlLUZe1mGhCV0q|L zkMFl^58zZD4SLLDvL!rzkW5LB?PMk+Vg8>2Y8~xd+4=YoaAMtL1(JGl7|7_F0*m6~j>~1GSO)SFS`v7G8CCtb(I9%L|tAMSFS)r}Tywaz~?&e{*g5)?jtU2wGl-R4mNnNH$veO8tZ`P&pEpn{}4{95yv)
    (kO_^yQq;2vxNR<*na>7 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℘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 z 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 ZNKha_fdmB-6i84YL4gDX{=ZIv{{u^i-s1oO literal 0 HcmV?d00001 diff --git a/StgSharp.C/x64/Release/vector.obj b/StgSharp.C/x64/Release/vector.obj new file mode 100644 index 0000000000000000000000000000000000000000..6f552dafbafed61acdd7ad9033bd7377d76c232b GIT binary patch literal 144958 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�+#L7*+}rsFa<{v4b9cB8=HAIal)KaQb9cE9=ibfF%iZnH z&)wrL$i0_en7h|~BzK?tXzqS@QEmp#_6OX@b93D%au2#s<{omN%K7foxrg0na`W70 zbMxKjatqw&a|_)Ua*wz#<{oul$}MtV&OPS7l6%~JHTQ(OIQOLcTJ9IOFp}oeBA24z7L9)%k0jYx37R*XFNt zuFFqyCgrbpuFp?)Cg*Q(Zot`pV}6Q*Yomj!qcbf(-I<=h*|{lyi!&pCt8;VyHV0Qr z=hplz=eGQ8XJ&qmGb?|)Gdq8WgX^brd;Tuxj{MyYuB6UgIP34u-{;(uzu&nx|A2E} zey)RStMfqqA!lyhcW{+;9?H*i{QN@a;rt`cy!@li{QM$kLH;pkVg7OFk^B?RqxmPD zMfszZzyg;+ONFH9IIX*Dv`NUY@Lt|0v z{gT%HWv%`z9P{%k&+wY=1MBSJ4c!ek`N;Ul$Htbnw(ZU^ZGGYy>oXr)U--n@B@mg1Y-&zC{&?vt1uKPC$=RV#VP_N zDiWnC3S}x9wTMBvibaKrL#2vGl}f<6?(!>EB37*=gsNnOsT4R>D#BG7B2+pC^#m|y zWn$iPAzEc2Mr9*bvBWi4=31<99agy>Yutc!Zp0=xVT+rw%`MpBR(#S~f95uP;fL7eN7&!ziE;6w)Z%G=?G?M=?#HgeFl+Qz)Zpl+z3< zXcm>^K^4uRn&weM3#g?<)X@^^X&DW)f<{_J6Rn|{*3m*6Xr)a&ppR&yEj*-cJfa=6 z(I6$T)!CdOS2-k41xvmPk!6I+ z3c@53PKiReL?c3C5Gk>U5*J5H7RN}k5i1TePJ+#Ni9>?uDNhoRDEE;hc}BA2aEiE$ zR4L>%2{F?p)Xb1XWJ(fT;^r&~rEEz?j!YT3Qo?ys%K4Il0&$v!5@EU}4MkGH#Zt*7 zl8#czK$#2~!pbs#7T|P!cF2fnk5S@5^1(d zl=(oi(I#36q((iGXtP~n%nr#xr?l~7(TX6s=#o4QZYjV^dBU$G z+juR7cq3i>R-W=ZdB#1`%|Chl=-AP_fFEx92HpA7C&2Gl=XLM1Gd<~g-Mr=h`(2+K zH|}5acKnCj3kvkPZt=l%HCpFCp zI;UP*Hs^Mrjh%bH=I!yjM9_xK3HZZ?uiKnou2L>I{(sx}H#R58_v+7VKYv}s`K`_Q bE&8e>o1-@j=j%ItUGuK_-ZuVsJCEUC7 item ) { - if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( - item.Value ) ) { + if( _forward.ContainsKey( item.Key ) || _reverse.ContainsKey( item.Value ) ) { throw new ArgumentException( "Duplicate key or value." ); } _forward.Add( item.Key, item.Value ); @@ -134,8 +135,9 @@ namespace StgSharp.Commom.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 ) @@ -148,9 +150,7 @@ namespace StgSharp.Commom.Collections 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 ) ); @@ -159,8 +159,7 @@ namespace StgSharp.Commom.Collections throw new ArgumentOutOfRangeException( nameof( arrayIndex ) ); } if( array.Length - arrayIndex < _forward.Count ) { - throw new ArgumentException( - "The array is too small to copy the elements." ); + throw new ArgumentException( "The array is too small to copy the elements." ); } foreach( KeyValuePair pair in _forward ) { diff --git a/StgSharp.Common/Collections/CapacityFixedList.cs b/StgSharp.Common/Collections/CapacityFixedList.cs index 3fe2e3fa..bfc0a732 100644 --- a/StgSharp.Common/Collections/CapacityFixedList.cs +++ b/StgSharp.Common/Collections/CapacityFixedList.cs @@ -39,13 +39,17 @@ namespace StgSharp.Commom.Collections { public static class CapacityFixedListBuilder { - internal static CapacityFixedList Create(ReadOnlySpan values) + + internal static CapacityFixedList Create( ReadOnlySpan values ) { - return new CapacityFixedList(values); + return new CapacityFixedList( values ); } + } - [CollectionBuilder(typeof(CapacityFixedListBuilder),nameof(CapacityFixedListBuilder.Create))] + [CollectionBuilder( + typeof( CapacityFixedListBuilder ), + nameof( CapacityFixedListBuilder.Create ) )] public class CapacityFixedList : IList { @@ -57,7 +61,7 @@ namespace StgSharp.Commom.Collections _values = new T[size]; } - public CapacityFixedList(ReadOnlySpan values) + public CapacityFixedList( ReadOnlySpan values ) { _values = values.ToArray(); } @@ -65,13 +69,14 @@ namespace StgSharp.Commom.Collections public T this[ int index ] { get => index < _index ? - _values[ index ] : throw new ArgumentOutOfRangeException( - nameof( index ) ); + _values[ index ] : throw new ArgumentOutOfRangeException( nameof( index ) ); set { - if( index < _index ) { + if( index < _index ) + { _values[ index ] = value; - } else { + } else + { throw new ArgumentOutOfRangeException( nameof( index ) ); } } @@ -83,7 +88,8 @@ namespace StgSharp.Commom.Collections public void Add( T item ) { - if( _index < capacity - 1 ) { + if( _index < capacity - 1 ) + { _index++; this[ _index ] = item; } @@ -97,7 +103,8 @@ namespace StgSharp.Commom.Collections public bool Contains( T item ) { - for( int i = 0; i <= _index; i++ ) { + for( int i = 0; i <= _index; i++ ) + { if( item.Equals( _values[ i ] ) ) { return true; } @@ -120,7 +127,8 @@ namespace StgSharp.Commom.Collections public int IndexOf( T item ) { T v; - for( int i = 0; i <= _index; i++ ) { + for( int i = 0; i <= _index; i++ ) + { if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { return i; } @@ -131,8 +139,10 @@ namespace StgSharp.Commom.Collections public bool Remove( T item ) { T v; - for( int i = 0; i <= _index; i++ ) { - if( ( v = _values[ i ] ) != null && v.Equals( item ) ) { + for( int i = 0; i <= _index; i++ ) + { + if( ( v = _values[ i ] ) != null && v.Equals( item ) ) + { _values[ i ] = _values[ _index ]; _index--; return true; @@ -143,8 +153,10 @@ namespace StgSharp.Commom.Collections public void RemoveAll( Predicate predicate ) { - for( int i = _index; i > 0; i-- ) { - if( predicate( _values[ i ] ) ) { + for( int i = _index; i > 0; i-- ) + { + if( predicate( _values[ i ] ) ) + { _values[ i ] = _values[ _index ]; _index--; } @@ -153,7 +165,8 @@ namespace StgSharp.Commom.Collections public void RemoveAt( int index ) { - if( index <= _index ) { + if( index <= _index ) + { _values[ index ] = _values[ _index ]; _index--; } diff --git a/StgSharp.Common/Collections/IBidrirectionalDictionary.cs b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs index fcacda8b..004d5297 100644 --- a/StgSharp.Common/Collections/IBidrirectionalDictionary.cs +++ b/StgSharp.Common/Collections/IBidrirectionalDictionary.cs @@ -38,51 +38,39 @@ namespace StgSharp.Commom.Collections public interface IBidirectionalDictionary : IDictionary { - public TFirst this[ TSecond key ] - { - get; - set; - } + public TFirst this[ TSecond key ] { get; set; } - public ICollection FirstIndex - { - get; - } + public ICollection FirstIndex { get; } - public ICollection SecondIndex - { - get; - } + public ICollection SecondIndex { get; } - public IReadOnlyDictionary Forward - { - get; - } + public IReadOnlyDictionary Forward { get; } - public IReadOnlyDictionary Reverse - { - get; - } + public IReadOnlyDictionary Reverse { get; } /// - /// Determines whether the contains - /// the specified key. + /// Determines whether the + /// contains the specified key. /// - /// The value to locate in the . + /// + /// The value to locate in the . + /// /// - /// true if the contains an element - /// with the specified key; otherwise, false. + /// true if the contains an + /// element with the specified key; otherwise, false. /// public bool Contains( TSecond key ); /// - /// Determines whether the contains - /// the specified key. + /// Determines whether the + /// contains the specified key. /// - /// The value to locate in the . + /// + /// The value to locate in the . + /// /// - /// true if the contains an element - /// with the specified key; otherwise, false. + /// true if the contains an + /// element with the specified key; otherwise, false. /// public bool Contains( TFirst key ); @@ -93,8 +81,7 @@ namespace StgSharp.Commom.Collections ICollection IDictionary.Values => SecondIndex; - bool IDictionary.ContainsKey( TFirst key ) => Contains( - key ); + bool IDictionary.ContainsKey( TFirst key ) => Contains( key ); #pragma warning restore CA1033 } } \ No newline at end of file diff --git a/StgSharp.Common/Collections/IHashMultiplexer.cs b/StgSharp.Common/Collections/IHashMultiplexer.cs index bfc871f5..56ce0004 100644 --- a/StgSharp.Common/Collections/IHashMultiplexer.cs +++ b/StgSharp.Common/Collections/IHashMultiplexer.cs @@ -36,11 +36,7 @@ namespace StgSharp.Collections public interface IHashMultiplexer : IEqualityComparer { - int RemainedMultiplexCount - { - get; - set; - } + int RemainedMultiplexCount { get; set; } void CacheHash( T obj, int count ); diff --git a/StgSharp.Common/Collections/ListSegment.cs b/StgSharp.Common/Collections/ListSegment.cs index 73efea66..fca67ba5 100644 --- a/StgSharp.Common/Collections/ListSegment.cs +++ b/StgSharp.Common/Collections/ListSegment.cs @@ -40,10 +40,12 @@ using System.Xml.Serialization; namespace StgSharp.Collections { /// - /// Part of a collection. This contains a direct reference to _origin collection, so all change - /// to _origin collection will be reflected in this object. + /// Part of a collection. This contains a direct reference to _origin collection, so all + /// change to _origin collection will be reflected in this object. /// - /// + /// + /// + /// public struct ListSegment : ICollection { @@ -56,8 +58,7 @@ namespace StgSharp.Collections ArgumentNullException.ThrowIfNull( collection ); ArgumentOutOfRangeException.ThrowIfLessThan( begin, 0 ); ArgumentOutOfRangeException.ThrowIfLessThan( length, 0 ); - ArgumentOutOfRangeException.ThrowIfLessThan( - begin + length, collection.Count ); + ArgumentOutOfRangeException.ThrowIfLessThan( begin + length, collection.Count ); _collection = collection; _begin = begin; _length = length; @@ -68,12 +69,22 @@ namespace StgSharp.Collections get { ArgumentOutOfRangeException.ThrowIfLessThan( indexValue, 0 ); - ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( - indexValue, _length ); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( indexValue, _length ); return _collection[ indexValue + _begin ]; } } + public T this[ Index i ] + { + get + { + int offset = i.IsFromEnd ? _length - i.Value : i.Value; + ArgumentOutOfRangeException.ThrowIfLessThan( offset, 0 ); + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual( offset, _length ); + return _collection[ offset + _begin ]; + } + } + public bool IsReadOnly => true; public int Count => _length; @@ -87,8 +98,7 @@ namespace StgSharp.Collections public void CopyTo( T[] array, int arrayIndex ) { ArgumentNullException.ThrowIfNull( array ); - Span span = CollectionsMarshal.AsSpan( _collection ) - .Slice( _begin, _length ); + Span span = CollectionsMarshal.AsSpan( _collection ).Slice( _begin, _length ); Span target = new Span( array, arrayIndex, _length ); span.CopyTo( target ); } diff --git a/StgSharp.Common/Collections/PartialDictionary.cs b/StgSharp.Common/Collections/PartialDictionary.cs index 71bd9a39..6499321b 100644 --- a/StgSharp.Common/Collections/PartialDictionary.cs +++ b/StgSharp.Common/Collections/PartialDictionary.cs @@ -40,17 +40,17 @@ namespace StgSharp.Collections { public partial class PartialDictionary : IDictionary { + private readonly Dictionary _source; private readonly HashSet _keys; private readonly PartialDictionaryValues _values; - public PartialDictionary( - Dictionary source, - TKey[] index ) + public PartialDictionary( Dictionary source, TKey[] index ) { _source = source; _keys = new HashSet( index ); - foreach( TKey item in _keys ) { + foreach( TKey item in _keys ) + { if( !_source.ContainsKey( item ) ) { _source.Add( item, default! ); } @@ -58,13 +58,12 @@ namespace StgSharp.Collections _values = new PartialDictionaryValues( this ); } - public PartialDictionary( - Dictionary source, - HashSet keys ) + public PartialDictionary( Dictionary source, HashSet keys ) { _source = source; _keys = keys; - foreach( TKey item in _keys ) { + foreach( TKey item in _keys ) + { if( !_source.ContainsKey( item ) ) { _source.Add( item, default! ); } @@ -73,20 +72,19 @@ namespace StgSharp.Collections } public PartialDictionary( - Dictionary source, - TKey[] index, IHashMultiplexer multiplexer - ) + Dictionary source, + TKey[] index, + IHashMultiplexer multiplexer ) { _source = source; - _keys = new HashSet(index); - foreach (TKey item in _keys) + _keys = new HashSet( index ); + foreach( TKey item in _keys ) { - if (!_source.ContainsKey(item)) - { - _source.Add(item, default!); + if( !_source.ContainsKey( item ) ) { + _source.Add( item, default! ); } } - _values = new PartialDictionaryValues(this); + _values = new PartialDictionaryValues( this ); } public TValue this[ TKey key ] @@ -131,14 +129,14 @@ namespace StgSharp.Collections public IEnumerator> GetEnumerator() { foreach( TKey item in _keys ) { - yield return new KeyValuePair( - item, _source[ item ] ); + yield return new KeyValuePair( item, _source[ item ] ); } } public bool TryGetValue( TKey key, out TValue value ) { - if( _keys.Contains( key ) ) { + if( _keys.Contains( key ) ) + { value = _source[ key ]; return true; } @@ -146,8 +144,7 @@ namespace StgSharp.Collections return false; } - void ICollection>.Add( - KeyValuePair item ) + void ICollection>.Add( KeyValuePair item ) { return; } @@ -157,8 +154,7 @@ namespace StgSharp.Collections throw new NotSupportedException(); } - bool ICollection>.Remove( - KeyValuePair item ) + bool ICollection>.Remove( KeyValuePair item ) { throw new NotSupportedException(); } diff --git a/StgSharp.Common/Collections/PartialDictionaryValues.cs b/StgSharp.Common/Collections/PartialDictionaryValues.cs index b70ced59..322225fb 100644 --- a/StgSharp.Common/Collections/PartialDictionaryValues.cs +++ b/StgSharp.Common/Collections/PartialDictionaryValues.cs @@ -43,8 +43,7 @@ namespace StgSharp.Collections private readonly PartialDictionary _values; - public PartialDictionaryValues( - PartialDictionary value ) + public PartialDictionaryValues( PartialDictionary value ) { _values = value; } @@ -55,7 +54,8 @@ namespace StgSharp.Collections public bool Contains( TValue item ) { - foreach( KeyValuePair kvp in _values ) { + foreach( KeyValuePair kvp in _values ) + { if( kvp.Value != null && kvp.Value.Equals( item ) ) { return true; } @@ -65,7 +65,8 @@ namespace StgSharp.Collections public void CopyTo( TValue[] array, int arrayIndex ) { - foreach( KeyValuePair kvp in _values ) { + foreach( KeyValuePair kvp in _values ) + { array[ arrayIndex ] = kvp.Value; arrayIndex++; } diff --git a/StgSharp.Common/Collections/RandomAccessibleStack.cs b/StgSharp.Common/Collections/RandomAccessibleStack.cs new file mode 100644 index 00000000..b5871c22 --- /dev/null +++ b/StgSharp.Common/Collections/RandomAccessibleStack.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="RandomAccessibleStack.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; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Collections +{ + public class RandomAccessibleStack : IEnumerable + { + + private const int DefaultCapacity = 4; + + private T[] _array; + private int _size; + private int _version; + + /// + /// Initializes a new instance of the RandomAccessStack class that is empty and has the + /// default initial capacity. + /// + public RandomAccessibleStack() + { + _array = new T[DefaultCapacity]; + } + + /// + /// Initializes a new instance of the RandomAccessStack class that is empty and has the + /// specified initial capacity. + /// + public RandomAccessibleStack( int capacity ) + { + if( capacity < 0 ) { + throw new ArgumentOutOfRangeException( + nameof( capacity ), "Capacity must be non-negative." ); + } + + _array = new T[capacity]; + } + + /// + /// Gets or sets the element at the specified index in the stack (0 = bottom, Count-1 = + /// top). + /// + public T this[ int index ] + { + get + { + if( index < 0 || index >= _size ) { + throw new ArgumentOutOfRangeException( nameof( index ) ); + } + + return _array[ index ]; + } + /* + set + { + if( index < 0 || index >= _size ) { + throw new ArgumentOutOfRangeException( nameof( index ) ); + } + _array[ index ] = value; + _version++; + } + /**/ + } + + /// + /// Gets the number of elements contained in the stack. + /// + public int Count => _size; + + /// + /// Removes all objects from the stack. + /// + public void Clear() + { + Array.Clear( _array, 0, _size ); + _size = 0; + _version++; + } + + /// + /// Returns an enumerator that iterates through the stack from top to bottom. Throws if + /// the stack is modified during iteration. + /// + public IEnumerator GetEnumerator() + { + int expectedVersion = _version; + for( int i = _size - 1; i >= 0; i-- ) + { + if( expectedVersion != _version ) { + throw new InvalidOperationException( + "Collection was modified during enumeration." ); + } + + yield return _array[ i ]; + } + } + + /// + /// Returns the object at the top of the stack without removing it. + /// + public T Peek() + { + if( _size == 0 ) { + throw new InvalidOperationException( "Stack is empty." ); + } + + return _array[ _size - 1 ]; + } + + /// + /// Removes and returns the object at the top of the stack. + /// + public T Pop() + { + if( _size == 0 ) { + throw new InvalidOperationException( "Stack is empty." ); + } + + T item = _array[ --_size ]; + _array[ _size ] = default!; + _version++; + return item; + } + + /// + /// Adds an item to the top of the stack. + /// + public void Push( T item ) + { + if( _size == _array.Length ) { + EnsureCapacity( _size + 1 ); + } + + _array[ _size++ ] = item; + _version++; + } + + private void EnsureCapacity( int min ) + { + int newCapacity = _array.Length == 0 ? DefaultCapacity : _array.Length * 2; + if( newCapacity < min ) { + newCapacity = min; + } + + Array.Resize( ref _array, newCapacity ); + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + } +} diff --git a/StgSharp.Common/Collections/StringHashMultiplexer.cs b/StgSharp.Common/Collections/StringHashMultiplexer.cs index 38bea082..7e263318 100644 --- a/StgSharp.Common/Collections/StringHashMultiplexer.cs +++ b/StgSharp.Common/Collections/StringHashMultiplexer.cs @@ -1,6 +1,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// file="KeyMultiplexer.cs" +// file="StringHashMultiplexer.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. @@ -38,7 +38,7 @@ using System.Threading; namespace StgSharp.Collections { - public sealed class StringHashMultiplexer : IHashMultiplexer + public sealed class StringHashMultiplexer : IHashMultiplexer { private int _initCount, _remainedCount, _hashCache, _hashLast; @@ -74,15 +74,15 @@ namespace StgSharp.Collections { int hash; fixed( char* cPtr = obj.AsSpan() ) { - hash = InternalIO.Intrinsic - .city_hash_simplify( cPtr, obj.Length ); + hash = InternalIO.Intrinsic.city_hash_simplify( cPtr, obj.Length ); } return hash; } public int GetHashCode( string obj ) { - if( _remainedCount > 0 && ReferenceEquals( _source, obj ) ) { + if( _remainedCount > 0 && ReferenceEquals( _source, obj ) ) + { _remainedCount--; return _hashCache; } @@ -139,8 +139,7 @@ namespace StgSharp.Collections { int hash; fixed( char* cPtr = obj.AsSpan() ) { - hash = InternalIO.Intrinsic - .city_hash_simplify( cPtr, obj.Length ); + hash = InternalIO.Intrinsic.city_hash_simplify( cPtr, obj.Length ); } return hash; } @@ -152,7 +151,8 @@ namespace StgSharp.Collections private void Dispose( bool disposing ) { - if( !disposedValue ) { + if( !disposedValue ) + { if( disposing ) { _multiplexers.Dispose(); } diff --git a/StgSharp.Common/Controlling/Controls/BattleField.cs b/StgSharp.Common/Controlling/Controls/BattleField.cs index 3f0d2d59..bf325276 100644 --- a/StgSharp.Common/Controlling/Controls/BattleField.cs +++ b/StgSharp.Common/Controlling/Controls/BattleField.cs @@ -51,17 +51,9 @@ namespace StgSharp.Controls get => throw new NotImplementedException(); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs index a02a98d8..a8374897 100644 --- a/StgSharp.Common/Controlling/Controls/ButtonGroup.cs +++ b/StgSharp.Common/Controlling/Controls/ButtonGroup.cs @@ -63,22 +63,14 @@ namespace StgSharp.Controls get => throw new NotSupportedException(); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } public TriggerButton CurrentButton { get => current; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } protected List AllButton { diff --git a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs index 326b01b0..888fdbb1 100644 --- a/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs +++ b/StgSharp.Common/Controlling/Controls/CharacterIndexImage.cs @@ -52,16 +52,15 @@ namespace StgSharp.Controls 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 @@ -93,8 +92,8 @@ namespace StgSharp.Controls } string result = ( message.Length >= length ) ? - message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( - length, defaultChar ); + message.Substring( message.Length - displayIndex.Length ) : message.PadLeft( + length, defaultChar ); displayIndex = result.ToCharArray(); } diff --git a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs index 32c7b151..ae6b8a24 100644 --- a/StgSharp.Common/Controlling/Controls/ControllingIntem.cs +++ b/StgSharp.Common/Controlling/Controls/ControllingIntem.cs @@ -42,27 +42,13 @@ namespace StgSharp.Controls public interface ControllingItem : IEnumerable { - public abstract bool IsEntity - { - get; - } + public abstract bool IsEntity { get; } - public abstract ReadOnlySpan TextureBox - { - get; - } + public abstract ReadOnlySpan TextureBox { get; } - public abstract Rectangle BoundingBox - { - get; - set; - } + public abstract Rectangle BoundingBox { get; set; } - public abstract Vec2 Position - { - get; - set; - } + public abstract Vec2 Position { get; set; } IEnumerator IEnumerable.GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/DecorationBox.cs b/StgSharp.Common/Controlling/Controls/DecorationBox.cs index b9c906d2..fc62ff2c 100644 --- a/StgSharp.Common/Controlling/Controls/DecorationBox.cs +++ b/StgSharp.Common/Controlling/Controls/DecorationBox.cs @@ -57,17 +57,9 @@ namespace StgSharp.Controls get => renderMesh.TextureCoord; } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/MarkingLable.cs b/StgSharp.Common/Controlling/Controls/MarkingLable.cs index b334e9e3..e8fdeef3 100644 --- a/StgSharp.Common/Controlling/Controls/MarkingLable.cs +++ b/StgSharp.Common/Controlling/Controls/MarkingLable.cs @@ -63,17 +63,9 @@ namespace StgSharp.Controls get => marker.TextureCoord; } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } public IEnumerator GetEnumerator() { diff --git a/StgSharp.Common/Controlling/Controls/TriggerButton.cs b/StgSharp.Common/Controlling/Controls/TriggerButton.cs index b135005f..85e8c6db 100644 --- a/StgSharp.Common/Controlling/Controls/TriggerButton.cs +++ b/StgSharp.Common/Controlling/Controls/TriggerButton.cs @@ -41,9 +41,9 @@ using System.Text; namespace StgSharp.Controls { public delegate void RenderButtonTextureCallback( - ButtonStatus status, - float beginTime, - in TextureProvider texture ); + ButtonStatus status, + float beginTime, + in TextureProvider texture ); public enum ButtonStatus { @@ -106,9 +106,11 @@ namespace StgSharp.Controls { add { - if( _renderButton == null ) { + if( _renderButton == null ) + { _renderButton = value; - } else { + } else + { _renderButton += value; } } @@ -120,17 +122,9 @@ namespace StgSharp.Controls } } - 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; @@ -139,41 +133,17 @@ namespace StgSharp.Controls get => MemoryMarshal.Cast( _texture.TextureCoordinate ); } - public Rectangle BoundingBox - { - get; - set; - } + public Rectangle BoundingBox { get; set; } - public TriggerButton Left - { - get; - internal set; - } + public TriggerButton Left { get; internal set; } - public TriggerButton Right - { - get; - internal set; - } + public TriggerButton Right { get; internal set; } - public TriggerButton Up - { - get; - internal set; - } + public TriggerButton Up { get; internal set; } - public TriggerButton Down - { - get; - internal set; - } + public TriggerButton Down { get; internal set; } - public Vec2 Position - { - get; - set; - } + public Vec2 Position { get; set; } internal TextureProvider Texture { @@ -181,11 +151,7 @@ namespace StgSharp.Controls set => _texture = value; } - protected ButtonStatus CurrentStatus - { - get; - set; - } + protected ButtonStatus CurrentStatus { get; set; } public void DeHighlight() { @@ -209,9 +175,11 @@ namespace StgSharp.Controls public void Enable() { - if( CurrentStatus == ButtonStatus.Disable ) { + if( CurrentStatus == ButtonStatus.Disable ) + { CurrentStatus = ButtonStatus.DisableToEnable; - } else { + } else + { return; } if( enableCallback != null ) { @@ -227,9 +195,11 @@ namespace StgSharp.Controls public void Highlight() { - if( CurrentStatus == ButtonStatus.Enable ) { + if( CurrentStatus == ButtonStatus.Enable ) + { CurrentStatus |= ButtonStatus.EnableToHighlight; - } else { + } else + { return; } if( confirmCallback != null ) { diff --git a/StgSharp.Common/Controlling/KeyEnum.cs b/StgSharp.Common/Controlling/KeyEnum.cs index 24f75d92..e76d1930 100644 --- a/StgSharp.Common/Controlling/KeyEnum.cs +++ b/StgSharp.Common/Controlling/KeyEnum.cs @@ -215,9 +215,9 @@ namespace StgSharp } - #pragma warning restore CA1707 - #pragma warning restore CA1712 - #pragma warning restore CA7008 + #pragma warning restore CA1707 + #pragma warning restore CA1712 + #pragma warning restore CA7008 internal enum InputEquipment { diff --git a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs index 327b8a32..2986cf74 100644 --- a/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/IClickTrigger.cs @@ -37,15 +37,9 @@ namespace StgSharp.Controlling.UsrActivity public interface IClickTrigger { - public int TargetKeyOrButtonID - { - get; - } + public int TargetKeyOrButtonID { get; } - public KeyStatus TriggeredStatus - { - get; - } + public KeyStatus TriggeredStatus { get; } } } diff --git a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs index a8d76f10..777f23ba 100644 --- a/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/JoystickTrigger.cs @@ -70,16 +70,12 @@ namespace StgSharp.Controlling.UsrActivity 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 ); } - public static bool operator ==( - JoystickTrigger left, - JoystickTrigger right ) + public static bool operator ==( JoystickTrigger left, JoystickTrigger right ) { return ( left._status == right._status ) && ( left._stick == right._stick ); } diff --git a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs index 3988d883..bb7bc5d7 100644 --- a/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs +++ b/StgSharp.Common/Controlling/UsrActivity/KeyTrigger.cs @@ -73,7 +73,8 @@ namespace StgSharp.Controlling.UsrActivity 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 ) diff --git a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs index fc377378..6c130869 100644 --- a/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs +++ b/StgSharp.Common/Controlling/UsrActivity/TriggetFactory.cs @@ -49,42 +49,31 @@ namespace StgSharp.Controlling.UsrActivity private static KeyTrigger keyboardtemp; private static MouseTrigger mousetemp; - public static JoystickTrigger BuildJoystickClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or key is not on joystick." ); } - public static KeyTrigger BuildKeyboardClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or kay is not on keyboard." ); } - public static MouseTrigger BuildMouseClickTrigger( - int keyCode, - KeyStatus status ) + 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." ); + throw new InvalidOperationException( "Known key code or key is not on mouse." ); } - public static IClickTrigger BuildTrigger( - int keyCode, - KeyStatus status ) + public static IClickTrigger BuildTrigger( int keyCode, KeyStatus status ) { if( keyCode > KeyboardMin && keyCode < KeyboardMax ) { return new KeyTrigger( ( KeyboardKey )keyCode, status ); diff --git a/StgSharp.Common/Data/GlobalData/root.cs b/StgSharp.Common/Data/GlobalData/root.cs index 1b2b9795..a68410c8 100644 --- a/StgSharp.Common/Data/GlobalData/root.cs +++ b/StgSharp.Common/Data/GlobalData/root.cs @@ -38,7 +38,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static unsafe partial class StgSharp + public static unsafe partial class World { private static byte leastUnusedArea; diff --git a/StgSharp.Common/Data/SSD/Area.cs b/StgSharp.Common/Data/SSD/Area.cs index 0a3a8a36..434695dc 100644 --- a/StgSharp.Common/Data/SSD/Area.cs +++ b/StgSharp.Common/Data/SSD/Area.cs @@ -39,9 +39,9 @@ using System.Threading.Tasks; namespace StgSharp.Internal { /// - /// 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 { } } diff --git a/StgSharp.Common/Data/SSD/DataHead.cs b/StgSharp.Common/Data/SSD/DataHead.cs index 14ecb48f..498db9e1 100644 --- a/StgSharp.Common/Data/SSD/DataHead.cs +++ b/StgSharp.Common/Data/SSD/DataHead.cs @@ -66,7 +66,8 @@ namespace StgSharp.Internal public unsafe byte[] GetBytes() { byte[] ret = new byte[16]; - fixed( M128* vptr = &data ) { + fixed( M128* vptr = &data ) + { byte* bptr = ( byte* )vptr; for( int i = 0; i < 15; i++ ) { ret[ i ] = *bptr; diff --git a/StgSharp.Common/Data/SSD/DataSegment.cs b/StgSharp.Common/Data/SSD/DataSegment.cs index 52d62561..b4c14367 100644 --- a/StgSharp.Common/Data/SSD/DataSegment.cs +++ b/StgSharp.Common/Data/SSD/DataSegment.cs @@ -44,12 +44,11 @@ using System.Threading.Tasks; namespace StgSharp.Internal { - [StructLayout( LayoutKind.Explicit, Size = StgSharp.ssdSegmentLength * 16 )] + [StructLayout( LayoutKind.Explicit, Size = World.ssdSegmentLength * 16 )] public unsafe struct SSDSegment : IComparable, IComparable { - [FieldOffset( 16 )] public fixed byte Data[ - 16 * ( StgSharp.ssdSegmentLength - 1 ) ]; + [FieldOffset( 16 )] public fixed byte Data[ 16 * ( World.ssdSegmentLength - 1 ) ]; [FieldOffset( 12 )] public int DataHash; [FieldOffset( 8 )] public int PreviousHash; [FieldOffset( 0 * 16 )] public SSDSegmentHead Head; @@ -63,7 +62,7 @@ namespace StgSharp.Internal { get { - if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + if( index > ( 16 * ( World.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } return Data[ index ]; @@ -71,7 +70,7 @@ namespace StgSharp.Internal set { - if( index > ( 16 * ( StgSharp.ssdSegmentLength - 1 ) ) - 1 ) { + if( index > ( 16 * ( World.ssdSegmentLength - 1 ) ) - 1 ) { throw new IndexOutOfRangeException(); } Data[ index ] = value; @@ -98,15 +97,15 @@ namespace StgSharp.Internal public static SSDSegment FromStream( byte[] stream ) { - if( stream.Length != 16 * StgSharp.ssdSegmentLength ) { + if( stream.Length != 16 * World.ssdSegmentLength ) { throw new ArgumentException(); } SSDSegment ret = new SSDSegment(); - fixed( byte* bptr = stream ) { + 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 ) ) ); + for( int i = 1; i < World.ssdSegmentLength; i++ ) { + ret.WriteData( i - 1, *( M128* )( bptr + ( 16 * i ) ) ); } } return ret; @@ -114,9 +113,11 @@ namespace StgSharp.Internal public byte[] GetBytes() { - byte[] ret = new byte[16 * StgSharp.ssdSegmentLength]; - fixed( M128* mptr = &Head.data ) { - fixed( byte* aptr = ret ) { + byte[] ret = new byte[16 * World.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++ ) { @@ -131,9 +132,10 @@ namespace StgSharp.Internal public int GetDataHash() { Vector4 v = Vector4.One; - fixed( M128* mptr = &Head.data ) { + fixed( M128* mptr = &Head.data ) + { Vector4* vptr = ( Vector4* )mptr; - for( int i = 0; i < StgSharp.ssdSegmentLength - 1; i += 1 ) { + for( int i = 0; i < World.ssdSegmentLength - 1; i += 1 ) { v += ( *vptr ) * 31; } } @@ -145,9 +147,10 @@ namespace StgSharp.Internal public override int GetHashCode() { int ret = 17; - fixed( M128* mptr = &Head.data ) { + fixed( M128* mptr = &Head.data ) + { Vector4* vptr = ( Vector4* )mptr; - for( int i = 0; i < StgSharp.ssdSegmentLength; i++ ) { + for( int i = 0; i < World.ssdSegmentLength; i++ ) { ret = ( ret + ( *vptr ).GetHashCode() ) * 31; } } @@ -156,7 +159,8 @@ namespace StgSharp.Internal public unsafe T ReadData( int index ) where T: struct { - fixed( byte* bptr = Data ) { + fixed( byte* bptr = Data ) + { T* tptr = ( T* )bptr; return *( tptr + index ); } @@ -164,7 +168,8 @@ namespace StgSharp.Internal public unsafe void WriteData( int index, T value ) where T: struct { - fixed( byte* bptr = Data ) { + fixed( byte* bptr = Data ) + { T* tptr = ( T* )bptr; *( tptr + index ) = value; } diff --git a/StgSharp.Common/Data/SSD/SSD.cs b/StgSharp.Common/Data/SSD/SSD.cs index ce6a5ca4..27da3035 100644 --- a/StgSharp.Common/Data/SSD/SSD.cs +++ b/StgSharp.Common/Data/SSD/SSD.cs @@ -58,8 +58,7 @@ namespace StgSharp.Internal 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.Common/Data/SSD/SSDraw.cs b/StgSharp.Common/Data/SSD/SSDraw.cs index 409d9b05..88628c39 100644 --- a/StgSharp.Common/Data/SSD/SSDraw.cs +++ b/StgSharp.Common/Data/SSD/SSDraw.cs @@ -60,17 +60,9 @@ namespace StgSharp.Internal.FileIO streamSource.Read( data.AsSpan() ); } - public SSDrawHead Head - { - get; - set; - } + public SSDrawHead Head { get; set; } - public string Name - { - get; - set; - } + public string Name { get; set; } } diff --git a/StgSharp.Common/Data/Serialize/Define.cs b/StgSharp.Common/Data/Serialize/Define.cs index dce0b6d3..721f8766 100644 --- a/StgSharp.Common/Data/Serialize/Define.cs +++ b/StgSharp.Common/Data/Serialize/Define.cs @@ -35,7 +35,7 @@ using System.Text; namespace StgSharp.Internal { /// - /// A class contains a sets of methods to serialize several types + /// A class contains a sets of methods to serialize several types /// public static partial class Serializer { } } diff --git a/StgSharp.Common/Data/Serialize/ISSDSerializable.cs b/StgSharp.Common/Data/Serialize/ISSDSerializable.cs index 1067586e..23ea07f0 100644 --- a/StgSharp.Common/Data/Serialize/ISSDSerializable.cs +++ b/StgSharp.Common/Data/Serialize/ISSDSerializable.cs @@ -39,10 +39,7 @@ namespace StgSharp.Internal public interface ISSDSerializable { - public SerializableTypeCode SSDTypeCode - { - get; - } + public SerializableTypeCode SSDTypeCode { get; } public byte[] GetBytes(); @@ -68,8 +65,7 @@ namespace StgSharp.Internal 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 ); @@ -78,7 +74,8 @@ namespace StgSharp.Internal public static string GetNameTail( SerializableTypeCode typeCode ) { - switch( typeCode ) { + switch( typeCode ) + { case SerializableTypeCode.IndexTable: return "_idt"; case SerializableTypeCode.PixelImage: diff --git a/StgSharp.Common/Data/ValueBox.cs b/StgSharp.Common/Data/ValueBox.cs index 9bf6bd74..7d3d1391 100644 --- a/StgSharp.Common/Data/ValueBox.cs +++ b/StgSharp.Common/Data/ValueBox.cs @@ -41,13 +41,9 @@ namespace StgSharp.Data public interface IValueBox { - ref object ValueReference - { - get; - } + ref object ValueReference { get; } - static virtual IValueBox AsGeneric( IValueBox box ) - where T: struct + static virtual IValueBox AsGeneric( IValueBox box ) where T: struct { if( box is not IValueBox genericBox ) { return null; @@ -65,19 +61,17 @@ namespace StgSharp.Data public interface IValueBox where T: struct { - T Value - { - get; - set; - } + T Value { get; set; } } /// - /// A class attempt to reduce cost of boxing, though still a bit slower than direct access to - /// _origin value type instance. + /// A class attempt to reduce cost of boxing, though still a bit slower than direct access to + /// _origin value type instance. /// - /// Type of instance to be boxed. + /// + /// Type of instance to be boxed. + /// public class ValueBox : IValueBox, IValueBox where T: struct { @@ -88,8 +82,7 @@ namespace StgSharp.Data _value = value; } - public ref object ValueReference => ref Unsafe.As( - ref _value ); + public ref object ValueReference => ref Unsafe.As( ref _value ); public T Value { diff --git a/StgSharp.Common/Entities/Enemy.cs b/StgSharp.Common/Entities/Enemy.cs index 6b5a48cc..72c888e6 100644 --- a/StgSharp.Common/Entities/Enemy.cs +++ b/StgSharp.Common/Entities/Enemy.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - namespace StgSharp.Entities { public class Enemy : IEntity @@ -39,23 +38,11 @@ namespace StgSharp.Entities internal Launcher _dieBulletLauncher; public bool _selectalbe; - public Launcher AwardLauncher - { - get; - set; - } + public Launcher AwardLauncher { get; set; } - public Launcher CommonBulletLauncher - { - get; - set; - } + public Launcher CommonBulletLauncher { get; set; } - public Launcher DieBulletLauncher - { - get; - set; - } + public Launcher DieBulletLauncher { get; set; } public override void OnRenderFrame() { diff --git a/StgSharp.Common/Entities/IEntity.cs b/StgSharp.Common/Entities/IEntity.cs index 9ed41485..287b8cc1 100644 --- a/StgSharp.Common/Entities/IEntity.cs +++ b/StgSharp.Common/Entities/IEntity.cs @@ -42,29 +42,21 @@ namespace StgSharp protected uint _bornTick; internal Func _movHandler; internal LinkedList _collisionBox; + internal PlainGeometryCollisionSensor _collisionSensor; internal Point _basePoint; internal Point _pos; internal Point _position; - internal PlainGeometryCollisionSensor _collisionSensor; internal string _texture; /// - /// X position of an enenmy entity + /// X position of an enenmy entity /// - public float X - { - get; - set; - } + public float X { get; set; } /// - /// Y position of an enemy entity + /// Y position of an enemy entity /// - public float Y - { - get; - set; - } + public float Y { get; set; } public LinkedList CollisionBox { @@ -73,7 +65,7 @@ namespace StgSharp } /// - /// A sensor used for checking out if a bullet hit a player or something else + /// A sensor used for checking out if a bullet hit a player or something else /// public PlainGeometryCollisionSensor CollisionSensor { @@ -81,20 +73,13 @@ 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 Vec2 Location - { - get; - } + public Vec2 Location { get; } public abstract void OnRenderFrame(); diff --git a/StgSharp.Common/Environment/Dialogue.cs b/StgSharp.Common/Environment/Dialogue.cs index 172060cd..2f713741 100644 --- a/StgSharp.Common/Environment/Dialogue.cs +++ b/StgSharp.Common/Environment/Dialogue.cs @@ -46,59 +46,45 @@ namespace StgSharp private static Process? _dialogueProcess; private static AnonymousPipeServerStream _dialogueClientPipe,_dialogueServerPipe; - private static ConcurrentBag msgCache = new ConcurrentBag( - ); + private static ConcurrentBag msgCache = new ConcurrentBag(); private static int _readAndWriteThreadId; private static ProcessStartInfo _dialogueProcessInfo; private static StreamReader _dr; private static StreamWriter _dw; - public static bool NeedShowWhenStartup + public static bool NeedShowWhenStartup { get; set; } + + public static void PostError( Exception ex ) { - get; - set; + CreateDialogueProcessIfNotExist(); + + _dw.WriteLine( $"posterror {ex.Message}" ); + + _dialogueProcess!.Exited -= DialogueProcessExitCallback; } - public static void SetReadAndWriteThread(Thread thread) + public static void SetReadAndWriteThread( Thread thread ) { _readAndWriteThreadId = thread.ManagedThreadId; } - private static void AssertThread() - { - if (_readAndWriteThreadId != Environment.CurrentManagedThreadId) - { - throw new InvalidOperationException("Communication with dialogue can only call from certain thread."); - } - } - internal static void CreateDialogueProcessIfNotExist() { if( _dialogueProcess != null ) { return; } - if (!File.Exists(_dialogueProcessInfo.FileName)) - { - - } + if( !File.Exists( _dialogueProcessInfo.FileName ) ) { } _dialogueProcess = Process.Start( _dialogueProcessInfo ); - _dr = new StreamReader(_dialogueClientPipe); - _dw = new StreamWriter(_dialogueServerPipe); + _dr = new StreamReader( _dialogueClientPipe ); + _dw = new StreamWriter( _dialogueServerPipe ); - _dialogueProcess!.Exited += DialogueProcessExitCallback; + _dialogueProcess!.Exited += DialogueProcessExitCallback; _dialogueServerPipe.DisposeLocalCopyOfClientHandle(); _dialogueClientPipe.DisposeLocalCopyOfClientHandle(); } - private static void DialogueProcessExitCallback(object? sender, EventArgs e) - { - _dialogueProcess = null; - _dr.Close(); - _dw.Close(); - } - internal static void LoadDialogue() { _dialogueServerPipe = new AnonymousPipeServerStream( @@ -106,21 +92,25 @@ namespace StgSharp _dialogueClientPipe = new AnonymousPipeServerStream( PipeDirection.In, HandleInheritability.Inheritable ); - string route = Assembly.GetAssembly( typeof( StgSharp ) ).Location; + string route = Assembly.GetAssembly( typeof( World ) ).Location; string path = Path.GetDirectoryName( route ); string exeName; - if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) { + if( RuntimeInformation.IsOSPlatform( OSPlatform.Windows ) ) + { exeName = ".exe"; - } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || RuntimeInformation.IsOSPlatform( - OSPlatform.OSX ) ) { + } else if( RuntimeInformation.IsOSPlatform( OSPlatform.Linux ) || + RuntimeInformation.IsOSPlatform( OSPlatform.OSX ) ) + { exeName = string.Empty; - } else { + } else + { throw new PlatformNotSupportedException( "Unknown OS platform" ); } - string consoleRoute = Path.Combine(path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}"); + string consoleRoute = Path.Combine( + path, @"StgSharpTerminalDialogue", $@"StgSharpTerminalDialogue{exeName}" ); _dialogueProcessInfo = new ProcessStartInfo { @@ -129,26 +119,13 @@ namespace StgSharp UseShellExecute = true, RedirectStandardOutput = false, }; - } - internal static void PostMessage( - string instruction, - params string[] operands) + internal static void PostMessage( string instruction, params string[] operands ) { CreateDialogueProcessIfNotExist(); - _dw.WriteLine($"{instruction} {operands}"); - - } - - public static void PostError(Exception ex) - { - CreateDialogueProcessIfNotExist(); - - _dw.WriteLine($"posterror {ex.Message}"); - - _dialogueProcess!.Exited -= DialogueProcessExitCallback; + _dw.WriteLine( $"{instruction} {operands}" ); } internal static void UnloadDialogue() @@ -169,10 +146,12 @@ namespace StgSharp } string temp = string .Empty; - do { + do + { temp = _dr.ReadLine(); temp = temp ?? string.Empty; - if( !temp!.StartsWith( target ) ) { + if( !temp!.StartsWith( target ) ) + { break; } } while (true); @@ -181,5 +160,20 @@ namespace StgSharp return index != -1 ? temp.Substring( index + 1 ) : string.Empty; } + private static void AssertThread() + { + if( _readAndWriteThreadId != Environment.CurrentManagedThreadId ) { + throw new InvalidOperationException( + "Communication with dialogue can only call from certain thread." ); + } + } + + private static void DialogueProcessExitCallback( object? sender, EventArgs e ) + { + _dialogueProcess = null; + _dr.Close(); + _dw.Close(); + } + } } diff --git a/StgSharp.Common/Environment/GlobalSetting.cs b/StgSharp.Common/Environment/GlobalSetting.cs index 205e9638..850fca9f 100644 --- a/StgSharp.Common/Environment/GlobalSetting.cs +++ b/StgSharp.Common/Environment/GlobalSetting.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="GlobalSetting.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static unsafe partial class StgSharp + public static unsafe partial class World { internal const int ssdSegmentLength = 16; @@ -74,7 +74,7 @@ namespace StgSharp /// /// CustomizeInit an instance of OpenGL program, This method should be called before any - /// other StgSharp api. + /// other World api. /// public static void InitGL( int majorVersion, int minorVersion ) { diff --git a/StgSharp.Common/Environment/Monitors.cs b/StgSharp.Common/Environment/Monitors.cs index 753ed36b..2757919f 100644 --- a/StgSharp.Common/Environment/Monitors.cs +++ b/StgSharp.Common/Environment/Monitors.cs @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static partial class StgSharp + public static partial class World { private static unsafe IntPtr[] monitorsArray; @@ -48,12 +48,12 @@ namespace StgSharp { get { - if( monitorsArray == null ) { + if( monitorsArray == null ) + { int count = 0; IntPtr* arrayhandle = InternalIO.glfwGetMonitors( &count ); monitorsArray = new IntPtr[count]; - Marshal.Copy( - ( IntPtr )arrayhandle, monitorsArray, 0, count ); + Marshal.Copy( ( IntPtr )arrayhandle, monitorsArray, 0, count ); Marshal.FreeHGlobal( ( IntPtr )arrayhandle ); } return monitorsArray; diff --git a/StgSharp.Common/Environment/Platform.cs b/StgSharp.Common/Environment/Platform.cs index eaf43f71..a107360d 100644 --- a/StgSharp.Common/Environment/Platform.cs +++ b/StgSharp.Common/Environment/Platform.cs @@ -28,11 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// using StgSharp.Envitronment; -// using StgSharp.Envitronment.Win32; -// using StgSharp.Graphics; -// using StgSharp.Math; - using StgSharp.Internal; using StgSharp.Internal.Intrinsic; @@ -71,12 +66,12 @@ namespace StgSharp } - public static partial class StgSharp + public static partial class World { /// - /// Version of current StgSharp platform. Main version represent in hundred's digit, and sub - /// version represent in ten's digit. + /// Version of current World platform. Main version represent in hundred's digit, and sub + /// version represent in ten's digit. /// public const long version = 430; @@ -92,8 +87,7 @@ namespace StgSharp InternalIO.glfwInit(); InternalIO.InternalAppendLog( "\n\n\n" ); InternalIO.InternalWriteLog( - $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", - LogType.Info ); + $"Program {Assembly.GetEntryAssembly()!.FullName} Started.", LogType.Info ); _mainThreadID = Environment.CurrentManagedThreadId; @@ -122,8 +116,7 @@ namespace StgSharp public static void LogWarning( Exception notVerySeriesException ) { - InternalIO.InternalWriteLog( - notVerySeriesException.Message, LogType.Warning ); + InternalIO.InternalWriteLog( notVerySeriesException.Message, LogType.Warning ); } public static void Mark( bool needConsole ) @@ -142,12 +135,12 @@ namespace StgSharp } public static void Track( - object target, - string message, - bool isConsole, - [CallerFilePath] string filePath = "", - [CallerMemberName] string callerName = "", - [CallerLineNumber] int lineNumber = 0 ) + object target, + string message, + bool isConsole, + [CallerFilePath] string filePath = "", + [CallerMemberName] string callerName = "", + [CallerLineNumber] int lineNumber = 0 ) { Type t = target.GetType(); string log = $"Tracked object: {nameof(target)}\t\tType:{t.Name}\n"; @@ -159,18 +152,24 @@ namespace StgSharp } log += $"Tracking at:\n{filePath}\t{callerName}\tline {lineNumber}\n"; log += $"Additional information:\n{message}\n"; - if( isConsole ) { + if( isConsole ) + { Console.WriteLine( log ); - } else { + } else + { InternalIO.InternalWriteLog( log, LogType.Info ); } } /// - /// Write a log message to log file, and mark the _level of this message. + /// 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. + /// + /// 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 ) { @@ -183,10 +182,12 @@ namespace StgSharp throw new InvalidCastException( "Failed to convert api, the function pointer is zero." ); } - try { + try + { return Marshal.GetDelegateForFunctionPointer( funcPtr ); } - catch( Exception ) { + catch( Exception ) + { throw; } } @@ -197,10 +198,12 @@ namespace StgSharp throw new InvalidCastException( "Failed to convert api, the function pointer is zero." ); } - try { + try + { return Marshal.GetDelegateForFunctionPointer( funcPtr, T ); } - catch( Exception ) { + catch( Exception ) + { throw; } } diff --git a/StgSharp.Common/Environment/globalKeyStat.cs b/StgSharp.Common/Environment/globalKeyStat.cs index afddb8ab..0c60f833 100644 --- a/StgSharp.Common/Environment/globalKeyStat.cs +++ b/StgSharp.Common/Environment/globalKeyStat.cs @@ -37,7 +37,7 @@ using System.Threading.Tasks; namespace StgSharp { - public static partial class StgSharp + public static partial class World { private static ConcurrentDictionary keyListener diff --git a/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs index e8624a1e..99914c84 100644 --- a/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs +++ b/StgSharp.Common/Geometries/Coordination/PlainCoordinate.cs @@ -41,22 +41,16 @@ namespace StgSharp.Geometries { private static PlainCoordinate statndardPlainCoordination = new PlainCoordinate( - null, new Point( 0, 0, 0 ), new Vec3( 1, 0, 0 ), - new Vec3( 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, - Vec3 xAxis, - Vec3 yAxis ) + public PlainCoordinate( CoordinationBase local, Point origin, Vec3 xAxis, Vec3 yAxis ) : base( local ) { CoordMat = Matrix44.Unit; CoordMat.colum0 = new Vec4( xAxis, 0 ); CoordMat.colum1 = new Vec4( yAxis, 0 ); - CoordMat.colum2 = new Vec4( - Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); + CoordMat.colum2 = new Vec4( Linear.Normalize( Vec3.Cross( xAxis, yAxis ) ), 0 ); LocalOrigin = origin; } diff --git a/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs index 4e83172d..2385e56b 100644 --- a/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs +++ b/StgSharp.Common/Geometries/Coordination/SpaceCoordinate.cs @@ -40,11 +40,11 @@ namespace StgSharp.Geometries { public SpaceCoordinate( - CoordinationBase localCoordination, - Point origin, - Vec3 xAxis, - Vec3 yAxis, - Vec3 zAxis ) + CoordinationBase localCoordination, + Point origin, + Vec3 xAxis, + Vec3 yAxis, + Vec3 zAxis ) : base( localCoordination ) { } } diff --git a/StgSharp.Common/Geometries/GemoryException.cs b/StgSharp.Common/Geometries/GemoryException.cs index 1189a134..3cf4b2a1 100644 --- a/StgSharp.Common/Geometries/GemoryException.cs +++ b/StgSharp.Common/Geometries/GemoryException.cs @@ -36,31 +36,25 @@ namespace StgSharp.Geometries public unsafe class ToUpperDimensionException : Exception { - protected ToUpperDimensionException( - SerializationInfo info, - StreamingContext context ) + protected ToUpperDimensionException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } public ToUpperDimensionException() { } public ToUpperDimensionException( string message ) : base( message ) { } - public ToUpperDimensionException( - string message, - Exception innerException ) + public ToUpperDimensionException( string message, Exception innerException ) : base( message, innerException ) { } } /// - /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 + /// 当几何体调用了过多的CalcVec方法时,产生UnusedVertexException异常 /// public class UnusedVertexException : Exception { - protected UnusedVertexException( - SerializationInfo info, - StreamingContext context ) + protected UnusedVertexException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } public UnusedVertexException() { } diff --git a/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs index c8833636..252f6b97 100644 --- a/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs +++ b/StgSharp.Common/Geometries/GeometryOperation/GeometryOperation.cs @@ -40,9 +40,7 @@ using System.Text; namespace StgSharp.Geometries { [UnmanagedFunctionPointer( CallingConvention.Cdecl )] - public delegate Vec3 GeometryMotionDelegate( - TimeSpanProvider timeSource, - out float rotation ); + public delegate Vec3 GeometryMotionDelegate( TimeSpanProvider timeSource, out float rotation ); public class GeometryMotion { @@ -54,20 +52,23 @@ namespace StgSharp.Geometries private TimeSpanProvider time; public unsafe GeometryMotion( - bool isIncreament, - TimeSpanProvider timeSource, - GeometryMotionDelegate motionDelegate ) + bool isIncreament, + TimeSpanProvider timeSource, + GeometryMotionDelegate motionDelegate ) { isIncrementMode = isIncreament; time = timeSource; - if( motionDelegate == null ) { + 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 ); movement = motionDelegate; - } else { + } else + { movement = motionDelegate; } @@ -88,25 +89,27 @@ namespace StgSharp.Geometries { float rot; Vec3 vec; - if( sourceIsStatic ) { + if( sourceIsStatic ) + { vec = ( ( delegate* unmanaged[Cdecl] )handle )( time, out rot ); - } else { + } else + { vec = movement( time, out rot ); } - if( isIncrementMode ) { + if( isIncrementMode ) + { coord += vec; rotation += rot; - } else { + } else + { coord = vec; rotation = rot; } } - private static Vec3 defaultMotion( - TimeSpanProvider provider, - out float rotation ) + private static Vec3 defaultMotion( TimeSpanProvider provider, out float rotation ) { rotation = 0; return Vec3.Zero; diff --git a/StgSharp.Common/Geometries/IGeometry.cs b/StgSharp.Common/Geometries/IGeometry.cs index 22fda049..c9af01e7 100644 --- a/StgSharp.Common/Geometries/IGeometry.cs +++ b/StgSharp.Common/Geometries/IGeometry.cs @@ -42,33 +42,18 @@ namespace StgSharp.Geometries public interface IGeometry { - public Point this[ int index ] - { - get; - set; - } + public Point this[ int index ] { get; set; } #pragma warning disable CA1819 public Vec4[] VertexStream - #pragma warning restore CA1819 - { - get; - } + #pragma warning restore CA1819 + { get; } - public CoordinationBase Coordination - { - get; - } + public CoordinationBase Coordination { get; } - public int VertexCount - { - get; - } + public int VertexCount { get; } - public ReadOnlySpan VertexIndices - { - get; - } + public ReadOnlySpan VertexIndices { get; } } } diff --git a/StgSharp.Common/Geometries/IInstancing.cs b/StgSharp.Common/Geometries/IInstancing.cs index 2c1162d9..2e56f138 100644 --- a/StgSharp.Common/Geometries/IInstancing.cs +++ b/StgSharp.Common/Geometries/IInstancing.cs @@ -43,53 +43,29 @@ namespace StgSharp.Geometries public interface IInstancing { - public float Rotation - { - get { return GlobalBuffer.CoordAndRotationList[ BufferId ].W; } - set - { - Vec4 temp = GlobalBuffer.CoordAndRotationList[ BufferId ]; - temp.W = value; - GlobalBuffer.CoordAndRotationList[ BufferId ] = temp; - } - } + public float Rotation { get { return GlobalBuffer.CoordAndRotationList[ BufferId ].W; } set + { + Vec4 temp = GlobalBuffer.CoordAndRotationList[ + BufferId ]; + temp.W = value; + GlobalBuffer.CoordAndRotationList[ + BufferId ] = temp; + } } - public float Scale - { - get { return GlobalBuffer.ScalingList[ BufferId ]; } - set { GlobalBuffer.ScalingList[ BufferId ] = value; } - } + public float Scale { get { return GlobalBuffer.ScalingList[ BufferId ]; } set { GlobalBuffer.ScalingList[ + BufferId ] = value; } } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - internal set; - } + public IInstancingBuffer GlobalBuffer { get; internal set; } - public int BufferId - { - get; - internal set; - } + public int BufferId { get; internal set; } - public Vec3 CenterPositionGlobal - { - get; - internal set; - } + public Vec3 CenterPositionGlobal { get; internal set; } - public Vec3 Coord - { - get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } - set { GlobalBuffer.CoordAndRotationList[ BufferId ] = new Vec4( - value.reg ); } - } + public Vec3 Coord { get { return GlobalBuffer.CoordAndRotationList[ BufferId ].XYZ; } set { GlobalBuffer.CoordAndRotationList[ + BufferId ] = new Vec4( + value.reg ); } } public void Move() { diff --git a/StgSharp.Common/Geometries/IInstancingBuffer.cs b/StgSharp.Common/Geometries/IInstancingBuffer.cs index 85e0841b..398e6982 100644 --- a/StgSharp.Common/Geometries/IInstancingBuffer.cs +++ b/StgSharp.Common/Geometries/IInstancingBuffer.cs @@ -39,35 +39,17 @@ 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 CoordAndRotationList { get; } - internal List ScalingList - { - get; - } + internal List ScalingList { get; } } } diff --git a/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs index e16686bf..b77e0b28 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Cordinate.cs @@ -47,14 +47,11 @@ namespace StgSharp.Geometries internal Matrix32 axis; /// - /// The _origin of this coordinate. + /// The _origin of this coordinate. /// public Vec3 origin; - public PartialPlainCoordinate( - Vec3 origin, - Vec3 horiziontial, - Vec3 vertical ) + public PartialPlainCoordinate( Vec3 origin, Vec3 horiziontial, Vec3 vertical ) { this.origin = origin; axis = new Matrix32(); @@ -66,12 +63,12 @@ namespace StgSharp.Geometries } /// - /// The horizontial axis of the coordinate. Point to the right direction. + /// The horizontial axis of the coordinate. Point to the right direction. /// 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 Vec3 axis_V => axis.colum1; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs index a6773c55..6d47b6c0 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/IPlainEntity.cs @@ -41,11 +41,7 @@ namespace StgSharp.Geometries public interface IPlainEntity { - public Vec2 CenterPosition - { - get; - set; - } + public Vec2 CenterPosition { get; set; } public bool CollideWith( IPlainEntity entity ); diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs index d9581574..41c0c95a 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/ParticleOnPlain.cs @@ -53,29 +53,13 @@ namespace StgSharp.Geometries ( ( IInstancingBuffer )buffer ).InstanceList.Add( this ); } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - set; - } + public IInstancingBuffer GlobalBuffer { get; set; } - public int BufferId - { - get; - set; - } + public int BufferId { get; set; } - Vec3 IInstancing.CenterPositionGlobal - { - get; - set; - } + Vec3 IInstancing.CenterPositionGlobal { get; set; } bool IPlainEntity.CollideWith( IPlainEntity entity ) { diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs index dd5466bf..8679605d 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainGeometry.cs @@ -37,7 +37,7 @@ using System.ComponentModel; namespace StgSharp.Geometries { /// - /// Plain geometry only contains straight sides. + /// Plain geometry only contains straight sides. /// public abstract class PlainGeometry : IGeometry { @@ -58,10 +58,7 @@ namespace StgSharp.Geometries public int VertexCount => this.vertexMat.Length; - public abstract ReadOnlySpan VertexIndices - { - get; - } + public abstract ReadOnlySpan VertexIndices { get; } #pragma warning disable CA1819 public Vec4[] VertexStream => vertexMat; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs index 86e54b61..aa5fae7a 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Define/PlainInstancingBuffer.cs @@ -85,12 +85,12 @@ namespace StgSharp.Geometries { get { - if( coordArray.Length != coordList.Capacity ) { + if( coordArray.Length != coordList.Capacity ) + { FieldInfo fieldInfo = typeof( List ). - GetField( - "_items", - BindingFlags.NonPublic | BindingFlags.Instance ); - if( fieldInfo == null ) { + GetField( "_items", BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) + { #pragma warning disable CA1065 #pragma warning disable CA2201 throw new NullReferenceException(); @@ -107,12 +107,12 @@ namespace StgSharp.Geometries { get { - if( scaleArray.Length != coordList.Capacity ) { + if( scaleArray.Length != coordList.Capacity ) + { FieldInfo fieldInfo = typeof( List ). - GetField( - "_items", - BindingFlags.NonPublic | BindingFlags.Instance ); - if( fieldInfo == null ) { + GetField( "_items", BindingFlags.NonPublic | BindingFlags.Instance ); + if( fieldInfo == null ) + { #pragma warning disable CA1065 #pragma warning disable CA2201 throw new NullReferenceException(); @@ -167,8 +167,7 @@ namespace StgSharp.Geometries temp.BufferId = instance.BufferId; coordList[ instance.BufferId ] = coordList[ coordList.Count - 1 ]; - scalingList[ instance.BufferId ] = scalingList[ - scalingList.Count - 1 ]; + scalingList[ instance.BufferId ] = scalingList[ scalingList.Count - 1 ]; instanceList.RemoveAt( instanceList.Count - 1 ); coordList.RemoveAt( coordList.Count - 1 ); @@ -185,7 +184,8 @@ namespace StgSharp.Geometries protected virtual void Dispose( bool disposing ) { - if( !disposedValue ) { + if( !disposedValue ) + { if( disposing ) { mutex.Dispose(); } @@ -204,8 +204,7 @@ namespace StgSharp.Geometries } } - IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException( - ); + IGeometry IInstancingBuffer.TypicalShape => throw new NotImplementedException(); #region field of mem opt diff --git a/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs index 98b877de..a8467908 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Parallelogram.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -44,18 +43,19 @@ namespace StgSharp.Geometries internal Point center; public Parallelogram( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float 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 ) { + 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 ); @@ -64,19 +64,20 @@ namespace StgSharp.Geometries } public Parallelogram( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 ) { #if DEBUG - if( this[ 0 ].Coord + this[ 2 ].Coord != this[ 1 ].Coord + this[ 3 ].Coord ) { + 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 ); diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs index 7af184cc..62492a96 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon4.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -56,11 +55,7 @@ namespace StgSharp.Geometries vertexMat = rawCoord; } - public Polygon4( - Point topLeft, - Point topRight, - Point bottomRight, - Point bottomLeft ) + public Polygon4( Point topLeft, Point topRight, Point bottomRight, Point bottomLeft ) : base( PlainCoordinate.StandardPlainCoordination ) { this[ 0 ] = topLeft; @@ -70,12 +65,12 @@ namespace StgSharp.Geometries } public Polygon4( - CoordinationBase coordinate, - PlainCoordinate coordination, - Point topLeft, - Point topRight, - Point bottomRight, - Point bottomLeft ) + CoordinationBase coordinate, + PlainCoordinate coordination, + Point topLeft, + Point topRight, + Point bottomRight, + Point bottomLeft ) : base( coordinate ) { this[ 0 ] = topLeft; @@ -85,14 +80,14 @@ namespace StgSharp.Geometries } public Polygon4( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) : base( PlainCoordinate.StandardPlainCoordination ) { vertexMat = new Vec4[4]; @@ -104,15 +99,15 @@ namespace StgSharp.Geometries } public Polygon4( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y, + float v3x, + float v3y ) : base( coordination ) { vertexMat = new Vec4[4]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs index 3ddbc743..83a20618 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon5.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -48,16 +47,16 @@ namespace StgSharp.Geometries } public Polygon5( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y, - float v4x, - float v4y ) + 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 Vec4[5]; @@ -69,17 +68,17 @@ namespace StgSharp.Geometries } public Polygon5( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y, - float v4x, - float v4y ) + PlainCoordinate 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 Vec4[5]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs index a7b45881..74c3db33 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Polygon6.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -48,14 +47,14 @@ namespace StgSharp.Geometries } public Polygon6( - PlainCoordinate coordination, - Vec2 vert0, - Vec2 vert1, - Vec2 vert2, - Vec2 vert3, - Vec2 vert4, - Vec2 vert5, - Vec2 vert6 ) + PlainCoordinate coordination, + Vec2 vert0, + Vec2 vert1, + Vec2 vert2, + Vec2 vert3, + Vec2 vert4, + Vec2 vert5, + Vec2 vert6 ) : base( coordination ) { vertexMat = new Vec4[6]; diff --git a/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs index 6d79fb5d..30efc148 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Rectangle.cs @@ -39,14 +39,14 @@ namespace StgSharp.Geometries { public Rectangle( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float 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 @@ -59,15 +59,15 @@ namespace StgSharp.Geometries } public Rectangle( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float v3y ) + 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 ) { #if DEBUG @@ -80,10 +80,14 @@ namespace StgSharp.Geometries } /// - /// Calculate movement to center + /// Calculate movement to center /// - /// CurrentBlueprint time tick - /// + /// + /// CurrentPipeline time tick + /// + /// + /// + /// public virtual Vec3 MovCenter( uint tick ) { return default( Vec3 ); diff --git a/StgSharp.Common/Geometries/PlainGeometry/Square.cs b/StgSharp.Common/Geometries/PlainGeometry/Square.cs index c4a5ce8a..dfff2bfa 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Square.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Square.cs @@ -35,20 +35,20 @@ using System.Numerics; namespace StgSharp.Geometries { /// - /// A square + /// A square /// public class Square : Rectangle { public Square( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y, - float v3x, - float 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 ) { } diff --git a/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs index 04933c7f..abaf5939 100644 --- a/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs +++ b/StgSharp.Common/Geometries/PlainGeometry/Triangle.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.Math; @@ -57,10 +56,10 @@ namespace StgSharp.Geometries } public Triangle( - PlainCoordinate coordination, - Point vertex01, - Point vertex02, - Point vertex03 ) + PlainCoordinate coordination, + Point vertex01, + Point vertex02, + Point vertex03 ) : base( coordination ) { this[ 0 ] = vertex01; @@ -68,13 +67,7 @@ namespace StgSharp.Geometries this[ 2 ] = vertex03; } - public Triangle( - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y ) + public Triangle( float v0x, float v0y, float v1x, float v1y, float v2x, float v2y ) : base( PlainCoordinate.StandardPlainCoordination ) { this[ 0 ] = new Point( v0x, v0y, 0 ); @@ -83,13 +76,13 @@ namespace StgSharp.Geometries } public Triangle( - PlainCoordinate coordination, - float v0x, - float v0y, - float v1x, - float v1y, - float v2x, - float v2y ) + PlainCoordinate coordination, + float v0x, + float v0y, + float v1x, + float v1y, + float v2x, + float v2y ) : base( coordination ) { this[ 0 ] = new Point( v0x, v0y, 0 ); diff --git a/StgSharp.Common/Geometries/Point.cs b/StgSharp.Common/Geometries/Point.cs index 08af0df4..f7ce2558 100644 --- a/StgSharp.Common/Geometries/Point.cs +++ b/StgSharp.Common/Geometries/Point.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Point.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs b/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs new file mode 100644 index 00000000..ecbd9b6b --- /dev/null +++ b/StgSharp.Common/Geometries/SpaceGeometry/TriangulatedSurface.cs @@ -0,0 +1,145 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="TriangulatedSurface.cs" +// Project: StepVisualizer +// 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.HighPerformance; +using StgSharp.Math; +using StgSharp.Math.HighPrecision; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; + +namespace StgSharp.Geometries +{ + public class TriangulatedSurface + { + + private HashSet<(int begin,int end)> _sides; + + private List> _sideIndices; + private List _triangleIndices; + private List _vertices; + + public TriangulatedSurface() + { + _triangleIndices = new List(); + _vertices = new List(); + _sides = new HashSet<(int,int)>(); + _sideIndices = new List>(); + } + + /**/ + public IEnumerable> SideIndicesEnumeratble + { + get => _sideIndices ; + } + + /* + public Triangle GetTriangle( int index ) + { + Vec3HP v1,v2,v3; + int t = index * 3; + v1 = _vertices[ t + 0 ]; + v2 = _vertices[ t + 1 ]; + v3 = _vertices[ t + 2 ]; + return new Triangle( v1, v2, v3 ); + } + /**/ + + public Span VertexSpan + { + get => CollectionsMarshal.AsSpan( _vertices ); + } + + public Span TriangleIndicesSpan + { + get => CollectionsMarshal.AsSpan( _triangleIndices ); + } + + /**/ + public void AddIndicesByOrder( int v1, int v2, int v3 ) + { + _triangleIndices.Add( v1 ); + _triangleIndices.Add( v2 ); + _triangleIndices.Add( v3 ); + if( !( _sides.Remove( (v1,v2) ) || _sides.Remove( (v2, v1) ) ) ) { + _sides.Add( (v1, v2) ); + } + if( !( _sides.Remove( (v2, v3) ) || _sides.Remove( (v3, v2) ) ) ) { + _sides.Add( (v2, v3) ); + } + if( !( _sides.Remove( (v3, v1) ) || _sides.Remove( (v1, v3) ) ) ) { + _sides.Add( (v3, v1) ); + } + } + + public void AddVertexByOrder( Vec3 vertex ) + { + _vertices.Add( vertex ); + } + + public int TriangleCount() + { + return _triangleIndices.Count / 3; + } + + public void TrimExcess() + { + _triangleIndices.TrimExcess(); + _vertices.TrimExcess(); + Dictionary side_dictionary = _sides.ToDictionary( x => x.begin, x => x.end ); + int begin = side_dictionary.First().Key; + List sideLoop = new List( begin ); + _sideIndices.Add( sideLoop ); + while( side_dictionary.Count > 0 ) + { + if( side_dictionary.Remove( begin, out begin ) ) + { + sideLoop.Add( begin ); + } else + { + begin = side_dictionary.First().Key; + sideLoop = new List( begin ); + _sideIndices.Add( sideLoop ); + } + } + _sideIndices.TrimExcess(); + } + + public int VertexCount() + { + return _vertices.Count; + } + + } +} diff --git a/StgSharp.Common/Global.cs b/StgSharp.Common/Global.cs index e08b119f..3b5610ec 100644 --- a/StgSharp.Common/Global.cs +++ b/StgSharp.Common/Global.cs @@ -1,4 +1,34 @@ -// This file is used by Code Analysis to maintain SuppressMessage +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Global.cs" +// Project: StepVisualizer +// 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. +// +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// This file is used by Code Analysis to maintain SuppressMessage // attributes that are applied to this project. // Project-level suppressions either have no target or are given // a specific target and scoped to a namespace, type, member, etc. @@ -9,13 +39,63 @@ global using StgSharp.Internal.OpenGL; using System.Diagnostics.CodeAnalysis; -[assembly: SuppressMessage("Design", "CA1008:枚举应具有零值", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.ShaderStatus")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``2(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``3(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "member", Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``4(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2,``3}")] -[assembly: SuppressMessage("Naming", "CA1715:标识符应具有正确的前缀", Justification = "<挂起>", Scope = "type", Target = "~T:StgSharp.Graphics.OpenGL.Uniform`4")] -[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.IViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] -[assembly: SuppressMessage("Design", "CA1043:将整型或字符串参数用于索引器", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)")] -[assembly: SuppressMessage("Performance", "CA1864:首选 \"IDictionary.TryAdd(TKey, TValue)\" 方法", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.MVVM.View.ViewBase.ViewRender`1.Item(System.String)")] -[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Keys")] -[assembly: SuppressMessage("Design", "CA1033:接口方法应可由子类型调用", Justification = "<挂起>", Scope = "member", Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Values")] +[assembly: SuppressMessage( + "Design", + "CA1008:枚举应具有零值", + Justification = "<挂起>", + Scope = "type", + Target = "~T:StgSharp.Graphics.OpenGL.ShaderStatus" )] +[assembly: SuppressMessage( + "Naming", + "CA1715:标识符应具有正确的前缀", + Justification = "<挂起>", + Scope = "member", + Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``2(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1}" )] +[assembly: SuppressMessage( + "Naming", + "CA1715:标识符应具有正确的前缀", + Justification = "<挂起>", + Scope = "member", + Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``3(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2}" )] +[assembly: SuppressMessage( + "Naming", + "CA1715:标识符应具有正确的前缀", + Justification = "<挂起>", + Scope = "member", + Target = "~M:StgSharp.Graphics.OpenGL.ShaderProgram.GetUniform``4(System.String)~StgSharp.Graphics.OpenGL.Uniform{``0,``1,``2,``3}" )] +[assembly: SuppressMessage( + "Naming", + "CA1715:标识符应具有正确的前缀", + Justification = "<挂起>", + Scope = "type", + Target = "~T:StgSharp.Graphics.OpenGL.Uniform`4" )] +[assembly: SuppressMessage( + "Design", + "CA1043:将整型或字符串参数用于索引器", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.MVVM.ViewBase.IViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)" )] +[assembly: SuppressMessage( + "Design", + "CA1043:将整型或字符串参数用于索引器", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.MVVM.ViewBase.ViewResponder`1.Item(StgSharp.Controlling.UsrActivity.ITrigger)" )] +[assembly: SuppressMessage( + "Performance", + "CA1864:首选 \"IDictionary.TryAdd(TKey, TValue)\" 方法", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.MVVM.ViewBase.ViewRender`1.Item(System.String)" )] +[assembly: SuppressMessage( + "Design", + "CA1033:接口方法应可由子类型调用", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Keys" )] +[assembly: SuppressMessage( + "Design", + "CA1033:接口方法应可由子类型调用", + Justification = "<挂起>", + Scope = "member", + Target = "~P:StgSharp.Collections.IBidirectionalDictionary`2.System#Collections#Generic#IDictionary#Values" )] diff --git a/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs index e41a960a..017be4ec 100644 --- a/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs +++ b/StgSharp.Common/Graphics/CPUanimation/ImageHelper.cs @@ -38,11 +38,7 @@ 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 ) ); @@ -58,7 +54,8 @@ namespace StgSharp.Graphics i.Height = height; i.Width = width; i.PixelUpdateCount++; - switch( move ) { + switch( move ) + { case ImageMovement.Discard: break; case ImageMovement.Top: diff --git a/StgSharp.Common/Graphics/Define/BufferObjectBase.cs b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs index 1ea96a71..846f4d24 100644 --- a/StgSharp.Common/Graphics/Define/BufferObjectBase.cs +++ b/StgSharp.Common/Graphics/Define/BufferObjectBase.cs @@ -39,7 +39,7 @@ using System.Threading.Tasks; namespace StgSharp.Graphics { /// - /// Interface of all kinds OpenGL Buffer objects + /// Interface of all kinds OpenGL Buffer objects /// public abstract class BufferObjectBase : IDisposable { @@ -48,16 +48,22 @@ namespace StgSharp.Graphics protected RenderStream binding; /// - /// Get the only handle to one of the Object instance + /// Get the only handle to one of the Object instance /// - /// - /// + /// + /// + /// + /// + /// + /// public GlHandle this[ int index ] => _bufferHandle[ index ]; /// - /// Bind a Buffer instance to OpenGL + /// Bind a Buffer instance to OpenGL /// - /// Index of handle of the object in this instance to be bind + /// + /// Index of handle of the object in this instance to be bind + /// public abstract void Bind( int index ); public void Dispose() diff --git a/StgSharp.Common/Graphics/Image.cs b/StgSharp.Common/Graphics/Image.cs index 40aca0e1..193d86bc 100644 --- a/StgSharp.Common/Graphics/Image.cs +++ b/StgSharp.Common/Graphics/Image.cs @@ -28,8 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal; using StgSharp.Graphics.OpenGL; +using StgSharp.Internal; using StgSharp.Math; using System; @@ -73,7 +73,8 @@ namespace StgSharp.Graphics { get { - if( ( _data.Length == 0 ) || ( _data == null ) ) { + if( ( _data.Length == 0 ) || ( _data == null ) ) + { GetBytes(); return _data!; } @@ -84,7 +85,7 @@ namespace StgSharp.Graphics public ImageChannel Channel => _rawInfo.Channel; /// - /// Hash code of time pixels updated last time. + /// Hash code of time pixels updated last time. /// public int PixelUpdateCount { @@ -106,8 +107,7 @@ namespace StgSharp.Graphics internal set => _rawInfo.Width = value; } - public int PixelSize => ImageInfo.GetPixelSize( - _rawInfo.pixelLayout, _rawInfo.Channel ); + public int PixelSize => ImageInfo.GetPixelSize( _rawInfo.pixelLayout, _rawInfo.Channel ); public PixelChannelLayout PixelLayout { @@ -134,9 +134,9 @@ namespace StgSharp.Graphics } public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - byte[] stream ) + (int width, int height) size, + ImageChannel channel, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -152,10 +152,10 @@ namespace StgSharp.Graphics } public static Image FromMemory( - (int width, int height) size, - ImageChannel channel, - PixelChannelLayout layout, - byte[] stream ) + (int width, int height) size, + ImageChannel channel, + PixelChannelLayout layout, + byte[] stream ) { ImageInfo _info = new ImageInfo { @@ -172,11 +172,10 @@ namespace StgSharp.Graphics public unsafe byte[] GetBytes() { - if( _data.Length == 0 ) { - int size = Width * Height * ImageInfo.GetPixelSize( - PixelLayout, Channel ); - _data = new Span( ( byte* )_rawInfo.StreamPtr, - size ).ToArray(); + if( _data.Length == 0 ) + { + int size = Width * Height * ImageInfo.GetPixelSize( PixelLayout, Channel ); + _data = new Span( ( byte* )_rawInfo.StreamPtr, size ).ToArray(); fixed( ImageInfo* pptr = &_rawInfo ) { InternalIO.InternalUnloadImage( pptr ); } @@ -187,10 +186,7 @@ namespace StgSharp.Graphics public Image ProvideImage() => this; - internal static Image FromMemory( - ImageInfo info, - byte[] data, - int operationCount ) + internal static Image FromMemory( ImageInfo info, byte[] data, int operationCount ) { return new Image { @@ -206,13 +202,9 @@ namespace StgSharp.Graphics } } - } namespace StgSharp.Graphics.OpenGL { - public static partial class GlHelper - { - - } + public static partial class GlHelper { } } \ No newline at end of file diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs index 61b3aee1..b94fad60 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/AutoTexture.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Commom.Collections; using System; using System.Collections.Generic; @@ -42,11 +41,11 @@ 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 { @@ -54,8 +53,7 @@ namespace StgSharp.Graphics.OpenGL private TextureProperty[] propertyCache; private BidirectionalDictionary imageIndexMap = new BidirectionalDictionary( ); - private Dictionary imageUpdateIndex = new Dictionary( - ); + private Dictionary imageUpdateIndex = new Dictionary(); private int _size, _currentIndex; private LinkedList usedTextureIndex; @@ -69,8 +67,7 @@ namespace StgSharp.Graphics.OpenGL texturePackage = texture; _size = texture.Count; imageIndexMap = new BidirectionalDictionary(); - unusedTextureUnitIndex = new Queue( - Enumerable.Range( 0, _size ) ); + unusedTextureUnitIndex = new Queue( Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } @@ -80,8 +77,7 @@ namespace StgSharp.Graphics.OpenGL this._size = textureObjectSize; imageIndexMap = new BidirectionalDictionary(); texturePackage = new TextureGL( textureObjectSize, binding ); - unusedTextureUnitIndex = new Queue( - Enumerable.Range( 0, _size ) ); + unusedTextureUnitIndex = new Queue( Enumerable.Range( 0, _size ) ); usedTextureIndex = new LinkedList(); propertyCache = new TextureProperty[_size]; } @@ -105,29 +101,34 @@ namespace StgSharp.Graphics.OpenGL 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 ] ) { + if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) + { texturePackage.LoadTexture( index, i ); //GL.Assert(true); } - } else { + } else + { _currentIndex = index; //GL.Assert(true); texturePackage.Bind2D( index ); //GL.Assert(true); texturePackage.Set2dProperty( index, property ); //GL.Assert(true); - if( i.PixelUpdateCount != imageUpdateIndex[ i ] ) { + 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 ); @@ -136,7 +137,8 @@ namespace StgSharp.Graphics.OpenGL usedTextureIndex.AddLast( newIndex ); propertyCache[ newIndex ] = property; imageUpdateIndex[ i ] = i.PixelUpdateCount; - } else { + } else + { //recycle from current int reusedIndex = usedTextureIndex.First!.Value; usedTextureIndex.RemoveFirst(); @@ -151,8 +153,7 @@ namespace StgSharp.Graphics.OpenGL public static AutoTextureGL ToAuto( [NotNull]TextureGL texture ) { if( texture.IndexOfCurrentTexture != -1 ) { - throw new InvalidOperationException( - "Texture to be converted has been editted." ); + throw new InvalidOperationException( "Texture to be converted has been editted." ); } return new AutoTextureGL( texture ); } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs index c624fe01..8f8e468f 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/EBO.cs @@ -43,9 +43,9 @@ 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 { @@ -58,29 +58,21 @@ namespace StgSharp.Graphics.OpenGL 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, INumber { - 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 ) + public void SetValue( int index, ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct, INumber { - 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 ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs index 169f6fce..b4858935 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/FBO.cs @@ -63,10 +63,13 @@ namespace StgSharp.Graphics.OpenGL } /// - /// 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 _label 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 + /// + /// Index of object to be binded in handle set + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] public override unsafe void Bind( int index ) { @@ -74,11 +77,15 @@ namespace StgSharp.Graphics.OpenGL } /// - /// 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 _label 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 + /// + /// 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 ) { @@ -88,8 +95,7 @@ namespace StgSharp.Graphics.OpenGL [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 ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs index 56d16466..29b52b24 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/RBO.cs @@ -51,19 +51,17 @@ namespace StgSharp.Graphics.OpenGL 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" ); + World.LogWarning( "FrameBuffer is larger than current canvas binding" ); } } protected override void Dispose( bool disposing ) { - foreach( GlHandle item in _bufferHandle ) { + foreach( GlHandle item in _bufferHandle ) + { Console.WriteLine( "removing a render buffer" ); GL.DeleteRenderBuffer( item ); } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs index 033cefe7..84bf7ab5 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/TextureGL.cs @@ -84,16 +84,20 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Load an to certain texture. + /// Load an to certain texture. /// - /// - /// + /// + /// + /// + /// + /// + /// public unsafe void LoadTexture( int index, Image i ) { byte[] handle = i.PixelBuffer; _gl.TextureImage2d( - Texture2DTarget.Texture2D, 0, i.Channel, ( uint )i.Width, - ( uint )i.Height, 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 ); } @@ -101,50 +105,45 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Set2dFilterProperty( - int index, - TextureFilter onMinify, - TextureFilter onMagnify ) + int index, + TextureFilter onMinify, + 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 )] public void Set2dWrapProperty( - int index, - TextureWrap onHorizontial, - TextureWrap onVertical ) + int index, + TextureWrap onHorizontial, + 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 @@ -162,10 +161,10 @@ namespace StgSharp.Graphics.OpenGL [FieldOffset( 12 )] private TextureWrap vert; public TextureProperty( - TextureFilter onMagnify, - TextureFilter onMinify, - TextureWrap onHorizontial, - TextureWrap onVertical ) + TextureFilter onMagnify, + TextureFilter onMinify, + TextureWrap onHorizontial, + TextureWrap onVertical ) { FilterOnMagnify = onMagnify; FilterOnMinify = onMinify; @@ -205,8 +204,7 @@ namespace StgSharp.Graphics.OpenGL public override int GetHashCode() { return HashCode.Combine( - FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, - WrapOnVertical ); + FilterOnMagnify, FilterOnMagnify, WrapOnHorizontial, WrapOnVertical ); } public override string ToString() @@ -214,30 +212,25 @@ namespace StgSharp.Graphics.OpenGL return $"FilterOnMagnify:{FilterOnMagnify}, " + $"FilterOnMagnify:{FilterOnMagnify}, " + $"WrapOnHorizontial:{WrapOnHorizontial}, " + $"WrapOnVertical:{WrapOnVertical}"; } - public static bool operator !=( - TextureProperty left, - TextureProperty right ) + public static bool operator !=( TextureProperty left, TextureProperty right ) { return left.mask != right.mask; } - public static bool operator ==( - TextureProperty left, - TextureProperty right ) + public static bool operator ==( TextureProperty left, TextureProperty right ) { return left.mask == right.mask; } public static implicit operator TextureProperty( - ( + ( TextureFilter onMagnify, TextureFilter onMinify, TextureWrap onHorizontial, TextureWrap onVertical ) propertyValueTuple ) { return new TextureProperty( propertyValueTuple.onMagnify, propertyValueTuple.onMinify, - propertyValueTuple.onHorizontial, - propertyValueTuple.onVertical ); + propertyValueTuple.onHorizontial, propertyValueTuple.onVertical ); } } diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs index 28ecd5a2..46cc1121 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VAO.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="VAO.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Runtime.CompilerServices; @@ -59,15 +58,15 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public void SetVertexAttribute( - uint index, - int vertexLength, - TypeCode dataType, - bool isNomalized, - uint stride, - int pointer ) + uint attributeIndex, + int vertexLength, + TypeCode dataType, + bool isNomalized, + uint stride, + int pointer ) { GL.SetVertexAttribute( - index, vertexLength, dataType, isNomalized, stride, pointer ); + attributeIndex, vertexLength, dataType, isNomalized, stride, pointer ); } protected override sealed void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs index 08335369..f0ce98cb 100644 --- a/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs +++ b/StgSharp.Common/Graphics/OpenGL/Buffer/VBO.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="VBO.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -65,16 +65,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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, IMatrix { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -82,16 +87,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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, INumber { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -99,16 +109,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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,INumber { GL.BindBuffer( BufferType.ArrayBuffer, _bufferHandle[ index ] ); @@ -116,16 +131,21 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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 ] ); @@ -133,21 +153,25 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Set _data to current vertex Buffer object + /// 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 ) + /// + /// 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.SetBufferVectorData( BufferType.ArrayBuffer, vectorArray, usage ); } protected override sealed void Dispose( bool disposing ) diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs index 9f37e056..b2055b7d 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/IglConvertable.cs @@ -49,14 +49,14 @@ namespace StgSharp.Graphics.ShaderEdit /// /// /// - public void GainAllUniforms( - ShaderProgram source, - params string[] uniformName ); + public void GainAllUniforms( ShaderProgram source, params string[] uniformName ); /// /// /// - /// + /// + /// + /// public ShaderStruct GetConvertedGLtype(); /// diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs index 2e427b18..59eac4ca 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Shader.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Shader.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -33,6 +33,7 @@ using StgSharp.Internal; using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.IO; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -83,14 +84,14 @@ 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 ) + public void AttachTo( int index, [NotNull]ShaderProgram target ) { GL.AttachShader( target.handle, handle[ index ] ); } @@ -187,7 +188,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -202,7 +203,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -216,7 +217,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// @@ -232,7 +233,7 @@ namespace StgSharp.Graphics.OpenGL /// /// Get a uniform form current shader, the value type of the uniform should be provided. /// - /// + /// /// ContextName of the Uniform in shader code /// /// diff --git a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs index 70349a10..4f3313f4 100644 --- a/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs +++ b/StgSharp.Common/Graphics/OpenGL/ShaderEdit/Uniform.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Uniform.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,6 +35,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Numerics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Text; @@ -65,7 +66,10 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } @@ -82,14 +86,15 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = 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() { } @@ -101,13 +106,15 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = 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 where V: struct where W: struct { @@ -121,7 +128,10 @@ namespace StgSharp.Graphics.OpenGL internal static Uniform FromHandle( GlHandle handle ) { - return new Uniform { id = handle }; + return new Uniform + { + id = handle + }; } } @@ -133,14 +143,13 @@ namespace StgSharp.Graphics.OpenGL public void SetUniformValue( [NotNull] 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( - [NotNull]Uniform uniform, - Vec4 vec ) + [NotNull]Uniform uniform, + Vec4 vec ) { Vec4 temp = vec; Context.glUniform1fv( uniform.id.SignedValue, 4, &temp.reg ); @@ -166,31 +175,28 @@ namespace StgSharp.Graphics.OpenGL } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public void SetUniformValue( - [NotNull] Uniform uniform, - float v0, - float v1 ) + public void SetUniformValue( [NotNull] Uniform uniform, float v0, float v1 ) { Context.glUniform2f( uniform.id.SignedValue, v0, v1 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] public void SetUniformValue( - [NotNull] Uniform uniform, - float v0, - float v1, - float v2 ) + [NotNull] Uniform uniform, + float v0, + float v1, + float v2 ) { Context.glUniform3f( uniform.id.SignedValue, v0, v1, v2 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] public void SetUniformValue( - [NotNull] Uniform uniform, - float v0, - float v1, - float v2, - float v3 ) + [NotNull] Uniform uniform, + float v0, + float v1, + float v2, + float v3 ) { Context.glUniform4f( uniform.id.SignedValue, v0, v1, v2, v3 ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs index d06f7648..3a77e3cc 100644 --- a/StgSharp.Common/Graphics/OpenGL/glApiManager.cs +++ b/StgSharp.Common/Graphics/OpenGL/glApiManager.cs @@ -31,7 +31,7 @@ using StgSharp.HighPerformance; using StgSharp.Math; using StgSharp.MVVM; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -60,14 +60,19 @@ namespace StgSharp.Graphics.OpenGL //-------------------------------------------------------------------------------- /// - /// Get the function pointer of given OpenGL api _name + /// Get the function pointer of given OpenGL api _label /// - /// ContextName of the OpenGL api - /// The funtion pointer of the api in stream of + /// + /// 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 ) { + if( ret == default ) + { InternalIO.InternalAppendLog( $"Cannot load OpenGL api called {name}, this api may not exist or supported." ); return ret; @@ -76,9 +81,11 @@ namespace StgSharp.Graphics.OpenGL } /// - /// 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 + /// + /// The handle to current OpenGL viewPortDisplay + /// public static unsafe void LoadOpenGLApiTo( IntPtr contextHandle ) { OpenglContext* context = ( OpenglContext* )contextHandle; @@ -87,7 +94,8 @@ namespace StgSharp.Graphics.OpenGL return; } IntPtr proc = loader( "glGetString" ); - if( proc == IntPtr.Zero ) { + if( proc == IntPtr.Zero ) + { #if DEBUG Console.WriteLine( "Cannot load GL." ); #endif @@ -97,14 +105,13 @@ namespace StgSharp.Graphics.OpenGL string coreVersion; if( context->glGetString( glVersion ) == IntPtr.Zero ) { - InternalIO.InternalWriteLog( - "Failed to call glGetString", LogType.Error ); + InternalIO.InternalWriteLog( "Failed to call glGetString", LogType.Error ); } - coreVersion = Marshal.PtrToStringAnsi( - context->glGetString( glVersion ) ) ?? + coreVersion = Marshal.PtrToStringAnsi( context->glGetString( glVersion ) ) ?? string.Empty; - foreach( string branch in glBranch ) { + foreach( string branch in glBranch ) + { if( coreVersion.Contains( branch ) ) { coreVersion.Replace( branch, string.Empty ); } @@ -114,7 +121,8 @@ namespace StgSharp.Graphics.OpenGL int minorVersion = int.Parse( versionSep[ 1 ] ); CheckCoreVersion( majorVersion, minorVersion ); - try { + try + { #region load_core_gl LoadGLcore10( context, loader ); @@ -139,21 +147,24 @@ namespace StgSharp.Graphics.OpenGL #endregion load_core_gl } - catch( Exception ex ) { + catch( Exception ex ) + { if( ex.Message != "Final Version" ) { throw; } } uint code = context->glGetError(); - Console.WriteLine( code ); - if( code != 0 ) { + if( code != 0 ) + { + Console.WriteLine(code); throw new GlExecutionException( code ); } int extensionCount; context->glGetIntegerv( glConst.NUM_EXTENSIONS, &extensionCount ); - if( extensionCount == 0 ) { + if( extensionCount == 0 ) + { InternalIO.InternalWriteLog( "No supported OpenGL extensions are found.", LogType.Info ); return; @@ -161,7 +172,8 @@ namespace StgSharp.Graphics.OpenGL List extensions = new List(); - for( uint i = 0; i < extensionCount; i++ ) { + for( uint i = 0; i < extensionCount; i++ ) + { byte* strPtr = context->glGetStringi( glConst.EXTENSIONS, i ); extensions.Add( Marshal.PtrToStringAnsi( ( IntPtr )strPtr ) ); } @@ -172,2494 +184,3098 @@ namespace StgSharp.Graphics.OpenGL #region checkGLextensions - if( extensions.Contains( "gl_4DFX_multisample" ) ) { + if( extensions.Contains( "gl_4DFX_multisample" ) ) + { _4DFX_multisample = true; extensions.Remove( "gl_4DFX_multisample" ); } - if( extensions.Contains( "gl_3DFX_tbuffer" ) ) { + if( extensions.Contains( "gl_3DFX_tbuffer" ) ) + { _3DFX_tbuffer = true; extensions.Remove( "gl_3DFX_tbuffer" ); } - if( extensions.Contains( "gl_3DFX_texture_compression_FXT1" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_conservative_depth" ) ) + { AMD_conservative_depth = true; extensions.Remove( "glAMD_conservative_depth" ); } - if( extensions.Contains( "gl_AMD_debug_output" ) ) { + if( extensions.Contains( "gl_AMD_debug_output" ) ) + { AMD_debug_output = true; extensions.Remove( "glAMD_debug_output" ); } - if( extensions.Contains( "gl_AMD_depth_clamp_separate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_interleaved_elements" ) ) + { AMD_interleaved_elements = true; extensions.Remove( "glAMD_interleaved_elements" ); } - if( extensions.Contains( "gl_AMD_multi_draw_indirect" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_performance_monitor" ) ) + { AMD_performance_monitor = true; extensions.Remove( "glAMD_performance_monitor" ); } - if( extensions.Contains( "gl_AMD_pinned_memory" ) ) { + if( extensions.Contains( "gl_AMD_pinned_memory" ) ) + { AMD_pinned_memory = true; extensions.Remove( "glAMD_pinned_memory" ); } - if( extensions.Contains( "gl_AMD_query_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_sparse_texture" ) ) + { AMD_sparse_texture = true; extensions.Remove( "glAMD_sparse_texture" ); } - if( extensions.Contains( "gl_AMD_stencil_operation_extended" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_AMD_transform_feedback4" ) ) + { AMD_transform_feedback4 = true; extensions.Remove( "glAMD_transform_feedback4" ); } - if( extensions.Contains( "gl_AMD_vertex_shader_layer" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_client_storage" ) ) + { APPLE_client_storage = true; extensions.Remove( "glAPPLE_client_storage" ); } - if( extensions.Contains( "gl_APPLE_element_array" ) ) { + if( extensions.Contains( "gl_APPLE_element_array" ) ) + { APPLE_element_array = true; extensions.Remove( "glAPPLE_element_array" ); } - if( extensions.Contains( "gl_APPLE_fence" ) ) { + if( extensions.Contains( "gl_APPLE_fence" ) ) + { APPLE_fence = true; extensions.Remove( "glAPPLE_fence" ); } - if( extensions.Contains( "gl_APPLE_float_pixels" ) ) { + if( extensions.Contains( "gl_APPLE_float_pixels" ) ) + { APPLE_float_pixels = true; extensions.Remove( "glAPPLE_float_pixels" ); } - if( extensions.Contains( "gl_APPLE_flush_buffer_range" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_object_purgeable" ) ) + { APPLE_object_purgeable = true; extensions.Remove( "glAPPLE_object_purgeable" ); } - if( extensions.Contains( "gl_APPLE_rgb_422" ) ) { + if( extensions.Contains( "gl_APPLE_rgb_422" ) ) + { APPLE_rgb_422 = true; extensions.Remove( "glAPPLE_rgb_422" ); } - if( extensions.Contains( "gl_APPLE_row_bytes" ) ) { + if( extensions.Contains( "gl_APPLE_row_bytes" ) ) + { APPLE_row_bytes = true; extensions.Remove( "glAPPLE_row_bytes" ); } - if( extensions.Contains( "gl_APPLE_specular_vector" ) ) { + if( extensions.Contains( "gl_APPLE_specular_vector" ) ) + { APPLE_specular_vector = true; extensions.Remove( "glAPPLE_specular_vector" ); } - if( extensions.Contains( "gl_APPLE_texture_range" ) ) { + if( extensions.Contains( "gl_APPLE_texture_range" ) ) + { APPLE_texture_range = true; extensions.Remove( "glAPPLE_texture_range" ); } - if( extensions.Contains( "gl_APPLE_transform_hint" ) ) { + if( extensions.Contains( "gl_APPLE_transform_hint" ) ) + { APPLE_transform_hint = true; extensions.Remove( "glAPPLE_transform_hint" ); } - if( extensions.Contains( "gl_APPLE_vertex_array_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_APPLE_ycbcr_422" ) ) + { APPLE_ycbcr_422 = true; extensions.Remove( "glAPPLE_ycbcr_422" ); } - if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) { + if( extensions.Contains( "gl_ARB_ES2_compatibility" ) ) + { ARB_ES2_compatibility = true; extensions.Remove( "glARB_ES2_compatibility" ); } - if( extensions.Contains( "gl_ARB_ES3_1_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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_ES3_compatibility" ) ) + { ARB_ES3_compatibility = true; extensions.Remove( "glARB_ES3_compatibility" ); } - if( extensions.Contains( "gl_ARB_arrays_of_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_base_instance" ) ) + { ARB_base_instance = true; extensions.Remove( "glARB_base_instance" ); } - if( extensions.Contains( "gl_ARB_bindless_texture" ) ) { + if( extensions.Contains( "gl_ARB_bindless_texture" ) ) + { ARB_bindless_texture = true; extensions.Remove( "glARB_bindless_texture" ); } - if( extensions.Contains( "gl_ARB_blend_func_extended" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_buffer_storage" ) ) + { ARB_buffer_storage = true; extensions.Remove( "glARB_buffer_storage" ); } - if( extensions.Contains( "gl_ARB_cl_event" ) ) { + if( extensions.Contains( "gl_ARB_cl_event" ) ) + { ARB_cl_event = true; extensions.Remove( "glARB_cl_event" ); } - if( extensions.Contains( "gl_ARB_clear_buffer_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_clear_texture" ) ) + { ARB_clear_texture = true; extensions.Remove( "glARB_clear_texture" ); } - if( extensions.Contains( "gl_ARB_clip_control" ) ) { + if( extensions.Contains( "gl_ARB_clip_control" ) ) + { ARB_clip_control = true; extensions.Remove( "glARB_clip_control" ); } - if( extensions.Contains( "gl_ARB_color_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_compatibility" ) ) + { ARB_compatibility = true; extensions.Remove( "glARB_compatibility" ); } - if( extensions.Contains( "gl_ARB_compressed_texture_pixel_storage" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_conservative_depth" ) ) + { ARB_conservative_depth = true; extensions.Remove( "glARB_conservative_depth" ); } - if( extensions.Contains( "gl_ARB_copy_buffer" ) ) { + if( extensions.Contains( "gl_ARB_copy_buffer" ) ) + { ARB_copy_buffer = true; extensions.Remove( "glARB_copy_buffer" ); } - if( extensions.Contains( "gl_ARB_copy_image" ) ) { + if( extensions.Contains( "gl_ARB_copy_image" ) ) + { ARB_copy_image = true; extensions.Remove( "glARB_copy_image" ); } - if( extensions.Contains( "gl_ARB_cull_distance" ) ) { + if( extensions.Contains( "gl_ARB_cull_distance" ) ) + { ARB_cull_distance = true; extensions.Remove( "glARB_cull_distance" ); } - if( extensions.Contains( "gl_ARB_debug_output" ) ) { + if( extensions.Contains( "gl_ARB_debug_output" ) ) + { ARB_debug_output = true; extensions.Remove( "glARB_debug_output" ); } - if( extensions.Contains( "gl_ARB_depth_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_depth_clamp" ) ) + { ARB_depth_clamp = true; extensions.Remove( "glARB_depth_clamp" ); } - if( extensions.Contains( "gl_ARB_depth_texture" ) ) { + if( extensions.Contains( "gl_ARB_depth_texture" ) ) + { ARB_depth_texture = true; extensions.Remove( "glARB_depth_texture" ); } - if( extensions.Contains( "gl_ARB_derivative_control" ) ) { + if( extensions.Contains( "gl_ARB_derivative_control" ) ) + { ARB_derivative_control = true; extensions.Remove( "glARB_derivative_control" ); } - if( extensions.Contains( "gl_ARB_direct_state_access" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_draw_buffers" ) ) + { ARB_draw_buffers = true; extensions.Remove( "glARB_draw_buffers" ); } - if( extensions.Contains( "gl_ARB_draw_buffers_blend" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_draw_indirect" ) ) + { ARB_draw_indirect = true; extensions.Remove( "glARB_draw_indirect" ); } - if( extensions.Contains( "gl_ARB_draw_instanced" ) ) { + if( extensions.Contains( "gl_ARB_draw_instanced" ) ) + { ARB_draw_instanced = true; extensions.Remove( "glARB_draw_instanced" ); } - if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) { + if( extensions.Contains( "gl_ARB_enhanced_layouts" ) ) + { ARB_enhanced_layouts = true; extensions.Remove( "glARB_enhanced_layouts" ); } - if( extensions.Contains( "gl_ARB_explicit_attrib_location" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_fragment_program" ) ) + { ARB_fragment_program = true; extensions.Remove( "glARB_fragment_program" ); } - if( extensions.Contains( "gl_ARB_fragment_program_shadow" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_fragment_shader" ) ) + { ARB_fragment_shader = true; extensions.Remove( "glARB_fragment_shader" ); } - if( extensions.Contains( "gl_ARB_fragment_shader_interlock" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_framebuffer_object" ) ) + { ARB_framebuffer_object = true; extensions.Remove( "glARB_framebuffer_object" ); } - if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) { + if( extensions.Contains( "gl_ARB_framebuffer_sRGB" ) ) + { ARB_framebuffer_sRGB = true; extensions.Remove( "glARB_framebuffer_sRGB" ); } - if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) { + if( extensions.Contains( "gl_ARB_geometry_shader4" ) ) + { ARB_geometry_shader4 = true; extensions.Remove( "glARB_geometry_shader4" ); } - if( extensions.Contains( "gl_ARB_get_program_binary" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_gl_spirv" ) ) + { ARB_gl_spirv = true; extensions.Remove( "glARB_gl_spirv" ); } - if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) { + if( extensions.Contains( "gl_ARB_gpu_shader5" ) ) + { ARB_gpu_shader5 = true; extensions.Remove( "glARB_gpu_shader5" ); } - if( extensions.Contains( "gl_ARB_gpu_shader_fp64" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_imaging" ) ) + { ARB_imaging = true; extensions.Remove( "glARB_imaging" ); } - if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) { + if( extensions.Contains( "gl_ARB_indirect_parameters" ) ) + { ARB_indirect_parameters = true; extensions.Remove( "glARB_indirect_parameters" ); } - if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) { + if( extensions.Contains( "gl_ARB_instanced_arrays" ) ) + { ARB_instanced_arrays = true; extensions.Remove( "glARB_instanced_arrays" ); } - if( extensions.Contains( "gl_ARB_internalformat_query" ) ) { + if( extensions.Contains( "gl_ARB_internalformat_query" ) ) + { ARB_internalformat_query = true; extensions.Remove( "glARB_internalformat_query" ); } - if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) { + if( extensions.Contains( "gl_ARB_internalformat_query2" ) ) + { ARB_internalformat_query2 = true; extensions.Remove( "glARB_internalformat_query2" ); } - if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) { + if( extensions.Contains( "gl_ARB_invalidate_subdata" ) ) + { ARB_invalidate_subdata = true; extensions.Remove( "glARB_invalidate_subdata" ); } - if( extensions.Contains( "gl_ARB_map_buffer_alignment" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_matrix_palette" ) ) + { ARB_matrix_palette = true; extensions.Remove( "glARB_matrix_palette" ); } - if( extensions.Contains( "gl_ARB_multi_bind" ) ) { + if( extensions.Contains( "gl_ARB_multi_bind" ) ) + { ARB_multi_bind = true; extensions.Remove( "glARB_multi_bind" ); } - if( extensions.Contains( "gl_ARB_multi_draw_indirect" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_multisample" ) ) + { ARB_multisample = true; extensions.Remove( "glARB_multisample" ); } - if( extensions.Contains( "gl_ARB_multitexture" ) ) { + if( extensions.Contains( "gl_ARB_multitexture" ) ) + { ARB_multitexture = true; extensions.Remove( "glARB_multitexture" ); } - if( extensions.Contains( "gl_ARB_occlusion_query" ) ) { + if( extensions.Contains( "gl_ARB_occlusion_query" ) ) + { ARB_occlusion_query = true; extensions.Remove( "glARB_occlusion_query" ); } - if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) { + if( extensions.Contains( "gl_ARB_occlusion_query2" ) ) + { ARB_occlusion_query2 = true; extensions.Remove( "glARB_occlusion_query2" ); } - if( extensions.Contains( "gl_ARB_parallel_shader_compile" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_point_parameters" ) ) + { ARB_point_parameters = true; extensions.Remove( "glARB_point_parameters" ); } - if( extensions.Contains( "gl_ARB_point_sprite" ) ) { + if( extensions.Contains( "gl_ARB_point_sprite" ) ) + { ARB_point_sprite = true; extensions.Remove( "glARB_point_sprite" ); } - if( extensions.Contains( "gl_ARB_polygon_offset_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_provoking_vertex" ) ) + { ARB_provoking_vertex = true; extensions.Remove( "glARB_provoking_vertex" ); } - if( extensions.Contains( "gl_ARB_query_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_robustness" ) ) + { ARB_robustness = true; extensions.Remove( "glARB_robustness" ); } - if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) { + if( extensions.Contains( "gl_ARB_robustness_isolation" ) ) + { ARB_robustness_isolation = true; extensions.Remove( "glARB_robustness_isolation" ); } - if( extensions.Contains( "gl_ARB_sample_locations" ) ) { + if( extensions.Contains( "gl_ARB_sample_locations" ) ) + { ARB_sample_locations = true; extensions.Remove( "glARB_sample_locations" ); } - if( extensions.Contains( "gl_ARB_sample_shading" ) ) { + if( extensions.Contains( "gl_ARB_sample_shading" ) ) + { ARB_sample_shading = true; extensions.Remove( "glARB_sample_shading" ); } - if( extensions.Contains( "gl_ARB_sampler_objects" ) ) { + if( extensions.Contains( "gl_ARB_sampler_objects" ) ) + { ARB_sampler_objects = true; extensions.Remove( "glARB_sampler_objects" ); } - if( extensions.Contains( "gl_ARB_seamless_cube_map" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_ballot" ) ) + { ARB_shader_ballot = true; extensions.Remove( "glARB_shader_ballot" ); } - if( extensions.Contains( "gl_ARB_shader_bit_encoding" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_clock" ) ) + { ARB_shader_clock = true; extensions.Remove( "glARB_shader_clock" ); } - if( extensions.Contains( "gl_ARB_shader_draw_parameters" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shader_objects" ) ) + { ARB_shader_objects = true; extensions.Remove( "glARB_shader_objects" ); } - if( extensions.Contains( "gl_ARB_shader_precision" ) ) { + if( extensions.Contains( "gl_ARB_shader_precision" ) ) + { ARB_shader_precision = true; extensions.Remove( "glARB_shader_precision" ); } - if( extensions.Contains( "gl_ARB_shader_stencil_export" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_shadow" ) ) + { ARB_shadow = true; extensions.Remove( "glARB_shadow" ); } - if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) { + if( extensions.Contains( "gl_ARB_shadow_ambient" ) ) + { ARB_shadow_ambient = true; extensions.Remove( "glARB_shadow_ambient" ); } - if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) { + if( extensions.Contains( "gl_ARB_sparse_buffer" ) ) + { ARB_sparse_buffer = true; extensions.Remove( "glARB_sparse_buffer" ); } - if( extensions.Contains( "gl_ARB_sparse_texture" ) ) { + if( extensions.Contains( "gl_ARB_sparse_texture" ) ) + { ARB_sparse_texture = true; extensions.Remove( "glARB_sparse_texture" ); } - if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) { + if( extensions.Contains( "gl_ARB_sparse_texture2" ) ) + { ARB_sparse_texture2 = true; extensions.Remove( "glARB_sparse_texture2" ); } - if( extensions.Contains( "gl_ARB_sparse_texture_clamp" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_spirv_extensions" ) ) + { ARB_spirv_extensions = true; extensions.Remove( "glARB_spirv_extensions" ); } - if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) { + if( extensions.Contains( "gl_ARB_stencil_texturing" ) ) + { ARB_stencil_texturing = true; extensions.Remove( "glARB_stencil_texturing" ); } - if( extensions.Contains( "gl_ARB_sync" ) ) { + if( extensions.Contains( "gl_ARB_sync" ) ) + { ARB_sync = true; extensions.Remove( "glARB_sync" ); } - if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) { + if( extensions.Contains( "gl_ARB_tessellation_shader" ) ) + { ARB_tessellation_shader = true; extensions.Remove( "glARB_tessellation_shader" ); } - if( extensions.Contains( "gl_ARB_texture_barrier" ) ) { + if( extensions.Contains( "gl_ARB_texture_barrier" ) ) + { ARB_texture_barrier = true; extensions.Remove( "glARB_texture_barrier" ); } - if( extensions.Contains( "gl_ARB_texture_border_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_compression" ) ) + { ARB_texture_compression = true; extensions.Remove( "glARB_texture_compression" ); } - if( extensions.Contains( "gl_ARB_texture_compression_bptc" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_float" ) ) + { ARB_texture_float = true; extensions.Remove( "glARB_texture_float" ); } - if( extensions.Contains( "gl_ARB_texture_gather" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_rectangle" ) ) + { ARB_texture_rectangle = true; extensions.Remove( "glARB_texture_rectangle" ); } - if( extensions.Contains( "gl_ARB_texture_rg" ) ) { + if( extensions.Contains( "gl_ARB_texture_rg" ) ) + { ARB_texture_rg = true; extensions.Remove( "glARB_texture_rg" ); } - if( extensions.Contains( "gl_ARB_texture_rgb10_a2ui" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_stencil8" ) ) + { ARB_texture_stencil8 = true; extensions.Remove( "glARB_texture_stencil8" ); } - if( extensions.Contains( "gl_ARB_texture_storage" ) ) { + if( extensions.Contains( "gl_ARB_texture_storage" ) ) + { ARB_texture_storage = true; extensions.Remove( "glARB_texture_storage" ); } - if( extensions.Contains( "gl_ARB_texture_storage_multisample" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_texture_swizzle" ) ) + { ARB_texture_swizzle = true; extensions.Remove( "glARB_texture_swizzle" ); } - if( extensions.Contains( "gl_ARB_texture_view" ) ) { + if( extensions.Contains( "gl_ARB_texture_view" ) ) + { ARB_texture_view = true; extensions.Remove( "glARB_texture_view" ); } - if( extensions.Contains( "gl_ARB_timer_query" ) ) { + if( extensions.Contains( "gl_ARB_timer_query" ) ) + { ARB_timer_query = true; extensions.Remove( "glARB_timer_query" ); } - if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) { + if( extensions.Contains( "gl_ARB_transform_feedback2" ) ) + { ARB_transform_feedback2 = true; extensions.Remove( "glARB_transform_feedback2" ); } - if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) { + if( extensions.Contains( "gl_ARB_transform_feedback3" ) ) + { ARB_transform_feedback3 = true; extensions.Remove( "glARB_transform_feedback3" ); } - if( extensions.Contains( "gl_ARB_transform_feedback_instanced" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_transpose_matrix" ) ) + { ARB_transpose_matrix = true; extensions.Remove( "glARB_transpose_matrix" ); } - if( extensions.Contains( "gl_ARB_uniform_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_vertex_blend" ) ) + { ARB_vertex_blend = true; extensions.Remove( "glARB_vertex_blend" ); } - if( extensions.Contains( "gl_ARB_vertex_buffer_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_vertex_program" ) ) + { ARB_vertex_program = true; extensions.Remove( "glARB_vertex_program" ); } - if( extensions.Contains( "gl_ARB_vertex_shader" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ARB_viewport_array" ) ) + { ARB_viewport_array = true; extensions.Remove( "glARB_viewport_array" ); } - if( extensions.Contains( "gl_ARB_window_pos" ) ) { + if( extensions.Contains( "gl_ARB_window_pos" ) ) + { ARB_window_pos = true; extensions.Remove( "glARB_window_pos" ); } - if( extensions.Contains( "gl_ATI_draw_buffers" ) ) { + if( extensions.Contains( "gl_ATI_draw_buffers" ) ) + { ATI_draw_buffers = true; extensions.Remove( "glATI_draw_buffers" ); } - if( extensions.Contains( "gl_ATI_element_array" ) ) { + if( extensions.Contains( "gl_ATI_element_array" ) ) + { ATI_element_array = true; extensions.Remove( "glATI_element_array" ); } - if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) { + if( extensions.Contains( "gl_ATI_envmap_bumpmap" ) ) + { ATI_envmap_bumpmap = true; extensions.Remove( "glATI_envmap_bumpmap" ); } - if( extensions.Contains( "gl_ATI_fragment_shader" ) ) { + if( extensions.Contains( "gl_ATI_fragment_shader" ) ) + { ATI_fragment_shader = true; extensions.Remove( "glATI_fragment_shader" ); } - if( extensions.Contains( "gl_ATI_map_object_buffer" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_meminfo" ) ) + { ATI_meminfo = true; extensions.Remove( "glATI_meminfo" ); } - if( extensions.Contains( "gl_ATI_pixel_format_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_pn_triangles" ) ) + { ATI_pn_triangles = true; extensions.Remove( "glATI_pn_triangles" ); } - if( extensions.Contains( "gl_ATI_separate_stencil" ) ) { + if( extensions.Contains( "gl_ATI_separate_stencil" ) ) + { ATI_separate_stencil = true; extensions.Remove( "glATI_separate_stencil" ); } - if( extensions.Contains( "gl_ATI_text_fragment_shader" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_texture_float" ) ) + { ATI_texture_float = true; extensions.Remove( "glATI_texture_float" ); } - if( extensions.Contains( "gl_ATI_texture_mirror_once" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_ATI_vertex_streams" ) ) + { ATI_vertex_streams = true; extensions.Remove( "glATI_vertex_streams" ); } - if( extensions.Contains( "gl_EXT_422_pixels" ) ) { + if( extensions.Contains( "gl_EXT_422_pixels" ) ) + { EXT_422_pixels = true; extensions.Remove( "glEXT_422_pixels" ); } - if( extensions.Contains( "gl_EXT_EGL_image_storage" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_EGL_sync" ) ) + { EXT_EGL_sync = true; extensions.Remove( "glEXT_EGL_sync" ); } - if( extensions.Contains( "gl_EXT_abgr" ) ) { + if( extensions.Contains( "gl_EXT_abgr" ) ) + { EXT_abgr = true; extensions.Remove( "glEXT_abgr" ); } - if( extensions.Contains( "gl_EXT_bgra" ) ) { + if( extensions.Contains( "gl_EXT_bgra" ) ) + { EXT_bgra = true; extensions.Remove( "glEXT_bgra" ); } - if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) { + if( extensions.Contains( "gl_EXT_bindable_uniform" ) ) + { EXT_bindable_uniform = true; extensions.Remove( "glEXT_bindable_uniform" ); } - if( extensions.Contains( "gl_EXT_blend_color" ) ) { + if( extensions.Contains( "gl_EXT_blend_color" ) ) + { EXT_blend_color = true; extensions.Remove( "glEXT_blend_color" ); } - if( extensions.Contains( "gl_EXT_blend_equation_separate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_blend_minmax" ) ) + { EXT_blend_minmax = true; extensions.Remove( "glEXT_blend_minmax" ); } - if( extensions.Contains( "gl_EXT_blend_subtract" ) ) { + if( extensions.Contains( "gl_EXT_blend_subtract" ) ) + { EXT_blend_subtract = true; extensions.Remove( "glEXT_blend_subtract" ); } - if( extensions.Contains( "gl_EXT_clip_volume_hint" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_cmyka" ) ) + { EXT_cmyka = true; extensions.Remove( "glEXT_cmyka" ); } - if( extensions.Contains( "gl_EXT_color_subtable" ) ) { + if( extensions.Contains( "gl_EXT_color_subtable" ) ) + { EXT_color_subtable = true; extensions.Remove( "glEXT_color_subtable" ); } - if( extensions.Contains( "gl_EXT_compiled_vertex_array" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_convolution" ) ) + { EXT_convolution = true; extensions.Remove( "glEXT_convolution" ); } - if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) { + if( extensions.Contains( "gl_EXT_coordinate_frame" ) ) + { EXT_coordinate_frame = true; extensions.Remove( "glEXT_coordinate_frame" ); } - if( extensions.Contains( "gl_EXT_copy_texture" ) ) { + if( extensions.Contains( "gl_EXT_copy_texture" ) ) + { EXT_copy_texture = true; extensions.Remove( "glEXT_copy_texture" ); } - if( extensions.Contains( "gl_EXT_cull_vertex" ) ) { + if( extensions.Contains( "gl_EXT_cull_vertex" ) ) + { EXT_cull_vertex = true; extensions.Remove( "glEXT_cull_vertex" ); } - if( extensions.Contains( "gl_EXT_debug_label" ) ) { + if( extensions.Contains( "gl_EXT_debug_label" ) ) + { EXT_debug_label = true; extensions.Remove( "glEXT_debug_label" ); } - if( extensions.Contains( "gl_EXT_debug_marker" ) ) { + if( extensions.Contains( "gl_EXT_debug_marker" ) ) + { EXT_debug_marker = true; extensions.Remove( "glEXT_debug_marker" ); } - if( extensions.Contains( "gl_EXT_depth_bounds_test" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_draw_buffers2" ) ) + { EXT_draw_buffers2 = true; extensions.Remove( "glEXT_draw_buffers2" ); } - if( extensions.Contains( "gl_EXT_draw_instanced" ) ) { + if( extensions.Contains( "gl_EXT_draw_instanced" ) ) + { EXT_draw_instanced = true; extensions.Remove( "glEXT_draw_instanced" ); } - if( extensions.Contains( "gl_EXT_draw_range_elements" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_external_buffer" ) ) + { EXT_external_buffer = true; extensions.Remove( "glEXT_external_buffer" ); } - if( extensions.Contains( "gl_EXT_fog_coord" ) ) { + if( extensions.Contains( "gl_EXT_fog_coord" ) ) + { EXT_fog_coord = true; extensions.Remove( "glEXT_fog_coord" ); } - if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_blit" ) ) + { EXT_framebuffer_blit = true; extensions.Remove( "glEXT_framebuffer_blit" ); } - if( extensions.Contains( "gl_EXT_framebuffer_blit_layers" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_object" ) ) + { EXT_framebuffer_object = true; extensions.Remove( "glEXT_framebuffer_object" ); } - if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) { + if( extensions.Contains( "gl_EXT_framebuffer_sRGB" ) ) + { EXT_framebuffer_sRGB = true; extensions.Remove( "glEXT_framebuffer_sRGB" ); } - if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) { + if( extensions.Contains( "gl_EXT_geometry_shader4" ) ) + { EXT_geometry_shader4 = true; extensions.Remove( "glEXT_geometry_shader4" ); } - if( extensions.Contains( "gl_EXT_gpu_program_parameters" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_gpu_shader4" ) ) + { EXT_gpu_shader4 = true; extensions.Remove( "glEXT_gpu_shader4" ); } - if( extensions.Contains( "gl_EXT_histogram" ) ) { + if( extensions.Contains( "gl_EXT_histogram" ) ) + { EXT_histogram = true; extensions.Remove( "glEXT_histogram" ); } - if( extensions.Contains( "gl_EXT_index_array_formats" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_index_func" ) ) + { EXT_index_func = true; extensions.Remove( "glEXT_index_func" ); } - if( extensions.Contains( "gl_EXT_index_material" ) ) { + if( extensions.Contains( "gl_EXT_index_material" ) ) + { EXT_index_material = true; extensions.Remove( "glEXT_index_material" ); } - if( extensions.Contains( "gl_EXT_index_texture" ) ) { + if( extensions.Contains( "gl_EXT_index_texture" ) ) + { EXT_index_texture = true; extensions.Remove( "glEXT_index_texture" ); } - if( extensions.Contains( "gl_EXT_light_texture" ) ) { + if( extensions.Contains( "gl_EXT_light_texture" ) ) + { EXT_light_texture = true; extensions.Remove( "glEXT_light_texture" ); } - if( extensions.Contains( "gl_EXT_memory_object" ) ) { + if( extensions.Contains( "gl_EXT_memory_object" ) ) + { EXT_memory_object = true; extensions.Remove( "glEXT_memory_object" ); } - if( extensions.Contains( "gl_EXT_memory_object_fd" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_misc_attribute" ) ) + { EXT_misc_attribute = true; extensions.Remove( "glEXT_misc_attribute" ); } - if( extensions.Contains( "gl_EXT_multi_draw_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_multisample" ) ) + { EXT_multisample = true; extensions.Remove( "glEXT_multisample" ); } - if( extensions.Contains( - "gl_EXT_multiview_tessellation_geometry_shader" ) ) { + if( extensions.Contains( "gl_EXT_multiview_tessellation_geometry_shader" ) ) + { EXT_multiview_tessellation_geometry_shader = true; - extensions.Remove( - "glEXT_multiview_tessellation_geometry_shader" ); + extensions.Remove( "glEXT_multiview_tessellation_geometry_shader" ); } - if( extensions.Contains( "gl_EXT_multiview_texture_multisample" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_packed_float" ) ) + { EXT_packed_float = true; extensions.Remove( "glEXT_packed_float" ); } - if( extensions.Contains( "gl_EXT_packed_pixels" ) ) { + if( extensions.Contains( "gl_EXT_packed_pixels" ) ) + { EXT_packed_pixels = true; extensions.Remove( "glEXT_packed_pixels" ); } - if( extensions.Contains( "gl_EXT_paletted_texture" ) ) { + if( extensions.Contains( "gl_EXT_paletted_texture" ) ) + { EXT_paletted_texture = true; extensions.Remove( "glEXT_paletted_texture" ); } - if( extensions.Contains( "gl_EXT_pixel_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_point_parameters" ) ) + { EXT_point_parameters = true; extensions.Remove( "glEXT_point_parameters" ); } - if( extensions.Contains( "gl_EXT_polygon_offset" ) ) { + if( extensions.Contains( "gl_EXT_polygon_offset" ) ) + { EXT_polygon_offset = true; extensions.Remove( "glEXT_polygon_offset" ); } - if( extensions.Contains( "gl_EXT_polygon_offset_clamp" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_provoking_vertex" ) ) + { EXT_provoking_vertex = true; extensions.Remove( "glEXT_provoking_vertex" ); } - if( extensions.Contains( "gl_EXT_raster_multisample" ) ) { + if( extensions.Contains( "gl_EXT_raster_multisample" ) ) + { EXT_raster_multisample = true; extensions.Remove( "glEXT_raster_multisample" ); } - if( extensions.Contains( "gl_EXT_rescale_normal" ) ) { + if( extensions.Contains( "gl_EXT_rescale_normal" ) ) + { EXT_rescale_normal = true; extensions.Remove( "glEXT_rescale_normal" ); } - if( extensions.Contains( "gl_EXT_secondary_color" ) ) { + if( extensions.Contains( "gl_EXT_secondary_color" ) ) + { EXT_secondary_color = true; extensions.Remove( "glEXT_secondary_color" ); } - if( extensions.Contains( "gl_EXT_semaphore" ) ) { + if( extensions.Contains( "gl_EXT_semaphore" ) ) + { EXT_semaphore = true; extensions.Remove( "glEXT_semaphore" ); } - if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) { + if( extensions.Contains( "gl_EXT_semaphore_fd" ) ) + { EXT_semaphore_fd = true; extensions.Remove( "glEXT_semaphore_fd" ); } - if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) { + if( extensions.Contains( "gl_EXT_semaphore_win32" ) ) + { EXT_semaphore_win32 = true; extensions.Remove( "glEXT_semaphore_win32" ); } - if( extensions.Contains( "gl_EXT_separate_shader_objects" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glEXT_shader_framebuffer_fetch_non_coherent" ); } - if( extensions.Contains( "gl_EXT_shader_image_load_formatted" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_shadow_funcs" ) ) + { EXT_shadow_funcs = true; extensions.Remove( "glEXT_shadow_funcs" ); } - if( extensions.Contains( "gl_EXT_shared_texture_palette" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_sparse_texture2" ) ) + { EXT_sparse_texture2 = true; extensions.Remove( "glEXT_sparse_texture2" ); } - if( extensions.Contains( "gl_EXT_stencil_clear_tag" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_stencil_wrap" ) ) + { EXT_stencil_wrap = true; extensions.Remove( "glEXT_stencil_wrap" ); } - if( extensions.Contains( "gl_EXT_subtexture" ) ) { + if( extensions.Contains( "gl_EXT_subtexture" ) ) + { EXT_subtexture = true; extensions.Remove( "glEXT_subtexture" ); } - if( extensions.Contains( "gl_EXT_texture" ) ) { + if( extensions.Contains( "gl_EXT_texture" ) ) + { EXT_texture = true; extensions.Remove( "glEXT_texture" ); } - if( extensions.Contains( "gl_EXT_texture3D" ) ) { + if( extensions.Contains( "gl_EXT_texture3D" ) ) + { EXT_texture3D = true; extensions.Remove( "glEXT_texture3D" ); } - if( extensions.Contains( "gl_EXT_texture_array" ) ) { + if( extensions.Contains( "gl_EXT_texture_array" ) ) + { EXT_texture_array = true; extensions.Remove( "glEXT_texture_array" ); } - if( extensions.Contains( "gl_EXT_texture_buffer_object" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_integer" ) ) + { EXT_texture_integer = true; extensions.Remove( "glEXT_texture_integer" ); } - if( extensions.Contains( "gl_EXT_texture_lod_bias" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_object" ) ) + { EXT_texture_object = true; extensions.Remove( "glEXT_texture_object" ); } - if( extensions.Contains( "gl_EXT_texture_perturb_normal" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_sRGB" ) ) + { EXT_texture_sRGB = true; extensions.Remove( "glEXT_texture_sRGB" ); } - if( extensions.Contains( "gl_EXT_texture_sRGB_R8" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_texture_snorm" ) ) + { EXT_texture_snorm = true; extensions.Remove( "glEXT_texture_snorm" ); } - if( extensions.Contains( "gl_EXT_texture_storage" ) ) { + if( extensions.Contains( "gl_EXT_texture_storage" ) ) + { EXT_texture_storage = true; extensions.Remove( "glEXT_texture_storage" ); } - if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) { + if( extensions.Contains( "gl_EXT_texture_swizzle" ) ) + { EXT_texture_swizzle = true; extensions.Remove( "glEXT_texture_swizzle" ); } - if( extensions.Contains( "gl_EXT_timer_query" ) ) { + if( extensions.Contains( "gl_EXT_timer_query" ) ) + { EXT_timer_query = true; extensions.Remove( "glEXT_timer_query" ); } - if( extensions.Contains( "gl_EXT_transform_feedback" ) ) { + if( extensions.Contains( "gl_EXT_transform_feedback" ) ) + { EXT_transform_feedback = true; extensions.Remove( "glEXT_transform_feedback" ); } - if( extensions.Contains( "gl_EXT_vertex_array" ) ) { + if( extensions.Contains( "gl_EXT_vertex_array" ) ) + { EXT_vertex_array = true; extensions.Remove( "glEXT_vertex_array" ); } - if( extensions.Contains( "gl_EXT_vertex_array_bgra" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_vertex_shader" ) ) + { EXT_vertex_shader = true; extensions.Remove( "glEXT_vertex_shader" ); } - if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) { + if( extensions.Contains( "gl_EXT_vertex_weighting" ) ) + { EXT_vertex_weighting = true; extensions.Remove( "glEXT_vertex_weighting" ); } - if( extensions.Contains( "gl_EXT_win32_keyed_mutex" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_EXT_window_rectangles" ) ) + { EXT_window_rectangles = true; extensions.Remove( "glEXT_window_rectangles" ); } - if( extensions.Contains( "gl_EXT_x11_sync_object" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_GREMEDY_frame_terminator" ) ) + { GREMEDY_frame_terminator = true; extensions.Remove( "glGREMEDY_frame_terminator" ); } - if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) { + if( extensions.Contains( "gl_GREMEDY_string_marker" ) ) + { GREMEDY_string_marker = true; extensions.Remove( "glGREMEDY_string_marker" ); } - if( extensions.Contains( "gl_HP_convolution_border_modes" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_HP_image_transform" ) ) + { HP_image_transform = true; extensions.Remove( "glHP_image_transform" ); } - if( extensions.Contains( "gl_HP_occlusion_test" ) ) { + if( extensions.Contains( "gl_HP_occlusion_test" ) ) + { HP_occlusion_test = true; extensions.Remove( "glHP_occlusion_test" ); } - if( extensions.Contains( "gl_HP_texture_lighting" ) ) { + if( extensions.Contains( "gl_HP_texture_lighting" ) ) + { HP_texture_lighting = true; extensions.Remove( "glHP_texture_lighting" ); } - if( extensions.Contains( "gl_IBM_cull_vertex" ) ) { + if( extensions.Contains( "gl_IBM_cull_vertex" ) ) + { IBM_cull_vertex = true; extensions.Remove( "glIBM_cull_vertex" ); } - if( extensions.Contains( "gl_IBM_multimode_draw_arrays" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_IBM_rasterpos_clip" ) ) + { IBM_rasterpos_clip = true; extensions.Remove( "glIBM_rasterpos_clip" ); } - if( extensions.Contains( "gl_IBM_static_data" ) ) { + if( extensions.Contains( "gl_IBM_static_data" ) ) + { IBM_static_data = true; extensions.Remove( "glIBM_static_data" ); } - if( extensions.Contains( "gl_IBM_texture_mirrored_repeat" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_INGR_color_clamp" ) ) + { INGR_color_clamp = true; extensions.Remove( "glINGR_color_clamp" ); } - if( extensions.Contains( "gl_INGR_interlace_read" ) ) { + if( extensions.Contains( "gl_INGR_interlace_read" ) ) + { INGR_interlace_read = true; extensions.Remove( "glINGR_interlace_read" ); } - if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) { + if( extensions.Contains( "gl_INTEL_blackhole_render" ) ) + { INTEL_blackhole_render = true; extensions.Remove( "glINTEL_blackhole_render" ); } - if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) { + if( extensions.Contains( "gl_INTEL_conservative_rasterization" ) ) + { INTEL_conservative_rasterization = true; extensions.Remove( "glINTEL_conservative_rasterization" ); } - if( extensions.Contains( "gl_INTEL_fragment_shader_ordering" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_INTEL_framebuffer_CMAA" ) ) + { INTEL_framebuffer_CMAA = true; extensions.Remove( "glINTEL_framebuffer_CMAA" ); } - if( extensions.Contains( "gl_INTEL_map_texture" ) ) { + if( extensions.Contains( "gl_INTEL_map_texture" ) ) + { INTEL_map_texture = true; extensions.Remove( "glINTEL_map_texture" ); } - if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) { + if( extensions.Contains( "gl_INTEL_parallel_arrays" ) ) + { INTEL_parallel_arrays = true; extensions.Remove( "glINTEL_parallel_arrays" ); } - if( extensions.Contains( "gl_INTEL_performance_query" ) ) { + if( extensions.Contains( "gl_INTEL_performance_query" ) ) + { INTEL_performance_query = true; extensions.Remove( "glINTEL_performance_query" ); } - if( extensions.Contains( "gl_KHR_blend_equation_advanced" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_KHR_debug" ) ) + { KHR_debug = true; extensions.Remove( "glKHR_debug" ); } - if( extensions.Contains( "gl_KHR_no_error" ) ) { + if( extensions.Contains( "gl_KHR_no_error" ) ) + { KHR_no_error = true; extensions.Remove( "glKHR_no_error" ); } - if( extensions.Contains( "gl_KHR_parallel_shader_compile" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_KHR_robustness" ) ) + { KHR_robustness = true; extensions.Remove( "glKHR_robustness" ); } - if( extensions.Contains( "gl_KHR_shader_subgroup" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESAX_texture_stack" ) ) + { MESAX_texture_stack = true; extensions.Remove( "glMESAX_texture_stack" ); } - if( extensions.Contains( "gl_MESA_framebuffer_flip_x" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_pack_invert" ) ) + { MESA_pack_invert = true; extensions.Remove( "glMESA_pack_invert" ); } - if( extensions.Contains( "gl_MESA_program_binary_formats" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_resize_buffers" ) ) + { MESA_resize_buffers = true; extensions.Remove( "glMESA_resize_buffers" ); } - if( extensions.Contains( "gl_MESA_shader_integer_functions" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_MESA_window_pos" ) ) + { MESA_window_pos = true; extensions.Remove( "glMESA_window_pos" ); } - if( extensions.Contains( "gl_MESA_ycbcr_texture" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glNVX_blend_equation_advanced_multi_draw_buffers" ); } - if( extensions.Contains( "gl_NVX_conditional_render" ) ) { + if( extensions.Contains( "gl_NVX_conditional_render" ) ) + { NVX_conditional_render = true; extensions.Remove( "glNVX_conditional_render" ); } - if( extensions.Contains( "gl_NVX_gpu_memory_info" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NVX_gpu_multicast2" ) ) + { NVX_gpu_multicast2 = true; extensions.Remove( "glNVX_gpu_multicast2" ); } - if( extensions.Contains( "gl_NVX_linked_gpu_multicast" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_bindless_texture" ) ) + { NV_bindless_texture = true; extensions.Remove( "glNV_bindless_texture" ); } - if( extensions.Contains( "gl_NV_blend_equation_advanced" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_command_list" ) ) + { NV_command_list = true; extensions.Remove( "glNV_command_list" ); } - if( extensions.Contains( "gl_NV_compute_program5" ) ) { + if( extensions.Contains( "gl_NV_compute_program5" ) ) + { NV_compute_program5 = true; extensions.Remove( "glNV_compute_program5" ); } - if( extensions.Contains( "gl_NV_compute_shader_derivatives" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_conditional_render" ) ) + { NV_conditional_render = true; extensions.Remove( "glNV_conditional_render" ); } - if( extensions.Contains( "gl_NV_conservative_raster" ) ) { + if( extensions.Contains( "gl_NV_conservative_raster" ) ) + { NV_conservative_raster = true; extensions.Remove( "glNV_conservative_raster" ); } - if( extensions.Contains( "gl_NV_conservative_raster_dilate" ) ) { + 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" ) ) { + 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" ) ) { + 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" ); + extensions.Remove( "glNV_conservative_raster_pre_snap_triangles" ); } - if( extensions.Contains( - "gl_NV_conservative_raster_underestimation" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_copy_image" ) ) + { NV_copy_image = true; extensions.Remove( "glNV_copy_image" ); } - if( extensions.Contains( "gl_NV_deep_texture3D" ) ) { + if( extensions.Contains( "gl_NV_deep_texture3D" ) ) + { NV_deep_texture3D = true; extensions.Remove( "glNV_deep_texture3D" ); } - if( extensions.Contains( "gl_NV_depth_buffer_float" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_depth_clamp" ) ) + { NV_depth_clamp = true; extensions.Remove( "glNV_depth_clamp" ); } - if( extensions.Contains( "gl_NV_draw_texture" ) ) { + if( extensions.Contains( "gl_NV_draw_texture" ) ) + { NV_draw_texture = true; extensions.Remove( "glNV_draw_texture" ); } - if( extensions.Contains( "gl_NV_draw_vulkan_image" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_evaluators" ) ) + { NV_evaluators = true; extensions.Remove( "glNV_evaluators" ); } - if( extensions.Contains( "gl_NV_explicit_multisample" ) ) { + if( extensions.Contains( "gl_NV_explicit_multisample" ) ) + { NV_explicit_multisample = true; extensions.Remove( "glNV_explicit_multisample" ); } - if( extensions.Contains( "gl_NV_fence" ) ) { + if( extensions.Contains( "gl_NV_fence" ) ) + { NV_fence = true; extensions.Remove( "glNV_fence" ); } - if( extensions.Contains( "gl_NV_fill_rectangle" ) ) { + if( extensions.Contains( "gl_NV_fill_rectangle" ) ) + { NV_fill_rectangle = true; extensions.Remove( "glNV_fill_rectangle" ); } - if( extensions.Contains( "gl_NV_float_buffer" ) ) { + if( extensions.Contains( "gl_NV_float_buffer" ) ) + { NV_float_buffer = true; extensions.Remove( "glNV_float_buffer" ); } - if( extensions.Contains( "gl_NV_fog_distance" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_fragment_program" ) ) + { NV_fragment_program = true; extensions.Remove( "glNV_fragment_program" ); } - if( extensions.Contains( "gl_NV_fragment_program2" ) ) { + if( extensions.Contains( "gl_NV_fragment_program2" ) ) + { NV_fragment_program2 = true; extensions.Remove( "glNV_fragment_program2" ); } - if( extensions.Contains( "gl_NV_fragment_program4" ) ) { + if( extensions.Contains( "gl_NV_fragment_program4" ) ) + { NV_fragment_program4 = true; extensions.Remove( "glNV_fragment_program4" ); } - if( extensions.Contains( "gl_NV_fragment_program_option" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_geometry_program4" ) ) + { NV_geometry_program4 = true; extensions.Remove( "glNV_geometry_program4" ); } - if( extensions.Contains( "gl_NV_geometry_shader4" ) ) { + if( extensions.Contains( "gl_NV_geometry_shader4" ) ) + { NV_geometry_shader4 = true; extensions.Remove( "glNV_geometry_shader4" ); } - if( extensions.Contains( "gl_NV_geometry_shader_passthrough" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_gpu_multicast" ) ) + { NV_gpu_multicast = true; extensions.Remove( "glNV_gpu_multicast" ); } - if( extensions.Contains( "gl_NV_gpu_program4" ) ) { + if( extensions.Contains( "gl_NV_gpu_program4" ) ) + { NV_gpu_program4 = true; extensions.Remove( "glNV_gpu_program4" ); } - if( extensions.Contains( "gl_NV_gpu_program5" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_gpu_shader5" ) ) + { NV_gpu_shader5 = true; extensions.Remove( "glNV_gpu_shader5" ); } - if( extensions.Contains( "gl_NV_half_float" ) ) { + if( extensions.Contains( "gl_NV_half_float" ) ) + { NV_half_float = true; extensions.Remove( "glNV_half_float" ); } - if( extensions.Contains( "gl_NV_internalformat_sample_query" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_memory_attachment" ) ) + { NV_memory_attachment = true; extensions.Remove( "glNV_memory_attachment" ); } - if( extensions.Contains( "gl_NV_memory_object_sparse" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_mesh_shader" ) ) + { NV_mesh_shader = true; extensions.Remove( "glNV_mesh_shader" ); } - if( extensions.Contains( "gl_NV_multisample_coverage" ) ) { + if( extensions.Contains( "gl_NV_multisample_coverage" ) ) + { NV_multisample_coverage = true; extensions.Remove( "glNV_multisample_coverage" ); } - if( extensions.Contains( "gl_NV_multisample_filter_hint" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_occlusion_query" ) ) + { NV_occlusion_query = true; extensions.Remove( "glNV_occlusion_query" ); } - if( extensions.Contains( "gl_NV_packed_depth_stencil" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_point_sprite" ) ) + { NV_point_sprite = true; extensions.Remove( "glNV_point_sprite" ); } - if( extensions.Contains( "gl_NV_present_video" ) ) { + if( extensions.Contains( "gl_NV_present_video" ) ) + { NV_present_video = true; extensions.Remove( "glNV_present_video" ); } - if( extensions.Contains( "gl_NV_primitive_restart" ) ) { + if( extensions.Contains( "gl_NV_primitive_restart" ) ) + { NV_primitive_restart = true; extensions.Remove( "glNV_primitive_restart" ); } - if( extensions.Contains( "gl_NV_primitive_shading_rate" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_query_resource" ) ) + { NV_query_resource = true; extensions.Remove( "glNV_query_resource" ); } - if( extensions.Contains( "gl_NV_query_resource_tag" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_register_combiners" ) ) + { NV_register_combiners = true; extensions.Remove( "glNV_register_combiners" ); } - if( extensions.Contains( "gl_NV_register_combiners2" ) ) { + if( extensions.Contains( "gl_NV_register_combiners2" ) ) + { NV_register_combiners2 = true; extensions.Remove( "glNV_register_combiners2" ); } - if( extensions.Contains( "gl_NV_representative_fragment_test" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_scissor_exclusive" ) ) + { NV_scissor_exclusive = true; extensions.Remove( "glNV_scissor_exclusive" ); } - if( extensions.Contains( "gl_NV_shader_atomic_counters" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_tessellation_program5" ) ) + { NV_tessellation_program5 = true; extensions.Remove( "glNV_tessellation_program5" ); } - if( extensions.Contains( "gl_NV_texgen_emboss" ) ) { + if( extensions.Contains( "gl_NV_texgen_emboss" ) ) + { NV_texgen_emboss = true; extensions.Remove( "glNV_texgen_emboss" ); } - if( extensions.Contains( "gl_NV_texgen_reflection" ) ) { + if( extensions.Contains( "gl_NV_texgen_reflection" ) ) + { NV_texgen_reflection = true; extensions.Remove( "glNV_texgen_reflection" ); } - if( extensions.Contains( "gl_NV_texture_barrier" ) ) { + if( extensions.Contains( "gl_NV_texture_barrier" ) ) + { NV_texture_barrier = true; extensions.Remove( "glNV_texture_barrier" ); } - if( extensions.Contains( "gl_NV_texture_compression_vtc" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_texture_multisample" ) ) + { NV_texture_multisample = true; extensions.Remove( "glNV_texture_multisample" ); } - if( extensions.Contains( "gl_NV_texture_rectangle" ) ) { + if( extensions.Contains( "gl_NV_texture_rectangle" ) ) + { NV_texture_rectangle = true; extensions.Remove( "glNV_texture_rectangle" ); } - if( extensions.Contains( "gl_NV_texture_rectangle_compressed" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_texture_shader" ) ) + { NV_texture_shader = true; extensions.Remove( "glNV_texture_shader" ); } - if( extensions.Contains( "gl_NV_texture_shader2" ) ) { + if( extensions.Contains( "gl_NV_texture_shader2" ) ) + { NV_texture_shader2 = true; extensions.Remove( "glNV_texture_shader2" ); } - if( extensions.Contains( "gl_NV_texture_shader3" ) ) { + if( extensions.Contains( "gl_NV_texture_shader3" ) ) + { NV_texture_shader3 = true; extensions.Remove( "glNV_texture_shader3" ); } - if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) { + if( extensions.Contains( "gl_NV_timeline_semaphore" ) ) + { NV_timeline_semaphore = true; extensions.Remove( "glNV_timeline_semaphore" ); } - if( extensions.Contains( "gl_NV_transform_feedback" ) ) { + if( extensions.Contains( "gl_NV_transform_feedback" ) ) + { NV_transform_feedback = true; extensions.Remove( "glNV_transform_feedback" ); } - if( extensions.Contains( "gl_NV_transform_feedback2" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vdpau_interop" ) ) + { NV_vdpau_interop = true; extensions.Remove( "glNV_vdpau_interop" ); } - if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) { + if( extensions.Contains( "gl_NV_vdpau_interop2" ) ) + { NV_vdpau_interop2 = true; extensions.Remove( "glNV_vdpau_interop2" ); } - if( extensions.Contains( "gl_NV_vertex_array_range" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program" ) ) + { NV_vertex_program = true; extensions.Remove( "glNV_vertex_program" ); } - if( extensions.Contains( "gl_NV_vertex_program1_1" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program2" ) ) + { NV_vertex_program2 = true; extensions.Remove( "glNV_vertex_program2" ); } - if( extensions.Contains( "gl_NV_vertex_program2_option" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_NV_vertex_program3" ) ) + { NV_vertex_program3 = true; extensions.Remove( "glNV_vertex_program3" ); } - if( extensions.Contains( "gl_NV_vertex_program4" ) ) { + if( extensions.Contains( "gl_NV_vertex_program4" ) ) + { NV_vertex_program4 = true; extensions.Remove( "glNV_vertex_program4" ); } - if( extensions.Contains( "gl_NV_video_capture" ) ) { + if( extensions.Contains( "gl_NV_video_capture" ) ) + { NV_video_capture = true; extensions.Remove( "glNV_video_capture" ); } - if( extensions.Contains( "gl_NV_viewport_array2" ) ) { + if( extensions.Contains( "gl_NV_viewport_array2" ) ) + { NV_viewport_array2 = true; extensions.Remove( "glNV_viewport_array2" ); } - if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) { + if( extensions.Contains( "gl_NV_viewport_swizzle" ) ) + { NV_viewport_swizzle = true; extensions.Remove( "glNV_viewport_swizzle" ); } - if( extensions.Contains( "gl_OES_byte_coordinates" ) ) { + if( extensions.Contains( "gl_OES_byte_coordinates" ) ) + { OES_byte_coordinates = true; extensions.Remove( "glOES_byte_coordinates" ); } - if( extensions.Contains( "gl_OES_compressed_paletted_texture" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_OES_fixed_point" ) ) + { OES_fixed_point = true; extensions.Remove( "glOES_fixed_point" ); } - if( extensions.Contains( "gl_OES_query_matrix" ) ) { + if( extensions.Contains( "gl_OES_query_matrix" ) ) + { OES_query_matrix = true; extensions.Remove( "glOES_query_matrix" ); } - if( extensions.Contains( "gl_OES_read_format" ) ) { + if( extensions.Contains( "gl_OES_read_format" ) ) + { OES_read_format = true; extensions.Remove( "glOES_read_format" ); } - if( extensions.Contains( "gl_OES_single_precision" ) ) { + if( extensions.Contains( "gl_OES_single_precision" ) ) + { OES_single_precision = true; extensions.Remove( "glOES_single_precision" ); } - if( extensions.Contains( "gl_OML_interlace" ) ) { + if( extensions.Contains( "gl_OML_interlace" ) ) + { OML_interlace = true; extensions.Remove( "glOML_interlace" ); } - if( extensions.Contains( "gl_OML_resample" ) ) { + if( extensions.Contains( "gl_OML_resample" ) ) + { OML_resample = true; extensions.Remove( "glOML_resample" ); } - if( extensions.Contains( "gl_OML_subsample" ) ) { + if( extensions.Contains( "gl_OML_subsample" ) ) + { OML_subsample = true; extensions.Remove( "glOML_subsample" ); } - if( extensions.Contains( "gl_OVR_multiview" ) ) { + if( extensions.Contains( "gl_OVR_multiview" ) ) + { OVR_multiview = true; extensions.Remove( "glOVR_multiview" ); } - if( extensions.Contains( "gl_OVR_multiview2" ) ) { + if( extensions.Contains( "gl_OVR_multiview2" ) ) + { OVR_multiview2 = true; extensions.Remove( "glOVR_multiview2" ); } - if( extensions.Contains( "gl_PGI_misc_hints" ) ) { + if( extensions.Contains( "gl_PGI_misc_hints" ) ) + { PGI_misc_hints = true; extensions.Remove( "glPGI_misc_hints" ); } - if( extensions.Contains( "gl_PGI_vertex_hints" ) ) { + if( extensions.Contains( "gl_PGI_vertex_hints" ) ) + { PGI_vertex_hints = true; extensions.Remove( "glPGI_vertex_hints" ); } - if( extensions.Contains( "gl_REND_screen_coordinates" ) ) { + if( extensions.Contains( "gl_REND_screen_coordinates" ) ) + { REND_screen_coordinates = true; extensions.Remove( "glREND_screen_coordinates" ); } - if( extensions.Contains( "gl_S3_s3tc" ) ) { + if( extensions.Contains( "gl_S3_s3tc" ) ) + { S3_s3tc = true; extensions.Remove( "glS3_s3tc" ); } - if( extensions.Contains( "gl_SGIS_detail_texture" ) ) { + if( extensions.Contains( "gl_SGIS_detail_texture" ) ) + { SGIS_detail_texture = true; extensions.Remove( "glSGIS_detail_texture" ); } - if( extensions.Contains( "gl_SGIS_fog_function" ) ) { + if( extensions.Contains( "gl_SGIS_fog_function" ) ) + { SGIS_fog_function = true; extensions.Remove( "glSGIS_fog_function" ); } - if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) { + if( extensions.Contains( "gl_SGIS_generate_mipmap" ) ) + { SGIS_generate_mipmap = true; extensions.Remove( "glSGIS_generate_mipmap" ); } - if( extensions.Contains( "gl_SGIS_multisample" ) ) { + if( extensions.Contains( "gl_SGIS_multisample" ) ) + { SGIS_multisample = true; extensions.Remove( "glSGIS_multisample" ); } - if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) { + if( extensions.Contains( "gl_SGIS_pixel_texture" ) ) + { SGIS_pixel_texture = true; extensions.Remove( "glSGIS_pixel_texture" ); } - if( extensions.Contains( "gl_SGIS_point_line_texgen" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIS_point_parameters" ) ) + { SGIS_point_parameters = true; extensions.Remove( "glSGIS_point_parameters" ); } - if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) { + if( extensions.Contains( "gl_SGIS_sharpen_texture" ) ) + { SGIS_sharpen_texture = true; extensions.Remove( "glSGIS_sharpen_texture" ); } - if( extensions.Contains( "gl_SGIS_texture4D" ) ) { + if( extensions.Contains( "gl_SGIS_texture4D" ) ) + { SGIS_texture4D = true; extensions.Remove( "glSGIS_texture4D" ); } - if( extensions.Contains( "gl_SGIS_texture_border_clamp" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIS_texture_filter4" ) ) + { SGIS_texture_filter4 = true; extensions.Remove( "glSGIS_texture_filter4" ); } - if( extensions.Contains( "gl_SGIS_texture_lod" ) ) { + if( extensions.Contains( "gl_SGIS_texture_lod" ) ) + { SGIS_texture_lod = true; extensions.Remove( "glSGIS_texture_lod" ); } - if( extensions.Contains( "gl_SGIS_texture_select" ) ) { + if( extensions.Contains( "gl_SGIS_texture_select" ) ) + { SGIS_texture_select = true; extensions.Remove( "glSGIS_texture_select" ); } - if( extensions.Contains( "gl_SGIX_async" ) ) { + if( extensions.Contains( "gl_SGIX_async" ) ) + { SGIX_async = true; extensions.Remove( "glSGIX_async" ); } - if( extensions.Contains( "gl_SGIX_async_histogram" ) ) { + if( extensions.Contains( "gl_SGIX_async_histogram" ) ) + { SGIX_async_histogram = true; extensions.Remove( "glSGIX_async_histogram" ); } - if( extensions.Contains( "gl_SGIX_async_pixel" ) ) { + if( extensions.Contains( "gl_SGIX_async_pixel" ) ) + { SGIX_async_pixel = true; extensions.Remove( "glSGIX_async_pixel" ); } - if( extensions.Contains( "gl_SGIX_blend_alpha_minmax" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_calligraphic_fragment" ) ) + { SGIX_calligraphic_fragment = true; extensions.Remove( "glSGIX_calligraphic_fragment" ); } - if( extensions.Contains( "gl_SGIX_clipmap" ) ) { + if( extensions.Contains( "gl_SGIX_clipmap" ) ) + { SGIX_clipmap = true; extensions.Remove( "glSGIX_clipmap" ); } - if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) { + if( extensions.Contains( "gl_SGIX_convolution_accuracy" ) ) + { SGIX_convolution_accuracy = true; extensions.Remove( "glSGIX_convolution_accuracy" ); } - if( extensions.Contains( "gl_SGIX_depth_pass_instrument" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_depth_texture" ) ) + { SGIX_depth_texture = true; extensions.Remove( "glSGIX_depth_texture" ); } - if( extensions.Contains( "gl_SGIX_flush_raster" ) ) { + if( extensions.Contains( "gl_SGIX_flush_raster" ) ) + { SGIX_flush_raster = true; extensions.Remove( "glSGIX_flush_raster" ); } - if( extensions.Contains( "gl_SGIX_fog_offset" ) ) { + if( extensions.Contains( "gl_SGIX_fog_offset" ) ) + { SGIX_fog_offset = true; extensions.Remove( "glSGIX_fog_offset" ); } - if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) { + if( extensions.Contains( "gl_SGIX_fragment_lighting" ) ) + { SGIX_fragment_lighting = true; extensions.Remove( "glSGIX_fragment_lighting" ); } - if( extensions.Contains( "gl_SGIX_framezoom" ) ) { + if( extensions.Contains( "gl_SGIX_framezoom" ) ) + { SGIX_framezoom = true; extensions.Remove( "glSGIX_framezoom" ); } - if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) { + if( extensions.Contains( "gl_SGIX_igloo_interface" ) ) + { SGIX_igloo_interface = true; extensions.Remove( "glSGIX_igloo_interface" ); } - if( extensions.Contains( "gl_SGIX_instruments" ) ) { + if( extensions.Contains( "gl_SGIX_instruments" ) ) + { SGIX_instruments = true; extensions.Remove( "glSGIX_instruments" ); } - if( extensions.Contains( "gl_SGIX_interlace" ) ) { + if( extensions.Contains( "gl_SGIX_interlace" ) ) + { SGIX_interlace = true; extensions.Remove( "glSGIX_interlace" ); } - if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) { + if( extensions.Contains( "gl_SGIX_ir_instrument1" ) ) + { SGIX_ir_instrument1 = true; extensions.Remove( "glSGIX_ir_instrument1" ); } - if( extensions.Contains( "gl_SGIX_list_priority" ) ) { + if( extensions.Contains( "gl_SGIX_list_priority" ) ) + { SGIX_list_priority = true; extensions.Remove( "glSGIX_list_priority" ); } - if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) { + if( extensions.Contains( "gl_SGIX_pixel_texture" ) ) + { SGIX_pixel_texture = true; extensions.Remove( "glSGIX_pixel_texture" ); } - if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) { + if( extensions.Contains( "gl_SGIX_pixel_tiles" ) ) + { SGIX_pixel_tiles = true; extensions.Remove( "glSGIX_pixel_tiles" ); } - if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) { + if( extensions.Contains( "gl_SGIX_polynomial_ffd" ) ) + { SGIX_polynomial_ffd = true; extensions.Remove( "glSGIX_polynomial_ffd" ); } - if( extensions.Contains( "gl_SGIX_reference_plane" ) ) { + if( extensions.Contains( "gl_SGIX_reference_plane" ) ) + { SGIX_reference_plane = true; extensions.Remove( "glSGIX_reference_plane" ); } - if( extensions.Contains( "gl_SGIX_resample" ) ) { + if( extensions.Contains( "gl_SGIX_resample" ) ) + { SGIX_resample = true; extensions.Remove( "glSGIX_resample" ); } - if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) { + if( extensions.Contains( "gl_SGIX_scalebias_hint" ) ) + { SGIX_scalebias_hint = true; extensions.Remove( "glSGIX_scalebias_hint" ); } - if( extensions.Contains( "gl_SGIX_shadow" ) ) { + if( extensions.Contains( "gl_SGIX_shadow" ) ) + { SGIX_shadow = true; extensions.Remove( "glSGIX_shadow" ); } - if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) { + if( extensions.Contains( "gl_SGIX_shadow_ambient" ) ) + { SGIX_shadow_ambient = true; extensions.Remove( "glSGIX_shadow_ambient" ); } - if( extensions.Contains( "gl_SGIX_sprite" ) ) { + if( extensions.Contains( "gl_SGIX_sprite" ) ) + { SGIX_sprite = true; extensions.Remove( "glSGIX_sprite" ); } - if( extensions.Contains( "gl_SGIX_subsample" ) ) { + if( extensions.Contains( "gl_SGIX_subsample" ) ) + { SGIX_subsample = true; extensions.Remove( "glSGIX_subsample" ); } - if( extensions.Contains( "gl_SGIX_tag_sample_buffer" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SGIX_vertex_preclip" ) ) + { SGIX_vertex_preclip = true; extensions.Remove( "glSGIX_vertex_preclip" ); } - if( extensions.Contains( "gl_SGIX_ycrcb" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcb" ) ) + { SGIX_ycrcb = true; extensions.Remove( "glSGIX_ycrcb" ); } - if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcb_subsample" ) ) + { SGIX_ycrcb_subsample = true; extensions.Remove( "glSGIX_ycrcb_subsample" ); } - if( extensions.Contains( "gl_SGIX_ycrcba" ) ) { + if( extensions.Contains( "gl_SGIX_ycrcba" ) ) + { SGIX_ycrcba = true; extensions.Remove( "glSGIX_ycrcba" ); } - if( extensions.Contains( "gl_SGI_color_matrix" ) ) { + if( extensions.Contains( "gl_SGI_color_matrix" ) ) + { SGI_color_matrix = true; extensions.Remove( "glSGI_color_matrix" ); } - if( extensions.Contains( "gl_SGI_color_table" ) ) { + if( extensions.Contains( "gl_SGI_color_table" ) ) + { SGI_color_table = true; extensions.Remove( "glSGI_color_table" ); } - if( extensions.Contains( "gl_SGI_texture_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" ) ) { + if( extensions.Contains( "gl_SUNX_constant_data" ) ) + { SUNX_constant_data = true; extensions.Remove( "glSUNX_constant_data" ); } - if( extensions.Contains( "gl_SUN_convolution_border_modes" ) ) { + 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" ) ) { + if( extensions.Contains( "gl_SUN_global_alpha" ) ) + { SUN_global_alpha = true; extensions.Remove( "glSUN_global_alpha" ); } - if( extensions.Contains( "gl_SUN_mesh_array" ) ) { + if( extensions.Contains( "gl_SUN_mesh_array" ) ) + { SUN_mesh_array = true; extensions.Remove( "glSUN_mesh_array" ); } - if( extensions.Contains( "gl_SUN_slice_accum" ) ) { + if( extensions.Contains( "gl_SUN_slice_accum" ) ) + { SUN_slice_accum = true; extensions.Remove( "glSUN_slice_accum" ); } - if( extensions.Contains( "gl_SUN_triangle_list" ) ) { + if( extensions.Contains( "gl_SUN_triangle_list" ) ) + { SUN_triangle_list = true; extensions.Remove( "glSUN_triangle_list" ); } - if( extensions.Contains( "gl_SUN_vertex" ) ) { + if( extensions.Contains( "gl_SUN_vertex" ) ) + { SUN_vertex = true; extensions.Remove( "glSUN_vertex" ); } - if( extensions.Contains( "gl_WIN_phong_shading" ) ) { + if( extensions.Contains( "gl_WIN_phong_shading" ) ) + { WIN_phong_shading = true; extensions.Remove( "glWIN_phong_shading" ); } - if( extensions.Contains( "gl_WIN_specular_fog" ) ) { + if( extensions.Contains( "gl_WIN_specular_fog" ) ) + { WIN_specular_fog = true; extensions.Remove( "glWIN_specular_fog" ); } @@ -2667,139 +3283,173 @@ namespace StgSharp.Graphics.OpenGL #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 >= 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: { - 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 ) { return string.Empty; @@ -2810,14 +3460,16 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] internal static T internalLoadAPI( IntPtr ptr ) where T: Delegate { - try { + 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 ); @@ -2826,55 +3478,41 @@ namespace StgSharp.Graphics.OpenGL } internal static unsafe void LoadGLcore10( - OpenglContext* contextPtr, - delegate* load ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core10 ) { - InternalIO.InternalAppendLog( - "The core version 1.0 is not supported." ); + 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->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->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->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->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->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->glGetFloatv = ( delegate* )load( "glGetFloatv" ); + contextPtr->glGetIntegerv = ( delegate* )load( "glGetIntegerv" ); + contextPtr->glGetString = ( delegate* )load( "glGetString" ); contextPtr->glGetTexImage = ( delegate* )load( "glGetTexImage" ); contextPtr->glGetTexLevelParameterfv = ( delegate* )load( @@ -2886,31 +3524,20 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glGetTexParameteriv = ( delegate* )load( "glGetTexParameteriv" ); contextPtr->glHint = ( delegate* )load( "glHint" ); - contextPtr->glIsEnabled = ( delegate* )load( - "glIsEnabled" ); - contextPtr->glLineWidth = ( delegate* )load( - "glLineWidth" ); + 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->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->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( @@ -2923,29 +3550,26 @@ namespace StgSharp.Graphics.OpenGL "glTexParameteri" ); contextPtr->glTexParameteriv = ( delegate* )load( "glTexParameteriv" ); - contextPtr->glViewport = ( delegate* )load( - "glViewport" ); + 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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core11 ) { - InternalIO.InternalAppendLog( - "The core version 1.1 is not supported." ); + 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->glBindTexture = ( delegate* )load( "glBindTexture" ); contextPtr->glCopyTexImage1D = ( delegate* )load( "glCopyTexImage1D" ); contextPtr->glCopyTexImage2D = ( delegate* )load( @@ -2956,18 +3580,13 @@ namespace StgSharp.Graphics.OpenGL "glCopyTexSubImage2D" ); contextPtr->glDeleteTextures = ( delegate* )load( "glDeleteTextures" ); - contextPtr->glDrawArrays = ( delegate* )load( - "glDrawArrays" ); + 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->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( @@ -2975,17 +3594,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core12 ) { - InternalIO.InternalAppendLog( - "The core version 1.2 is not supported." ); + if( !core12 ) + { + InternalIO.InternalAppendLog( "The core version 1.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -3002,24 +3620,22 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core13 ) { - InternalIO.InternalAppendLog( - "The core version 1.3 is not supported." ); + 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->glActiveTexture = ( delegate* )load( "glActiveTexture" ); contextPtr->glCompressedTexImage1D = ( delegate* )load( "glCompressedTexImage1D" ); contextPtr->glCompressedTexImage2D = ( delegate* )load( @@ -3039,17 +3655,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core14 ) { - InternalIO.InternalAppendLog( - "The core version 1.4 is not supported." ); + if( !core14 ) + { + InternalIO.InternalAppendLog( "The core version 1.4 is not supported." ); throw new Exception( "Final Version" ); } @@ -3057,8 +3672,7 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glBlendColor = ( delegate* )load( "glBlendColor" ); - contextPtr->glBlendEquation = ( delegate* )load( - "glBlendEquation" ); + contextPtr->glBlendEquation = ( delegate* )load( "glBlendEquation" ); contextPtr->glBlendFuncSeparate = ( delegate* )load( "glBlendFuncSeparate" ); contextPtr->glMultiDrawArrays = ( delegate* )load( @@ -3076,40 +3690,32 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core15 ) { - InternalIO.InternalAppendLog( - "The core version 1.5 is not supported." ); + 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->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->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( @@ -3120,56 +3726,43 @@ namespace StgSharp.Graphics.OpenGL "glGetQueryObjectiv" ); contextPtr->glGetQueryObjectuiv = ( delegate* )load( "glGetQueryObjectuiv" ); - contextPtr->glGetQueryiv = ( delegate* )load( - "glGetQueryiv" ); - contextPtr->glIsBuffer = ( delegate* )load( - "glIsBuffer" ); + 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->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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core20 ) { - InternalIO.InternalAppendLog( - "The core version 2.0 is not supported." ); + 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->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->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->glDrawBuffers = ( delegate* )load( "glDrawBuffers" ); contextPtr->glEnableVertexAttribArray = ( delegate* )load( "glEnableVertexAttribArray" ); contextPtr->glGetActiveAttrib = ( delegate* )load( @@ -3188,8 +3781,7 @@ namespace StgSharp.Graphics.OpenGL "glGetShaderInfoLog" ); contextPtr->glGetShaderSource = ( delegate* )load( "glGetShaderSource" ); - contextPtr->glGetShaderiv = ( delegate* )load( - "glGetShaderiv" ); + contextPtr->glGetShaderiv = ( delegate* )load( "glGetShaderiv" ); contextPtr->glGetUniformLocation = ( delegate* )load( "glGetUniformLocation" ); contextPtr->glGetUniformfv = ( delegate* )load( @@ -3204,12 +3796,9 @@ namespace StgSharp.Graphics.OpenGL "glGetVertexAttribfv" ); contextPtr->glGetVertexAttribiv = ( delegate* )load( "glGetVertexAttribiv" ); - contextPtr->glIsProgram = ( delegate* )load( - "glIsProgram" ); - contextPtr->glIsShader = ( delegate* )load( - "glIsShader" ); - contextPtr->glLinkProgram = ( delegate* )load( - "glLinkProgram" ); + 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( @@ -3218,48 +3807,33 @@ namespace StgSharp.Graphics.OpenGL "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->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->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->glUniform4fv = ( delegate* )load( "glUniform4fv" ); contextPtr->glUniform4i = ( delegate* )load( "glUniform4i" ); - contextPtr->glUniform4iv = ( delegate* )load( - "glUniform4iv" ); + 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->glUseProgram = ( delegate* )load( "glUseProgram" ); + contextPtr->glValidateProgram = ( delegate* )load( "glValidateProgram" ); contextPtr->glVertexAttrib1d = ( delegate* )load( "glVertexAttrib1d" ); contextPtr->glVertexAttrib1dv = ( delegate* )load( @@ -3337,17 +3911,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core21 ) { - InternalIO.InternalAppendLog( - "The core version 2.1 is not supported." ); + if( !core21 ) + { + InternalIO.InternalAppendLog( "The core version 2.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3368,17 +3941,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core30 ) { - InternalIO.InternalAppendLog( - "The core version 3.0 is not supported." ); + if( !core30 ) + { + InternalIO.InternalAppendLog( "The core version 3.0 is not supported." ); throw new Exception( "Final Version" ); } @@ -3398,14 +3970,12 @@ namespace StgSharp.Graphics.OpenGL "glBindFramebuffer" ); contextPtr->glBindRenderbuffer = ( delegate* )load( "glBindRenderbuffer" ); - contextPtr->glBindVertexArray = ( delegate* )load( - "glBindVertexArray" ); + contextPtr->glBindVertexArray = ( delegate* )load( "glBindVertexArray" ); contextPtr->glBlitFramebuffer = ( delegate* )load( "glBlitFramebuffer" ); contextPtr->glCheckFramebufferStatus = ( delegate* )load( "glCheckFramebufferStatus" ); - contextPtr->glClampColor = ( delegate* )load( - "glClampColor" ); + contextPtr->glClampColor = ( delegate* )load( "glClampColor" ); contextPtr->glClearBufferfi = ( delegate* )load( "glClearBufferfi" ); contextPtr->glClearBufferfv = ( delegate* )load( @@ -3422,14 +3992,10 @@ namespace StgSharp.Graphics.OpenGL "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->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( @@ -3448,8 +4014,7 @@ namespace StgSharp.Graphics.OpenGL "glGenRenderbuffers" ); contextPtr->glGenVertexArrays = ( delegate* )load( "glGenVertexArrays" ); - contextPtr->glGenerateMipmap = ( delegate* )load( - "glGenerateMipmap" ); + contextPtr->glGenerateMipmap = ( delegate* )load( "glGenerateMipmap" ); contextPtr->glGetBooleani_v = ( delegate* )load( "glGetBooleani_v" ); contextPtr->glGetFragDataLocation = ( delegate* )load( @@ -3460,8 +4025,7 @@ namespace StgSharp.Graphics.OpenGL "glGetIntegeri_v" ); contextPtr->glGetRenderbufferParameteriv = ( delegate* )load( "glGetRenderbufferParameteriv" ); - contextPtr->glGetStringi = ( delegate* )load( - "glGetStringi" ); + contextPtr->glGetStringi = ( delegate* )load( "glGetStringi" ); contextPtr->glGetTexParameterIiv = ( delegate* )load( "glGetTexParameterIiv" ); contextPtr->glGetTexParameterIuiv = ( delegate* )load( @@ -3474,14 +4038,10 @@ namespace StgSharp.Graphics.OpenGL "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->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( @@ -3494,22 +4054,16 @@ namespace StgSharp.Graphics.OpenGL "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->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->glUniform3uiv = ( delegate* )load( "glUniform3uiv" ); contextPtr->glUniform4ui = ( delegate* )load( "glUniform4ui" ); - contextPtr->glUniform4uiv = ( delegate* )load( - "glUniform4uiv" ); + contextPtr->glUniform4uiv = ( delegate* )load( "glUniform4uiv" ); contextPtr->glVertexAttribI1i = ( delegate* )load( "glVertexAttribI1i" ); contextPtr->glVertexAttribI1iv = ( delegate* )load( @@ -3555,17 +4109,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core31 ) { - InternalIO.InternalAppendLog( - "The core version 3.1 is not supported." ); + if( !core31 ) + { + InternalIO.InternalAppendLog( "The core version 3.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3597,24 +4150,22 @@ namespace StgSharp.Graphics.OpenGL "glGetUniformIndices" ); contextPtr->glPrimitiveRestartIndex = ( delegate* )load( "glPrimitiveRestartIndex" ); - contextPtr->glTexBuffer = ( delegate* )load( - "glTexBuffer" ); + 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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core32 ) { - InternalIO.InternalAppendLog( - "The core version 3.2 is not supported." ); + if( !core32 ) + { + InternalIO.InternalAppendLog( "The core version 3.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -3622,24 +4173,21 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glClientWaitSync = ( delegate* )load( "glClientWaitSync" ); - contextPtr->glDeleteSync = ( delegate* )load( - "glDeleteSync" ); + 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->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->glGetInteger64v = ( delegate* )load( "glGetInteger64v" ); contextPtr->glGetMultisamplefv = ( delegate* )load( "glGetMultisamplefv" ); contextPtr->glGetSynciv = ( delegate* )load( @@ -3647,30 +4195,26 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glIsSync = ( delegate* )load( "glIsSync" ); contextPtr->glMultiDrawElementsBaseVertex = ( delegate* )load( "glMultiDrawElementsBaseVertex" ); - contextPtr->glProvokingVertex = ( delegate* )load( - "glProvokingVertex" ); - contextPtr->glSampleMaski = ( delegate* )load( - "glSampleMaski" ); + 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->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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core33 ) { - InternalIO.InternalAppendLog( - "The core version 3.3 is not supported." ); + if( !core33 ) + { + InternalIO.InternalAppendLog( "The core version 3.3 is not supported." ); throw new Exception( "Final Version" ); } @@ -3678,12 +4222,10 @@ namespace StgSharp.Graphics.OpenGL contextPtr->glBindFragDataLocationIndexed = ( delegate* )load( "glBindFragDataLocationIndexed" ); - contextPtr->glBindSampler = ( delegate* )load( - "glBindSampler" ); + contextPtr->glBindSampler = ( delegate* )load( "glBindSampler" ); contextPtr->glDeleteSamplers = ( delegate* )load( "glDeleteSamplers" ); - contextPtr->glGenSamplers = ( delegate* )load( - "glGenSamplers" ); + contextPtr->glGenSamplers = ( delegate* )load( "glGenSamplers" ); contextPtr->glGetFragDataIndex = ( delegate* )load( "glGetFragDataIndex" ); contextPtr->glGetQueryObjecti64v = ( delegate* )load( @@ -3698,10 +4240,8 @@ namespace StgSharp.Graphics.OpenGL "glGetSamplerParameterfv" ); contextPtr->glGetSamplerParameteriv = ( delegate* )load( "glGetSamplerParameteriv" ); - contextPtr->glIsSampler = ( delegate* )load( - "glIsSampler" ); - contextPtr->glQueryCounter = ( delegate* )load( - "glQueryCounter" ); + contextPtr->glIsSampler = ( delegate* )load( "glIsSampler" ); + contextPtr->glQueryCounter = ( delegate* )load( "glQueryCounter" ); contextPtr->glSamplerParameterIiv = ( delegate* )load( "glSamplerParameterIiv" ); contextPtr->glSamplerParameterIuiv = ( delegate* )load( @@ -3735,17 +4275,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core40 ) { - InternalIO.InternalAppendLog( - "The core version 4.0 is not supported." ); + if( !core40 ) + { + InternalIO.InternalAppendLog( "The core version 4.0 is not supported." ); throw new Exception( "Final Version" ); } @@ -3757,12 +4296,10 @@ namespace StgSharp.Graphics.OpenGL "glBindTransformFeedback" ); contextPtr->glBlendEquationSeparatei = ( delegate* )load( "glBlendEquationSeparatei" ); - contextPtr->glBlendEquationi = ( delegate* )load( - "glBlendEquationi" ); + contextPtr->glBlendEquationi = ( delegate* )load( "glBlendEquationi" ); contextPtr->glBlendFuncSeparatei = ( delegate* )load( "glBlendFuncSeparatei" ); - contextPtr->glBlendFunci = ( delegate* )load( - "glBlendFunci" ); + contextPtr->glBlendFunci = ( delegate* )load( "glBlendFunci" ); contextPtr->glDeleteTransformFeedbacks = ( delegate* )load( "glDeleteTransformFeedbacks" ); contextPtr->glDrawArraysIndirect = ( delegate* )load( @@ -3797,8 +4334,7 @@ namespace StgSharp.Graphics.OpenGL "glGetUniformdv" ); contextPtr->glIsTransformFeedback = ( delegate* )load( "glIsTransformFeedback" ); - contextPtr->glMinSampleShading = ( delegate* )load( - "glMinSampleShading" ); + contextPtr->glMinSampleShading = ( delegate* )load( "glMinSampleShading" ); contextPtr->glPatchParameterfv = ( delegate* )load( "glPatchParameterfv" ); contextPtr->glPatchParameteri = ( delegate* )load( @@ -3807,22 +4343,16 @@ namespace StgSharp.Graphics.OpenGL "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->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->glUniform3dv = ( delegate* )load( "glUniform3dv" ); contextPtr->glUniform4d = ( delegate* )load( "glUniform4d" ); - contextPtr->glUniform4dv = ( delegate* )load( - "glUniform4dv" ); + contextPtr->glUniform4dv = ( delegate* )load( "glUniform4dv" ); contextPtr->glUniformMatrix2dv = ( delegate* )load( "glUniformMatrix2dv" ); contextPtr->glUniformMatrix2x3dv = ( delegate* )load( @@ -3846,17 +4376,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core41 ) { - InternalIO.InternalAppendLog( - "The core version 4.1 is not supported." ); + if( !core41 ) + { + InternalIO.InternalAppendLog( "The core version 4.1 is not supported." ); throw new Exception( "Final Version" ); } @@ -3866,8 +4395,7 @@ namespace StgSharp.Graphics.OpenGL "glActiveShaderProgram" ); contextPtr->glBindProgramPipeline = ( delegate* )load( "glBindProgramPipeline" ); - contextPtr->glClearDepthf = ( delegate* )load( - "glClearDepthf" ); + contextPtr->glClearDepthf = ( delegate* )load( "glClearDepthf" ); contextPtr->glCreateShaderProgramv = ( delegate* )load( "glCreateShaderProgramv" ); contextPtr->glDeleteProgramPipelines = ( delegate* )load( @@ -3876,8 +4404,7 @@ namespace StgSharp.Graphics.OpenGL "glDepthRangeArrayv" ); contextPtr->glDepthRangeIndexed = ( delegate* )load( "glDepthRangeIndexed" ); - contextPtr->glDepthRangef = ( delegate* )load( - "glDepthRangef" ); + contextPtr->glDepthRangef = ( delegate* )load( "glDepthRangef" ); contextPtr->glGenProgramPipelines = ( delegate* )load( "glGenProgramPipelines" ); contextPtr->glGetDoublei_v = ( delegate* )load( @@ -3894,8 +4421,7 @@ namespace StgSharp.Graphics.OpenGL "glGetShaderPrecisionFormat" ); contextPtr->glGetVertexAttribLdv = ( delegate* )load( "glGetVertexAttribLdv" ); - contextPtr->glIsProgramPipeline = ( delegate* )load( - "glIsProgramPipeline" ); + contextPtr->glIsProgramPipeline = ( delegate* )load( "glIsProgramPipeline" ); contextPtr->glProgramBinary = ( delegate* )load( "glProgramBinary" ); contextPtr->glProgramParameteri = ( delegate* )load( @@ -4041,17 +4567,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core42 ) { - InternalIO.InternalAppendLog( - "The core version 4.2 is not supported." ); + if( !core42 ) + { + InternalIO.InternalAppendLog( "The core version 4.2 is not supported." ); throw new Exception( "Final Version" ); } @@ -4073,8 +4598,7 @@ namespace StgSharp.Graphics.OpenGL "glGetActiveAtomicCounterBufferiv" ); contextPtr->glGetInternalformativ = ( delegate* )load( "glGetInternalformativ" ); - contextPtr->glMemoryBarrier = ( delegate* )load( - "glMemoryBarrier" ); + contextPtr->glMemoryBarrier = ( delegate* )load( "glMemoryBarrier" ); contextPtr->glTexStorage1D = ( delegate* )load( "glTexStorage1D" ); contextPtr->glTexStorage2D = ( delegate* )load( @@ -4084,17 +4608,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core43 ) { - InternalIO.InternalAppendLog( - "The core version 4.3 is not supported." ); + if( !core43 ) + { + InternalIO.InternalAppendLog( "The core version 4.3 is not supported." ); throw new Exception( "Final Version" ); } @@ -4130,8 +4653,7 @@ namespace StgSharp.Graphics.OpenGL "glGetObjectLabel" ); contextPtr->glGetObjectPtrLabel = ( delegate* )load( "glGetObjectPtrLabel" ); - contextPtr->glGetPointerv = ( delegate* )load( - "glGetPointerv" ); + contextPtr->glGetPointerv = ( delegate* )load( "glGetPointerv" ); contextPtr->glGetProgramInterfaceiv = ( delegate* )load( "glGetProgramInterfaceiv" ); contextPtr->glGetProgramResourceIndex = ( delegate* )load( @@ -4164,8 +4686,7 @@ namespace StgSharp.Graphics.OpenGL "glObjectLabel" ); contextPtr->glObjectPtrLabel = ( delegate* )load( "glObjectPtrLabel" ); - contextPtr->glPopDebugGroup = ( delegate* )load( - "glPopDebugGroup" ); + contextPtr->glPopDebugGroup = ( delegate* )load( "glPopDebugGroup" ); contextPtr->glPushDebugGroup = ( delegate* )load( "glPushDebugGroup" ); contextPtr->glShaderStorageBlockBinding = ( delegate* )load( @@ -4191,17 +4712,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core44 ) { - InternalIO.InternalAppendLog( - "The core version 4.4 is not supported." ); + if( !core44 ) + { + InternalIO.InternalAppendLog( "The core version 4.4 is not supported." ); throw new Exception( "Final Version" ); } @@ -4228,17 +4748,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core45 ) { - InternalIO.InternalAppendLog( - "The core version 4.5 is not supported." ); + if( !core45 ) + { + InternalIO.InternalAppendLog( "The core version 4.5 is not supported." ); throw new Exception( "Final Version" ); } @@ -4262,8 +4781,7 @@ namespace StgSharp.Graphics.OpenGL "glClearNamedFramebufferiv" ); contextPtr->glClearNamedFramebufferuiv = ( delegate* )load( "glClearNamedFramebufferuiv" ); - contextPtr->glClipControl = ( delegate* )load( - "glClipControl" ); + contextPtr->glClipControl = ( delegate* )load( "glClipControl" ); contextPtr->glCompressedTextureSubImage1D = ( delegate* )load( "glCompressedTextureSubImage1D" ); contextPtr->glCompressedTextureSubImage2D = ( delegate* )load( @@ -4278,8 +4796,7 @@ namespace StgSharp.Graphics.OpenGL "glCopyTextureSubImage2D" ); contextPtr->glCopyTextureSubImage3D = ( delegate* )load( "glCopyTextureSubImage3D" ); - contextPtr->glCreateBuffers = ( delegate* )load( - "glCreateBuffers" ); + contextPtr->glCreateBuffers = ( delegate* )load( "glCreateBuffers" ); contextPtr->glCreateFramebuffers = ( delegate* )load( "glCreateFramebuffers" ); contextPtr->glCreateProgramPipelines = ( delegate* )load( @@ -4408,8 +4925,7 @@ namespace StgSharp.Graphics.OpenGL "glNamedRenderbufferStorageMultisample" ); contextPtr->glReadnPixels = ( delegate* )load( "glReadnPixels" ); - contextPtr->glTextureBarrier = ( delegate* )load( - "glTextureBarrier" ); + contextPtr->glTextureBarrier = ( delegate* )load( "glTextureBarrier" ); contextPtr->glTextureBuffer = ( delegate* )load( "glTextureBuffer" ); contextPtr->glTextureBufferRange = ( delegate* )load( @@ -4446,8 +4962,7 @@ namespace StgSharp.Graphics.OpenGL "glTransformFeedbackBufferBase" ); contextPtr->glTransformFeedbackBufferRange = ( delegate* )load( "glTransformFeedbackBufferRange" ); - contextPtr->glUnmapNamedBuffer = ( delegate* )load( - "glUnmapNamedBuffer" ); + contextPtr->glUnmapNamedBuffer = ( delegate* )load( "glUnmapNamedBuffer" ); contextPtr->glVertexArrayAttribBinding = ( delegate* )load( "glVertexArrayAttribBinding" ); contextPtr->glVertexArrayAttribFormat = ( delegate* )load( @@ -4467,17 +4982,16 @@ namespace StgSharp.Graphics.OpenGL #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 ) + OpenglContext* contextPtr, + delegate* load ) { - if( !core46 ) { - InternalIO.InternalAppendLog( - "The core version 4.6 is not supported." ); + if( !core46 ) + { + InternalIO.InternalAppendLog( "The core version 4.6 is not supported." ); throw new Exception( "Final Version" ); } @@ -4494,8 +5008,7 @@ namespace StgSharp.Graphics.OpenGL #endregion load - InternalIO.InternalAppendLog( - "Successfully load all OpenGL 4.6 APIs" ); + InternalIO.InternalAppendLog( "Successfully load all OpenGL 4.6 APIs" ); } } diff --git a/StgSharp.Common/Graphics/OpenGL/glClampf.cs b/StgSharp.Common/Graphics/OpenGL/glClampf.cs index 9151b666..a1034d60 100644 --- a/StgSharp.Common/Graphics/OpenGL/glClampf.cs +++ b/StgSharp.Common/Graphics/OpenGL/glClampf.cs @@ -38,7 +38,7 @@ using System.Threading.Tasks; namespace StgSharp.Internal { /// - /// 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 )] public struct GLclampf @@ -64,8 +64,8 @@ namespace StgSharp.Internal } /// - /// 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 )] public struct GLclampd diff --git a/StgSharp.Common/Graphics/OpenGL/glConst.cs b/StgSharp.Common/Graphics/OpenGL/glConst.cs index 7f2f8355..ec723f0b 100644 --- a/StgSharp.Common/Graphics/OpenGL/glConst.cs +++ b/StgSharp.Common/Graphics/OpenGL/glConst.cs @@ -4851,7 +4851,8 @@ namespace StgSharp.Graphics.OpenGL public static uint Color( int i ) { #if DEBUG - if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) { + if( ( i > OpenGLFunction.CurrentGL.AttachmentColorRange ) || ( i < 0 ) ) + { throw new ArgumentOutOfRangeException(); } #endif diff --git a/StgSharp.Common/Graphics/OpenGL/glContext.cs b/StgSharp.Common/Graphics/OpenGL/glContext.cs index a156d2af..cdcd11e0 100644 --- a/StgSharp.Common/Graphics/OpenGL/glContext.cs +++ b/StgSharp.Common/Graphics/OpenGL/glContext.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glContext.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.HighPerformance; using StgSharp.Internal; using StgSharp.Internal.Intrinsic; @@ -57,16 +56,12 @@ namespace StgSharp.Graphics.OpenGL } } - public static bool operator !=( - OpenglContext left, - OpenglContext right ) + public static bool operator !=( OpenglContext left, OpenglContext right ) { return !( left == right ); } - public static bool operator ==( - OpenglContext left, - OpenglContext right ) + public static bool operator ==( OpenglContext left, OpenglContext right ) { return left.Equals( right ); } @@ -95,7 +90,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glAsyncCopyBufferSubDataNVX; internal unsafe delegate* glAsyncCopyImageSubDataNVX; internal unsafe delegate* glAsyncMarkerSGIX; - internal unsafe delegate* glAttachObjectARB; + internal unsafe delegate* glAttachObjectARB; internal unsafe delegate* glAttachShader; internal unsafe delegate* glBeginConditionalRender; internal unsafe delegate* glBeginConditionalRenderNV; @@ -113,7 +108,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glBeginVertexShaderEXT; internal unsafe delegate* glBeginVideoCaptureNV; internal unsafe delegate* glBindAttribLocation; - internal unsafe delegate* glBindAttribLocationARB; + internal unsafe delegate* glBindAttribLocationARB; internal unsafe delegate* glBindBuffer; internal unsafe delegate* glBindBufferARB; internal unsafe delegate* glBindBufferBase; @@ -301,7 +296,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCommandListSegmentsNV; internal unsafe delegate* glCompileCommandListNV; internal unsafe delegate* glCompileShader; - internal unsafe delegate* glCompileShaderARB; + internal unsafe delegate* glCompileShaderARB; internal unsafe delegate* glCompileShaderIncludeARB; internal unsafe delegate* glCompressedMultiTexImage1DEXT; internal unsafe delegate* glCompressedMultiTexImage2DEXT; @@ -384,7 +379,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCreateMemoryObjectsEXT; internal unsafe delegate* glCreatePerfQueryINTEL; internal unsafe delegate* glCreateProgram; - internal unsafe delegate* glCreateProgramObjectARB; + internal unsafe delegate* glCreateProgramObjectARB; internal unsafe delegate* glCreateProgramPipelines; internal unsafe delegate* glCreateProgressFenceNVX; internal unsafe delegate* glCreateQueries; @@ -392,7 +387,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glCreateSamplers; internal unsafe delegate* glCreateSemaphoresNV; internal unsafe delegate* glCreateShader; - internal unsafe delegate* glCreateShaderObjectARB; + internal unsafe delegate* glCreateShaderObjectARB; internal unsafe delegate* glCreateShaderProgramEXT; internal unsafe delegate* glCreateShaderProgramv; internal unsafe delegate* glCreateStatesNV; @@ -428,7 +423,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glDeleteMemoryObjectsEXT; internal unsafe delegate* glDeleteNamedStringARB; internal unsafe delegate* glDeleteNamesAMD; - internal unsafe delegate* glDeleteObjectARB; + internal unsafe delegate* glDeleteObjectARB; internal unsafe delegate* glDeleteOcclusionQueriesNV; internal unsafe delegate* glDeletePathsNV; internal unsafe delegate* glDeletePerfMonitorsAMD; @@ -467,7 +462,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glDepthRangef; internal unsafe delegate* glDepthRangefOES; internal unsafe delegate* glDepthRangexOES; - internal unsafe delegate* glDetachObjectARB; + internal unsafe delegate* glDetachObjectARB; internal unsafe delegate* glDetachShader; internal unsafe delegate* glDetailTexFuncSGIS; internal unsafe delegate* glDisable; @@ -682,12 +677,12 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGenerateTextureMipmapEXT; internal unsafe delegate* glGetActiveAtomicCounterBufferiv; internal unsafe delegate* glGetActiveAttrib; - internal unsafe delegate* glGetActiveAttribARB; + internal unsafe delegate* glGetActiveAttribARB; internal unsafe delegate* glGetActiveSubroutineName; internal unsafe delegate* glGetActiveSubroutineUniformName; internal unsafe delegate* glGetActiveSubroutineUniformiv; internal unsafe delegate* glGetActiveUniform; - internal unsafe delegate* glGetActiveUniformARB; + internal unsafe delegate* glGetActiveUniformARB; internal unsafe delegate* glGetActiveUniformBlockName; internal unsafe delegate* glGetActiveUniformBlockiv; internal unsafe delegate* glGetActiveUniformName; @@ -695,10 +690,10 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetActiveVaryingNV; internal unsafe delegate* glGetArrayObjectfvATI; internal unsafe delegate* glGetArrayObjectivATI; - internal unsafe delegate* glGetAttachedObjectsARB; + internal unsafe delegate* glGetAttachedObjectsARB; internal unsafe delegate* glGetAttachedShaders; internal unsafe delegate* glGetAttribLocation; - internal unsafe delegate* glGetAttribLocationARB; + internal unsafe delegate* glGetAttribLocationARB; internal unsafe delegate* glGetBooleanIndexedvEXT; internal unsafe delegate* glGetBooleani_v; internal unsafe delegate* glGetBooleanv; @@ -769,7 +764,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetFramebufferParameterivMESA; internal unsafe delegate* glGetGraphicsResetStatus; internal unsafe delegate* glGetGraphicsResetStatusARB; - internal unsafe delegate* glGetHandleARB; + internal unsafe delegate* glGetHandleARB; internal unsafe delegate* glGetHistogramEXT; internal unsafe delegate* glGetHistogramParameterfvEXT; internal unsafe delegate* glGetHistogramParameterivEXT; @@ -778,7 +773,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetImageHandleNV; internal unsafe delegate* glGetImageTransformParameterfvHP; internal unsafe delegate* glGetImageTransformParameterivHP; - internal unsafe delegate* glGetInfoLogARB; + internal unsafe delegate* glGetInfoLogARB; internal unsafe delegate* glGetInstrumentsSGIX; internal unsafe delegate* glGetInteger64i_v; internal unsafe delegate* glGetInteger64v; @@ -853,9 +848,9 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetObjectBufferivATI; internal unsafe delegate* glGetObjectLabel; internal unsafe delegate* glGetObjectLabelEXT; - internal unsafe delegate* glGetObjectParameterfvARB; + internal unsafe delegate* glGetObjectParameterfvARB; internal unsafe delegate* glGetObjectParameterivAPPLE; - internal unsafe delegate* glGetObjectParameterivARB; + internal unsafe delegate* glGetObjectParameterivARB; internal unsafe delegate* glGetObjectPtrLabel; internal unsafe delegate* glGetOcclusionQueryivNV; internal unsafe delegate* glGetOcclusionQueryuivNV; @@ -944,7 +939,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetShaderInfoLog; internal unsafe delegate* glGetShaderPrecisionFormat; internal unsafe delegate* glGetShaderSource; - internal unsafe delegate* glGetShaderSourceARB; + internal unsafe delegate* glGetShaderSourceARB; internal unsafe delegate* glGetShaderiv; internal unsafe delegate* glGetShadingRateImagePaletteNV; internal unsafe delegate* glGetShadingRateSampleLocationivNV; @@ -1002,16 +997,16 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glGetUniformBufferSizeEXT; internal unsafe delegate* glGetUniformIndices; internal unsafe delegate* glGetUniformLocation; - internal unsafe delegate* glGetUniformLocationARB; + internal unsafe delegate* glGetUniformLocationARB; internal unsafe delegate* glGetUniformOffsetEXT; internal unsafe delegate* glGetUniformSubroutineuiv; internal unsafe delegate* glGetUniformdv; internal unsafe delegate* glGetUniformfv; - internal unsafe delegate* glGetUniformfvARB; + internal unsafe delegate* glGetUniformfvARB; internal unsafe delegate* glGetUniformi64vARB; internal unsafe delegate* glGetUniformi64vNV; internal unsafe delegate* glGetUniformiv; - internal unsafe delegate* glGetUniformivARB; + internal unsafe delegate* glGetUniformivARB; internal unsafe delegate* glGetUniformui64vARB; internal unsafe delegate* glGetUniformui64vNV; internal unsafe delegate* glGetUniformuiv; @@ -1178,7 +1173,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glLineWidth; internal unsafe delegate* glLineWidthxOES; internal unsafe delegate* glLinkProgram; - internal unsafe delegate* glLinkProgramARB; + internal unsafe delegate* glLinkProgramARB; internal unsafe delegate* glListDrawCommandsStatesClientNV; internal unsafe delegate* glListParameterfSGIX; internal unsafe delegate* glListParameterfvSGIX; @@ -1844,7 +1839,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glShaderOp2EXT; internal unsafe delegate* glShaderOp3EXT; internal unsafe delegate* unmanaged[Stdcall] glShaderSource; - internal unsafe delegate* glShaderSourceARB; + internal unsafe delegate* glShaderSourceARB; internal unsafe delegate* glShaderStorageBlockBinding; internal unsafe delegate* glShadingRateImageBarrierNV; internal unsafe delegate* glShadingRateImagePaletteNV; @@ -2196,7 +2191,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glUpdateObjectBufferATI; internal unsafe delegate* glUploadGpuMaskNVX; internal unsafe delegate* glUseProgram; - internal unsafe delegate* glUseProgramObjectARB; + internal unsafe delegate* glUseProgramObjectARB; internal unsafe delegate* glUseProgramStages; internal unsafe delegate* glUseShaderProgramEXT; internal unsafe delegate* glVDPAUFiniNV; @@ -2211,7 +2206,7 @@ namespace StgSharp.Graphics.OpenGL internal unsafe delegate* glVDPAUUnmapSurfacesNV; internal unsafe delegate* glVDPAUUnregisterSurfaceNV; internal unsafe delegate* glValidateProgram; - internal unsafe delegate* glValidateProgramARB; + internal unsafe delegate* glValidateProgramARB; internal unsafe delegate* glValidateProgramPipeline; internal unsafe delegate* glVariantArrayObjectATI; internal unsafe delegate* glVariantPointerEXT; diff --git a/StgSharp.Common/Graphics/OpenGL/glEnum.cs b/StgSharp.Common/Graphics/OpenGL/glEnum.cs index 4dd00bbc..c9895567 100644 --- a/StgSharp.Common/Graphics/OpenGL/glEnum.cs +++ b/StgSharp.Common/Graphics/OpenGL/glEnum.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glEnum.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,13 +28,13 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System.Runtime.CompilerServices; namespace StgSharp.Graphics.OpenGL { public enum PixelChannelLayout { + UByte = glConst.UNSIGNED_BYTE, Byte = glConst.BYTE, UShort = glConst.UNSIGNED_SHORT, @@ -54,6 +54,16 @@ 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 FaceMode + { + + Point = glConst.POINT, + Line = glConst.LINE, + Fill = glConst.FILL + } public enum FrameBufferStatus @@ -125,12 +135,18 @@ namespace StgSharp.Graphics.OpenGL public enum glOperation : uint { + StencilTest = glConst.STENCIL_TEST, + DepthTest = glConst.DEPTH_TEST, + PolygonOffsetFill = glConst.POLYGON_OFFSET_FILL, + PolygonOffsetLine = glConst.POLYGON_OFFSET_LINE, + PolygonOffsetPoint = glConst.POLYGON_OFFSET_POINT, + } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum ShaderType : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { Fragment = glConst.FRAGMENT_SHADER, @@ -140,9 +156,9 @@ namespace StgSharp.Graphics.OpenGL } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum BufferType : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { ArrayBuffer = glConst.ARRAY_BUFFER, @@ -162,9 +178,9 @@ namespace StgSharp.Graphics.OpenGL } -#pragma warning disable CA1008 + #pragma warning disable CA1008 public enum BufferUsage : int -#pragma warning restore CA1008 + #pragma warning restore CA1008 { StreamDraw = 0x88E0, diff --git a/StgSharp.Common/Graphics/OpenGL/glException.cs b/StgSharp.Common/Graphics/OpenGL/glException.cs index 6f6b902f..da15f02d 100644 --- a/StgSharp.Common/Graphics/OpenGL/glException.cs +++ b/StgSharp.Common/Graphics/OpenGL/glException.cs @@ -60,19 +60,13 @@ namespace StgSharp.Graphics.OpenGL internal GlArrayFormatException( string message ) : base( message ) { } - internal GlArrayFormatException( - SerializationInfo info, - StreamingContext context ) + internal GlArrayFormatException( SerializationInfo info, StreamingContext context ) : base( info, context ) { } - internal GlArrayFormatException( - string message, - Exception innerException ) + internal GlArrayFormatException( string message, Exception innerException ) : base( message, innerException ) { } - public GlArrayFormatException( - PixelChannelLayout layout, - string arrayname ) + public GlArrayFormatException( PixelChannelLayout layout, string arrayname ) : base( $"{arrayname} cannot be used as layout of {layout}" ) { } } @@ -80,13 +74,12 @@ namespace StgSharp.Graphics.OpenGL public static partial class GlHelper { - public static bool CheckArrayFormat( - this Array array, - PixelChannelLayout layout ) + public static bool CheckArrayFormat( this Array array, PixelChannelLayout layout ) { return layout switch { - PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev => ( array is byte[] ) || ( array is sbyte[] ), + PixelChannelLayout.Byte or PixelChannelLayout.UByte332 or PixelChannelLayout.UByte233Rev => ( array is byte[] ) || + ( array is sbyte[] ), PixelChannelLayout.Short => array is short[], PixelChannelLayout.UShort => array is ushort[], PixelChannelLayout.Int => array is int[], diff --git a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs index 0853b013..b41d2845 100644 --- a/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs +++ b/StgSharp.Common/Graphics/OpenGL/glFucntionSourceManager.cs @@ -55,7 +55,8 @@ namespace StgSharp.Graphics.OpenGL internal void ReturnAvailableUnit( IEnumerable source ) { int v = glConst.TEXTURE0 + TextureUnitCount; - foreach( TextureUnit unit in source ) { + foreach( TextureUnit unit in source ) + { if( ( int )unit > v ) { throw new InvalidOperationException( "Source contains texture unit beyond context support." ); @@ -63,15 +64,16 @@ namespace StgSharp.Graphics.OpenGL } } - internal int TryGetAvailableTextureUnit( - int count, - out IEnumerable result ) + internal int TryGetAvailableTextureUnit( int count, out IEnumerable result ) { result = new Queue(); - for( int i = 0; i < count; i++ ) { - if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) { + for( int i = 0; i < count; i++ ) + { + if( UnusedTextureImageUint.TryDequeue( out TextureUnit unit ) ) + { ( result as Queue )!.Enqueue( unit ); - } else { + } else + { return i; } } @@ -80,8 +82,7 @@ namespace StgSharp.Graphics.OpenGL private ConcurrentQueue InitializeUnusedTextureImageUint() { - ConcurrentQueue result = new ConcurrentQueue( - ); + ConcurrentQueue result = new ConcurrentQueue(); for( int index = 0; index < TextureUnitCount; index++ ) { result.Enqueue( ( TextureUnit )( glConst.TEXTURE0 + index ) ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glFunction.cs b/StgSharp.Common/Graphics/OpenGL/glFunction.cs index 80f19661..9bf51b4a 100644 --- a/StgSharp.Common/Graphics/OpenGL/glFunction.cs +++ b/StgSharp.Common/Graphics/OpenGL/glFunction.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glFunction.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -128,10 +128,10 @@ namespace StgSharp.Graphics.OpenGL /// 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 )] @@ -283,7 +283,7 @@ namespace StgSharp.Graphics.OpenGL /// 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 ) @@ -303,6 +303,23 @@ namespace StgSharp.Graphics.OpenGL } } + public void DepthMaskAccess( bool isWrite ) + { + Context.glDepthMask( isWrite ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void Disable( glOperation operation ) + { + Context.glDisable( ( uint )operation ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public unsafe void DrawArrays( GeometryType mode, int first, uint count ) + { + Context.glDrawArrays( ( uint )mode, first, count ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void DrawElements( GeometryType mode, uint count, TypeCode type, IntPtr ptr ) { @@ -340,7 +357,6 @@ namespace StgSharp.Graphics.OpenGL case TypeCode.Byte: a = glConst.UNSIGNED_BYTE; break; - default: InternalIO.InternalWriteLog( $"{$"Parameter error in parameter {nameof(type)} method DrawElements. "}{$"Only {typeof(uint).Name},{typeof(ushort).Name},{typeof(byte).Name} types are supported."}", @@ -525,6 +541,18 @@ namespace StgSharp.Graphics.OpenGL } } + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void PolygonMode( FaceMode mode ) + { + Context.glPolygonMode( glConst.FRONT_AND_BACK, ( uint )mode ); + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public void PolygonOffset( float factor, float unit ) + { + Context.glPolygonOffset( factor, unit ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void ReadPixels( (int X, int Y) beginPosition, @@ -595,16 +623,16 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void SetBufferData( BufferType bufferType, - ReadOnlySpan bufferArray, + ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct,INumber { - int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); - if( bufferArray == null ) { + int size = bufferSpan.Length * Marshal.SizeOf( typeof( T ) ); + if( bufferSpan == null ) { return; } #pragma warning disable CS8500 - fixed( void* bufferPtr = bufferArray ) + fixed( void* bufferPtr = bufferSpan ) #pragma warning restore CS8500 { Context.glBufferData( @@ -625,7 +653,7 @@ namespace StgSharp.Graphics.OpenGL } #pragma warning disable CS8500 - fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + fixed( void* bufferPtr = bufferArray ) #pragma warning restore CS8500 { Context.glBufferData( @@ -636,16 +664,13 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public unsafe void SetBufferVectorData( BufferType bufferType, - ReadOnlySpan bufferArray, + ReadOnlySpan bufferSpan, BufferUsage usage ) where T: struct, IVector { - int size = bufferArray.Length * Marshal.SizeOf( typeof( T ) ); - if( bufferArray == null ) { - return; - } + int size = bufferSpan.Length * Marshal.SizeOf( typeof( T ) ); #pragma warning disable CS8500 - fixed( void* bufferPtr = &bufferArray.GetPinnableReference() ) + fixed( void* bufferPtr = bufferSpan ) #pragma warning restore CS8500 { Context.glBufferData( @@ -783,6 +808,7 @@ namespace StgSharp.Graphics.OpenGL Context.glViewport( x, y, width, height ); } + [MethodImpl( MethodImplOptions.AggressiveInlining )] public void WaitAccomplishment() { Context.glFinish(); diff --git a/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs index 47e5e0f2..0f83ee16 100644 --- a/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs +++ b/StgSharp.Common/Graphics/OpenGL/glHalfNV.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glHalfNV.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,7 +35,7 @@ using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; -namespace StgSharp.Internal.OpenGL +namespace StgSharp.Graphics.OpenGL { [StructLayout( LayoutKind.Explicit, Size = 16 )] public struct glHalfNV @@ -48,9 +48,14 @@ namespace StgSharp.Internal.OpenGL binary = bin; } - public static glHalfNV FromInt16(short x) + public static glHalfNV FromInt16( short x ) { - return new glHalfNV(x); + return new glHalfNV( x ); + } + + public static short ToInt16( glHalfNV half ) + { + return half.binary; } public static explicit operator glHalfNV( short x ) @@ -58,11 +63,6 @@ namespace StgSharp.Internal.OpenGL return new glHalfNV( x ); } - public static short ToInt16(glHalfNV half) - { - return half.binary; - } - public static explicit operator short( glHalfNV x ) { return x.binary; diff --git a/StgSharp.Common/Graphics/OpenGL/glHandle.cs b/StgSharp.Common/Graphics/OpenGL/glHandle.cs index fd94a7ad..259c6ea1 100644 --- a/StgSharp.Common/Graphics/OpenGL/glHandle.cs +++ b/StgSharp.Common/Graphics/OpenGL/glHandle.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glHandle.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,24 +46,33 @@ namespace StgSharp.Graphics.OpenGL public struct GlHandle { - [FieldOffset( 0 )] public int SignedValue; - [FieldOffset( 0 )] public uint Value; + [FieldOffset( 0 )] internal int SignedValue; + [FieldOffset( 0 )] internal uint Value; public static GlHandle Zero { - get => new GlHandle { Value = 0 }; + get => new GlHandle + { + Value = 0 + }; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static GlHandle Alloc( uint value ) { - return new GlHandle { Value = value }; + return new GlHandle + { + Value = value + }; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static GlHandle SignedAlloc( int value ) { - return new GlHandle { SignedValue = value }; + return new GlHandle + { + SignedValue = value + }; } } diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs index 045376c1..a8eb0d86 100644 --- a/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs +++ b/StgSharp.Common/Graphics/OpenGL/glRenderObjectGenrator.cs @@ -1,6 +1,6 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -// file="glRenderSourceGenrator.cs" +// file="glRenderObjectGenrator.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. @@ -48,10 +48,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of EBO to be created. - /// + /// + /// Amount of EBO to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected ElementBuffer CreateElementBuffer( int count ) { @@ -71,10 +75,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a sets of + /// Create a sets of /// - /// Amount of textures to be created. - /// + /// + /// Amount of textures to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected TextureGL CreateTexture( int count ) { @@ -82,10 +90,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of VAO to be created. - /// + /// + /// Amount of VAO to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected VertexArray CreateVertexArray( int count ) { @@ -93,10 +105,14 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Create a set of . + /// Create a set of . /// - /// Amount of Object to be created. - /// + /// + /// Amount of Object to be created. + /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] protected VertexBuffer CreateVertexBuffer( int count ) { diff --git a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs index 478b6ef9..bb468836 100644 --- a/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs +++ b/StgSharp.Common/Graphics/OpenGL/glRenderStream.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glRenderStream.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -58,29 +58,28 @@ namespace StgSharp.Graphics.OpenGL } /// - /// Initialize an opengl context and load all opengl functions. + /// Initialize an opengl context and load all opengl functions. /// public unsafe void InitializeContext() { - if( ContextHandle == default ) { - ContextHandle = Marshal.AllocHGlobal( - Marshal.SizeOf( typeof( OpenglContext ) ) ); + 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 ); + _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. + /// 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. + /// Something goes wrong and World fails in creating a new OpenGL viewPortDisplay. /// public unsafe void MakeAsCurrentContext() { @@ -91,8 +90,7 @@ namespace StgSharp.Graphics.OpenGL /// public override void RenderEnd() { - if( !renderToThread.TryGetValue( this, - out Thread t ) || t != Thread.CurrentThread ) { + if( !renderToThread.TryGetValue( this, out Thread t ) || t != Thread.CurrentThread ) { throw new InvalidOperationException( $"Current render has had been binded to thread {t!.ManagedThreadId}" ); } @@ -106,8 +104,8 @@ namespace StgSharp.Graphics.OpenGL public override void RenderStart() { Thread current = Thread.CurrentThread; - if( !renderToThread.TryGetValue( this, - out Thread t ) || t == ThreadHelper.EmptyThread ) { + if( !renderToThread.TryGetValue( this, out Thread t ) || t == ThreadHelper.EmptyThread ) + { renderToThread[ this ] = current; MakeAsCurrentContext(); return; @@ -120,10 +118,10 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] public override void SetSizeLimit( - int minWidth, - int minHeight, - int maxWidth, - int maxHeight ) + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ) { InternalIO.glfwSetWindowSizeLimits( this.CanvasHandle, minWidth, minHeight, maxWidth, maxHeight ); @@ -144,8 +142,8 @@ namespace StgSharp.Graphics.OpenGL } protected override sealed Uniform NativeCameraUniform( - ShaderProgram source, - string name ) + ShaderProgram source, + string name ) { NativeCamera.GainAllUniforms( source, name ); return NativeCamera.convertedUniform; @@ -153,18 +151,18 @@ namespace StgSharp.Graphics.OpenGL [MethodImpl( MethodImplOptions.AggressiveInlining )] protected override sealed void NativeCameraViewRange( - Radius fieldOfRange, - Vec2 offset, - (float frontDepth, float backDepth) viewDepth ) + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ) { - NativeCamera.SetViewRange( - fieldOfRange, this.Size, offset, viewDepth ); + NativeCamera.SetViewRange( fieldOfRange, this.Size, offset, viewDepth ); } + [MethodImpl( MethodImplOptions.AggressiveInlining )] protected override sealed void NativeCameraViewTarget( - Vec3 position, - Vec3 direction, - Vec3 up ) + Vec3 position, + Vec3 direction, + Vec3 up ) { NativeCamera.SetViewDirection( position, direction, up ); } diff --git a/StgSharp.Common/Graphics/OpenGL/glType.cs b/StgSharp.Common/Graphics/OpenGL/glType.cs index d4f7dfc1..d521626d 100644 --- a/StgSharp.Common/Graphics/OpenGL/glType.cs +++ b/StgSharp.Common/Graphics/OpenGL/glType.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glType.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -37,24 +36,26 @@ using System.Text; namespace StgSharp.Internal.OpenGL { - public delegate IntPtr GLfuncLoader( string name ); - internal delegate void GLVULKANPROCNV(); - public unsafe struct GLhandleARB + public unsafe struct glHandleARB { 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; @@ -68,81 +69,10 @@ namespace StgSharp.Internal.OpenGL } } - public static implicit operator uint( GLhandleARB value ) + public static implicit operator uint( glHandleARB 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 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 ); - 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 - } \ No newline at end of file diff --git a/StgSharp.Common/Graphics/Pixels.cs b/StgSharp.Common/Graphics/Pixels.cs index dd4b3d15..8634b7a1 100644 --- a/StgSharp.Common/Graphics/Pixels.cs +++ b/StgSharp.Common/Graphics/Pixels.cs @@ -38,34 +38,15 @@ namespace StgSharp.Graphics public interface IPixel { - public float Red - { - get; - set; - } + public float Red { get; set; } - public float Green - { - get; - set; - } + public float Green { get; set; } - public float Blue - { - get; - set; - } + public float Blue { get; set; } - public float Alpha - { - get; - set; - } + public float Alpha { get; set; } - internal int Size - { - get; - } + internal int Size { get; } } diff --git a/StgSharp.Common/Graphics/PlainGeometryMesh.cs b/StgSharp.Common/Graphics/PlainGeometryMesh.cs index 11666a61..c1e9e4ef 100644 --- a/StgSharp.Common/Graphics/PlainGeometryMesh.cs +++ b/StgSharp.Common/Graphics/PlainGeometryMesh.cs @@ -46,9 +46,7 @@ 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( @@ -61,10 +59,7 @@ namespace StgSharp.Graphics //private Image _texture; - public PlainGeometryMesh( - PlainGeometry shape, - Image texture, - Vec2[] texCoord ) + public PlainGeometryMesh( PlainGeometry shape, Image texture, Vec2[] texCoord ) { ArgumentNullException.ThrowIfNull( shape ); ArgumentNullException.ThrowIfNull( texCoord ); diff --git a/StgSharp.Common/Graphics/RenderStream.cs b/StgSharp.Common/Graphics/RenderStream.cs index f841362e..090f38a2 100644 --- a/StgSharp.Common/Graphics/RenderStream.cs +++ b/StgSharp.Common/Graphics/RenderStream.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="RenderStream.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -32,7 +32,6 @@ using StgSharp.Graphics.OpenGL; using StgSharp.Math; using StgSharp.MVVM; -using StgSharp.MVVM.View; using StgSharp.Timing; using System; @@ -50,8 +49,9 @@ namespace StgSharp.Graphics public abstract class RenderStream { - private protected ViewPort primeArgs; private Camera nativeCamera; + + private protected ViewPort primeArgs; internal TimeSpanProvider _timeProvider; public (int width, int height) Size @@ -59,10 +59,7 @@ namespace StgSharp.Graphics get => (Width, Height); } - public abstract bool IsContextSharable - { - get; - } + public abstract bool IsContextSharable { get; } public int Height { @@ -93,7 +90,7 @@ namespace StgSharp.Graphics internal IntPtr CanvasHandle { - get => primeArgs.ViewPortID; + get => primeArgs.ViewPortHandle; } internal IntPtr ContextHandle @@ -129,28 +126,33 @@ namespace StgSharp.Graphics } /// - /// Set the size limit of current form + /// 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 + /// + /// 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 ); + int minWidth, + int minHeight, + int maxWidth, + int maxHeight ); - public static TTarget ShareContextFrom( - [NotNull]TSource source ) + public static TTarget ShareContextFrom( [NotNull]TSource source ) where TSource: RenderStream where TTarget: RenderStream, new() { TTarget target = new TTarget(); - target.Initialize( - source.BindedViewPortContext, - source._timeProvider ); + target.Initialize( source.BindedViewPortContext, source._timeProvider ); return target; } @@ -170,38 +172,37 @@ namespace StgSharp.Graphics #region native camera operation protected abstract void NativeCameraViewRange( - Radius fieldOfRange, - Vec2 offset, - (float frontDepth, float backDepth) viewDepth ); + Radius fieldOfRange, + Vec2 offset, + (float frontDepth, float backDepth) viewDepth ); - protected abstract void NativeCameraViewTarget( - Vec3 position, - Vec3 direction, - Vec3 up ); + 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 ); + ShaderProgram source, + string name ); #endregion #region internal operation - public void Initialize( - ViewPort v, - TimeSpanProvider timeProvider ) + public void Initialize( ViewPort v, TimeSpanProvider timeProvider ) { if( v == null ) { throw new ArgumentNullException( nameof( v ) ); @@ -227,13 +228,14 @@ namespace StgSharp.Graphics protected abstract void CustomizeInit(); /// - /// Marking the start of current render operations, and set this renser context as current. + /// 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. + /// 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(); @@ -241,9 +243,7 @@ namespace StgSharp.Graphics #region public resource generator - protected abstract Shader CreateShaderSegment( - ShaderType type, - int count ); + protected abstract Shader CreateShaderSegment( ShaderType type, int count ); protected abstract ShaderProgram CreateShaderProgram(); diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs index 48878e6a..96a4d037 100644 --- a/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderGenerator.cs @@ -48,11 +48,9 @@ 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() ); + ShaderParameter p = new ShaderParameter( name, ShaderParameter.TypeMarshal() ); uniformDefine.Add( index, p ); //return new Uniform(); @@ -72,23 +70,26 @@ namespace StgSharp.Graphics.ShaderEdit public int ParameterCount => inputList.Count; public void EmitCall( - ShaderFunction function, - ShaderParameter outPut, - params ShaderParameter[] inputParams ) + 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." ); } - if( !ShaderParameter.IsSameType( outPut, function.outPut ) ) { + if( !ShaderParameter.IsSameType( outPut, function.outPut ) ) + { // Type of returning value not equal throw new ArgumentException( "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 InvalidCastException( "Provided parameters does not match function's parameter list." ); @@ -124,20 +125,21 @@ namespace StgSharp.Graphics.ShaderEdit 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 { + } else + { throw new Exception( "Struct is currently not supported." ); } } 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: @@ -149,7 +151,8 @@ namespace StgSharp.Graphics.ShaderEdit default: break; } - switch( typeof( T ).Name ) { + switch( typeof( T ).Name ) + { case "vec4d": return InternalShaderType.Vector4; case "Matrix2x2": @@ -171,8 +174,7 @@ 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." ); } } diff --git a/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs index eecd6187..1ca12fe4 100644 --- a/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs +++ b/StgSharp.Common/Graphics/ShaderEdit/ShaderStruct.cs @@ -53,8 +53,7 @@ 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 ) { @@ -69,10 +68,12 @@ namespace StgSharp.Graphics.ShaderEdit public unsafe void SetAllUniforms() { OpenglContext* gl = ( OpenglContext* )OpenGL.OpenGLFunction.CurrentGL.ContextHandle; - foreach( KeyValuePair uniform in uniformPair ) { + 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" ); diff --git a/StgSharp.Common/Graphics/TexturePipeline.cs b/StgSharp.Common/Graphics/TexturePipeline.cs index 4f4548a2..14bfab2c 100644 --- a/StgSharp.Common/Graphics/TexturePipeline.cs +++ b/StgSharp.Common/Graphics/TexturePipeline.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.PipeLine; using System; diff --git a/StgSharp.Common/Graphics/TextureProvider.cs b/StgSharp.Common/Graphics/TextureProvider.cs index 351dfe8d..2899a0bf 100644 --- a/StgSharp.Common/Graphics/TextureProvider.cs +++ b/StgSharp.Common/Graphics/TextureProvider.cs @@ -75,9 +75,11 @@ namespace StgSharp.Graphics if( i == _tex ) { return; } - if( i.Size == _tex.Size ) { + if( i.Size == _tex.Size ) + { _tex = i; - } else { + } else + { throw new ArgumentException( $"Size of {nameof(i)} does not equals to current image." ); } diff --git a/StgSharp.Common/Graphics/framework.cs b/StgSharp.Common/Graphics/framework.cs index ee91a8c1..742ddd6a 100644 --- a/StgSharp.Common/Graphics/framework.cs +++ b/StgSharp.Common/Graphics/framework.cs @@ -42,65 +42,62 @@ using System.Text; // using Windows.Win32; #endif - namespace StgSharp.Graphics { + /// + /// Function handler to load an opengl function by searching its _label. + /// + /// + /// the _label 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, - int width, - int 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 - /// - /// 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); #region glDEBUG internal unsafe delegate void GLDEBUGPROC( - int source, - int type, - uint id, - int severity, - int length, - sbyte* message, - void* userParam); + 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); + 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); + 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); + uint id, + int category, + int severity, + int length, + sbyte* message, + void* userParam ); - #endregion +#endregion } diff --git a/StgSharp.Common/Graphics/frameworkSyncContext.cs b/StgSharp.Common/Graphics/frameworkSyncContext.cs index 661b20d1..8f33a9a6 100644 --- a/StgSharp.Common/Graphics/frameworkSyncContext.cs +++ b/StgSharp.Common/Graphics/frameworkSyncContext.cs @@ -42,8 +42,7 @@ namespace StgSharp.Threading public class FrameworkSyncContext : SynchronizationContext { - private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext( - ); + private static readonly FrameworkSyncContext _mainThreadContext = new FrameworkSyncContext(); private readonly BlockingCollection _syncContexts = new BlockingCollection( ); @@ -67,9 +66,11 @@ namespace StgSharp.Threading public override void Send( SendOrPostCallback d, object state ) { - if( Thread.CurrentThread == _mainThread ) { + if( Thread.CurrentThread == _mainThread ) + { d( state ); - } else { + } else + { Post( d, state ); } } diff --git a/StgSharp.Common/HighPerformance/Lable.cs b/StgSharp.Common/HighPerformance/Lable.cs index 9bf1de48..112468f5 100644 --- a/StgSharp.Common/HighPerformance/Lable.cs +++ b/StgSharp.Common/HighPerformance/Lable.cs @@ -52,8 +52,7 @@ namespace StgSharp.HighPerformance { ReadOnlySpan nameSpan = _name.AsSpan(); fixed( char* cptr = nameSpan ) { - return InternalIO.Intrinsic - .city_hash_simplify( cptr, _name.Length ); + return InternalIO.Intrinsic.city_hash_simplify( cptr, _name.Length ); } } diff --git a/StgSharp.Common/HighPerformance/M128.cs b/StgSharp.Common/HighPerformance/M128.cs index 2df924a1..0f5b2dff 100644 --- a/StgSharp.Common/HighPerformance/M128.cs +++ b/StgSharp.Common/HighPerformance/M128.cs @@ -81,7 +81,8 @@ namespace StgSharp.HighPerformance public T Read( int index ) where T: struct, INumber { - fixed( byte* p = Buffer ) { + fixed( byte* p = Buffer ) + { #pragma warning disable CS8500 return *( ( T* )p + index ); #pragma warning restore CS8500 @@ -105,7 +106,8 @@ namespace StgSharp.HighPerformance [MethodImpl( MethodImplOptions.AggressiveInlining )] public void Write( int index, T value ) where T: struct, INumber { - fixed( byte* p = Buffer ) { + fixed( byte* p = Buffer ) + { #pragma warning disable CS8500 *( ( T* )p + index ) = value; #pragma warning restore CS8500 diff --git a/StgSharp.Common/HighPerformance/M64.cs b/StgSharp.Common/HighPerformance/M64.cs index 1d7a86a1..e3162f12 100644 --- a/StgSharp.Common/HighPerformance/M64.cs +++ b/StgSharp.Common/HighPerformance/M64.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Drawing; diff --git a/StgSharp.Common/HighPerformance/UnsafeCompute.cs b/StgSharp.Common/HighPerformance/UnsafeCompute.cs index 1301a8b2..c5d827ed 100644 --- a/StgSharp.Common/HighPerformance/UnsafeCompute.cs +++ b/StgSharp.Common/HighPerformance/UnsafeCompute.cs @@ -46,20 +46,13 @@ namespace StgSharp.HighPerformance } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe int CityHashSimplify( - char* span, - int begin, - int length ) + public static unsafe int CityHashSimplify( char* span, int begin, int length ) { - return InternalIO.Intrinsic - .city_hash_simplify( span + begin, length ); + return InternalIO.Intrinsic.city_hash_simplify( span + begin, length ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe int IndexOfCharPair( - char* source, - int pairValue, - int length ) + public static unsafe int IndexOfCharPair( char* source, int pairValue, int length ) { return InternalIO.Intrinsic.index_pair( source, pairValue, length ); } diff --git a/StgSharp.Common/Internal/ClangLoad/gl.cs b/StgSharp.Common/Internal/ClangLoad/gl.cs index 0a412ac2..c1477ba6 100644 --- a/StgSharp.Common/Internal/ClangLoad/gl.cs +++ b/StgSharp.Common/Internal/ClangLoad/gl.cs @@ -46,10 +46,10 @@ namespace StgSharp.Internal [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] #pragma warning disable CA5392 internal static partial int glCheckShaderStatus( - ref OpenglContext context, - uint shaderHandle, - int key, - ref IntPtr logPtr ); + ref OpenglContext context, + uint shaderHandle, + int key, + ref IntPtr logPtr ); #pragma warning restore CA5392 @@ -57,9 +57,7 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "initGL" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - internal static partial void InternalInitGL( - int majorVersion, - int minorVersion ); + internal static partial void InternalInitGL( int majorVersion, int minorVersion ); [LibraryImport( SSC_libName, @@ -71,8 +69,8 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "linkShaderProgram" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] internal static unsafe partial uint InternalLinkShaderProgram( - OpenglContext* context, - uint shaderProgram ); + OpenglContext* context, + uint shaderProgram ); [LibraryImport( SSC_libName, EntryPoint = "readLog" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] @@ -84,14 +82,13 @@ namespace StgSharp.Internal StringMarshalling = StringMarshalling.Utf8 )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] internal static unsafe partial void InternalLoadImage( - string fileName, - ImageInfo* output, - ImageLoader loader ); + string fileName, + ImageInfo* output, + ImageLoader loader ); [LibraryImport( SSC_libName, EntryPoint = "unloadImageData" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - internal static unsafe partial void InternalUnloadImage( - ImageInfo* output ); + internal static unsafe partial void InternalUnloadImage( ImageInfo* output ); #endregion ssgc api define } diff --git a/StgSharp.Common/Internal/InternalIO.cs b/StgSharp.Common/Internal/InternalIO.cs index 88728c2d..b4551bb0 100644 --- a/StgSharp.Common/Internal/InternalIO.cs +++ b/StgSharp.Common/Internal/InternalIO.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; @@ -60,8 +59,7 @@ namespace StgSharp.Internal internal static IntPtr SSClibPtr = IntPtr.Zero; - internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( - 1, 1 ); + internal static SemaphoreSlim logSyncSemaphore = new SemaphoreSlim( 1, 1 ); static InternalIO() { @@ -76,7 +74,8 @@ namespace StgSharp.Internal internal static void InternalAppendLog( string log ) { - if( !File.Exists( SS_errorLog ) ) { + if( !File.Exists( SS_errorLog ) ) + { FileStream stream = File.Create( SS_errorLog ); stream.Close(); } @@ -87,10 +86,10 @@ namespace StgSharp.Internal } [Obsolete( "Not completed", true )] - internal static IntPtr InternalLoadProc( IntPtr lib, string name ) - where T: Delegate + internal static IntPtr InternalLoadProc( IntPtr lib, string name ) where T: Delegate { - try { + try + { IntPtr procPtr = #if WINDOWS IntPtr.Zero; @@ -102,7 +101,8 @@ namespace StgSharp.Internal #endif return procPtr; } - catch( Exception ) { + catch( Exception ) + { throw; } } @@ -110,34 +110,33 @@ namespace StgSharp.Internal internal static void InternalWriteLog( string logLine, LogType logType ) { logSyncSemaphore.Wait(); - if( !File.Exists( 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")}" ); + 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( SS_errorLog ) ) { + if( !File.Exists( SS_errorLog ) ) + { FileStream stream = File.Create( SS_errorLog ); stream.Close(); } - using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) { + using( StreamWriter logStream = File.AppendText( SS_errorLog ) ) + { logStream.WriteLine( beforeTime ); - logStream.WriteLine( - $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); + logStream.WriteLine( $"{logType}\t@\t{DateTime.Now.ToString("o")}" ); logStream.WriteLine( logLine ); } logSyncSemaphore.Release( 1 ); diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs index 591e4627..dc8e17ba 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet2.cs @@ -71,8 +71,7 @@ namespace StgSharp.Internal.Intrinsic [MethodImpl( MethodImplOptions.AggressiveInlining )] public bool Equals( ColumnSet2 other ) { - return colum0.Equals( other.colum0 ) && colum1.Equals( - other.colum1 ); + return colum0.Equals( other.colum0 ) && colum1.Equals( other.colum1 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs index 4fe9b0e2..801c445b 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet3.cs @@ -67,8 +67,9 @@ namespace StgSharp.Internal.Intrinsic [MethodImpl( MethodImplOptions.AggressiveInlining )] public bool Equals( ColumnSet3 other ) { - return colum0.Equals( other.colum0 ) && colum1.Equals( - other.colum1 ) && colum2.Equals( other.colum2 ); + return colum0.Equals( other.colum0 ) && + colum1.Equals( other.colum1 ) && + colum2.Equals( other.colum2 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs index 8093c0f5..dbdaa263 100644 --- a/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs +++ b/StgSharp.Common/Internal/Intrinsic/ColumnSet4.cs @@ -65,11 +65,7 @@ namespace StgSharp.Internal.Intrinsic [FieldOffset( 60 )] public float m33; [MethodImpl( MethodImplOptions.AggressiveInlining )] - internal ColumnSet4( - Vector4 colum0, - Vector4 colum1, - Vector4 colum2, - Vector4 colum3 ) + internal ColumnSet4( Vector4 colum0, Vector4 colum1, Vector4 colum2, Vector4 colum3 ) { Unsafe.SkipInit( out this ); this.colum0 = colum0; @@ -86,9 +82,10 @@ namespace StgSharp.Internal.Intrinsic [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 ); + return colum0.Equals( other.colum0 ) && + colum1.Equals( other.colum1 ) && + colum2.Equals( other.colum2 ) && + colum3.Equals( other.colum3 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] diff --git a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs index e2aa5c0a..605ceb48 100644 --- a/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs +++ b/StgSharp.Common/Internal/Intrinsic/IntrinsicContext.cs @@ -44,7 +44,6 @@ namespace StgSharp.Internal.Intrinsic [StructLayout( LayoutKind.Sequential )] internal unsafe struct IntrinsicContext { - public delegate* unmanaged[Cdecl] add_mat_2; public delegate* unmanaged[Cdecl] add_mat_3; public delegate* unmanaged[Cdecl] add_mat_4; diff --git a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs index c159bf45..eddf506b 100644 --- a/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs +++ b/StgSharp.Common/Internal/Intrinsic/intrinsicContextProvider.cs @@ -40,8 +40,7 @@ namespace StgSharp.Internal internal static unsafe partial class InternalIO { - private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext( - ); + private static readonly IntrinsicContext _intrinsicContext = new IntrinsicContext(); internal static IntrinsicContext Intrinsic { @@ -56,7 +55,8 @@ namespace StgSharp.Internal statCode = LoadIntrinsicFunction( cptr ); } - switch( statCode ) { + switch( statCode ) + { case 0: //Dialogue.PostError(new PlatformNotSupportedException("No SIMD instructions supported on current hardware platform")); @@ -69,8 +69,7 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "load_intrinsic_function" )] [UnmanagedCallConv( CallConvs = [typeof( CallConvCdecl )] )] - private static partial int LoadIntrinsicFunction( - IntrinsicContext* context ); + private static partial int LoadIntrinsicFunction( IntrinsicContext* context ); } } \ No newline at end of file diff --git a/StgSharp.Common/Internal/StructDefine.cs b/StgSharp.Common/Internal/StructDefine.cs index 3f3aaeb1..63154de2 100644 --- a/StgSharp.Common/Internal/StructDefine.cs +++ b/StgSharp.Common/Internal/StructDefine.cs @@ -29,10 +29,10 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal.OpenGL; - using StgSharp.Graphics.OpenGL; +using StgSharp.Internal.OpenGL; + using System; using System.Runtime.InteropServices; @@ -44,6 +44,18 @@ namespace StgSharp.Internal using GLFWbool = Boolean; + #region glad struct + + [StructLayout( LayoutKind.Sequential )] + internal struct GLsync + { + + public IntPtr Handle; + + } + + #endregion glad struct + //strucs defined in GLFW3.h #region GLFW3 struct @@ -60,7 +72,7 @@ namespace StgSharp.Internal void (* swapBuffers) (glfwWindow*); void (* swapInterval) (int); int (* extensionSupported) (const byte*); - GLFWglproc(*getProcAddress)(const byte*); + delegate*(*getProcAddress)(const byte*); void (* destroy) (glfwWindow*); */ @@ -490,9 +502,7 @@ namespace StgSharp.Internal 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; @@ -946,17 +956,6 @@ namespace StgSharp.Internal #endregion GLFW3 struct - #region glad struct - - [StructLayout( LayoutKind.Sequential )] - internal struct GLsync - { - - public IntPtr Handle; - - } - - #endregion glad struct } /**/ \ No newline at end of file diff --git a/StgSharp.Common/Internal/glfw.cs b/StgSharp.Common/Internal/glfw.cs index 0e479914..86689224 100644 --- a/StgSharp.Common/Internal/glfw.cs +++ b/StgSharp.Common/Internal/glfw.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="glfw.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -52,10 +52,7 @@ namespace StgSharp.Internal internal static unsafe partial void glfwInitHint( int hint, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersion" )] - internal static unsafe partial void glfwGetVersion( - int* major, - int* minor, - int* rev ); + internal static unsafe partial void glfwGetVersion( int* major, int* minor, int* rev ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVersionString" )] internal static unsafe partial byte* glfwGetVersionString(); @@ -64,8 +61,8 @@ namespace StgSharp.Internal internal static unsafe partial int glfwGetError( byte** description ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetErrorCallback" )] - internal static unsafe partial GLFWerrorfun glfwSetErrorCallback( - GLFWerrorfun callback ); + internal static unsafe partial delegate* glfwSetErrorCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitors" )] internal static unsafe partial IntPtr* glfwGetMonitors( int* count ); @@ -75,180 +72,154 @@ namespace StgSharp.Internal [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPos" )] internal static unsafe partial void glfwGetMonitorPos( - IntPtr monitor, - int* xpos, - int* ypos ); + IntPtr monitor, + int* xpos, + int* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorWorkarea" )] internal static unsafe partial void glfwGetMonitorWorkarea( - IntPtr monitor, - int* xpos, - int* ypos, - int* width, - int* height ); + IntPtr monitor, + int* xpos, + int* ypos, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorPhysicalSize" )] internal static unsafe partial void glfwGetMonitorPhysicalSize( - IntPtr monitor, - int* widthMM, - int* heightMM ); + IntPtr monitor, + int* widthMM, + int* heightMM ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorContentScale" )] internal static unsafe partial void glfwGetMonitorContentScale( - IntPtr monitor, - float* xscale, - float* yscale ); + IntPtr monitor, + float* xscale, + float* yscale ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorName" )] - internal static unsafe partial byte* glfwGetMonitorName( - IntPtr monitor ); + internal static unsafe partial byte* glfwGetMonitorName( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorUserPointer" )] internal static unsafe partial void glfwSetMonitorUserPointer( - IntPtr monitor, - void* pointer ); + IntPtr monitor, + void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMonitorUserPointer" )] - internal static unsafe partial void* glfwGetMonitorUserPointer( - IntPtr monitor ); + internal static unsafe partial void* glfwGetMonitorUserPointer( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMonitorCallback" )] - internal static unsafe partial GLFWmonitorfun glfwSetMonitorCallback( - GLFWmonitorfun callback ); + internal static unsafe partial delegate* glfwSetMonitorCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoModes" )] internal static unsafe partial glfwVideomode* glfwGetVideoModes( - IntPtr monitor, - int* count ); + IntPtr monitor, + int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetVideoMode" )] - internal static unsafe partial glfwVideomode* glfwGetVideoMode( - IntPtr monitor ); + internal static unsafe partial glfwVideomode* glfwGetVideoMode( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetGamma" )] - internal static unsafe partial void glfwSetGamma( - IntPtr monitor, - float gamma ); + internal static unsafe partial void glfwSetGamma( IntPtr monitor, float gamma ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGammaRamp" )] - internal static unsafe partial glfwGammaramp* glfwGetGammaRamp( - IntPtr monitor ); + internal static unsafe partial glfwGammaramp* glfwGetGammaRamp( IntPtr monitor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetGammaRamp" )] - internal static unsafe partial void glfwSetGammaRamp( - IntPtr monitor, - glfwGammaramp* ramp ); + internal static unsafe partial void glfwSetGammaRamp( IntPtr monitor, glfwGammaramp* ramp ); [LibraryImport( SSC_libName, EntryPoint = "glfwDefaultWindowHints" )] internal static unsafe partial void glfwDefaultWindowHints(); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHint" )] - internal static unsafe partial void glfwWindowHint( - int hint, - int value ); + internal static unsafe partial void glfwWindowHint( int hint, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowHintString" )] - internal static unsafe partial void glfwWindowHintString( - int hint, - byte* value ); + internal static unsafe partial void glfwWindowHintString( int hint, byte* value ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateWindow" )] internal static unsafe partial IntPtr glfwCreateWindow( - int width, - int height, - byte[] title, - IntPtr monitor, - IntPtr share ); + int width, + int height, + byte[] title, + IntPtr monitor, + IntPtr share ); [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyWindow" )] internal static unsafe partial void glfwDestroyWindow( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwWindowShouldClose" )] - internal static unsafe partial int glfwWindowShouldClose( - IntPtr window ); + internal static unsafe partial int glfwWindowShouldClose( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowShouldClose" )] - internal static unsafe partial void glfwSetWindowShouldClose( - IntPtr window, - int value ); + internal static unsafe partial void glfwSetWindowShouldClose( IntPtr window, int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowTitle" )] - internal static unsafe partial void glfwSetWindowTitle( - IntPtr window, - byte* title ); + internal static unsafe partial void glfwSetWindowTitle( IntPtr window, byte* title ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowIcon" )] internal static unsafe partial void glfwSetWindowIcon( - IntPtr window, - int count, - GLFWimage* images ); + IntPtr window, + int count, + GLFWimage* images ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowPos" )] - internal static unsafe partial void glfwGetWindowPos( - IntPtr window, - int* xpos, - int* ypos ); + internal static unsafe partial void glfwGetWindowPos( IntPtr window, int* xpos, int* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPos" )] - internal static unsafe partial void glfwSetWindowPos( - IntPtr window, - int xpos, - int ypos ); + internal static unsafe partial void glfwSetWindowPos( IntPtr window, int xpos, int ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowSize" )] internal static unsafe partial void glfwGetWindowSize( - IntPtr window, - int* width, - int* height ); + IntPtr window, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeLimits" )] internal static unsafe partial void glfwSetWindowSizeLimits( - IntPtr window, - int minwidth, - int minheight, - int maxwidth, - int maxheight ); + IntPtr window, + int minwidth, + int minheight, + int maxwidth, + int maxheight ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAspectRatio" )] internal static unsafe partial void glfwSetWindowAspectRatio( - IntPtr window, - int numer, - int denom ); + IntPtr window, + int numer, + int denom ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSize" )] internal static unsafe partial void glfwSetWindowSize( - IntPtr window, - int width, - int height ); + IntPtr window, + int width, + int height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetFramebufferSize" )] internal static unsafe partial void glfwGetFramebufferSize( - IntPtr window, - int* width, - int* height ); + IntPtr window, + int* width, + int* height ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowFrameSize" )] internal static unsafe partial void glfwGetWindowFrameSize( - IntPtr window, - int* left, - int* top, - int* right, - int* bottom ); + IntPtr window, + int* left, + int* top, + int* right, + int* bottom ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowContentScale" )] internal static unsafe partial void glfwGetWindowContentScale( - IntPtr window, - float* xscale, - float* yscale ); + IntPtr window, + float* xscale, + float* yscale ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowOpacity" )] - internal static unsafe partial float glfwGetWindowOpacity( - IntPtr window ); + internal static unsafe partial float glfwGetWindowOpacity( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowOpacity" )] - internal static unsafe partial void glfwSetWindowOpacity( - IntPtr window, - float opacity ); + internal static unsafe partial void glfwSetWindowOpacity( IntPtr window, float opacity ); [LibraryImport( SSC_libName, EntryPoint = "glfwIconifyWindow" )] internal static unsafe partial void glfwIconifyWindow( IntPtr window ); @@ -269,97 +240,80 @@ namespace StgSharp.Internal internal static unsafe partial void glfwFocusWindow( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwRequestWindowAttention" )] - internal static unsafe partial void glfwRequestWindowAttention( - IntPtr window ); + internal static unsafe partial void glfwRequestWindowAttention( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowMonitor" )] - internal static unsafe partial IntPtr glfwGetWindowMonitor( - IntPtr window ); + internal static unsafe partial IntPtr glfwGetWindowMonitor( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowMonitor" )] internal static unsafe partial void glfwSetWindowMonitor( - IntPtr window, - IntPtr monitor, - int xpos, - int ypos, - int width, - int height, - int refreshRate ); + IntPtr window, + IntPtr monitor, + int xpos, + int ypos, + int width, + int height, + int refreshRate ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowAttrib" )] - internal static unsafe partial int glfwGetWindowAttrib( - IntPtr window, - int attrib ); + internal static unsafe partial int glfwGetWindowAttrib( IntPtr window, int attrib ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowAttrib" )] internal static unsafe partial void glfwSetWindowAttrib( - IntPtr window, - int attrib, - int value ); + IntPtr window, + int attrib, + int value ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowUserPointer" )] - internal static unsafe partial void glfwSetWindowUserPointer( - IntPtr window, - void* pointer ); + internal static unsafe partial void glfwSetWindowUserPointer( IntPtr window, void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetWindowUserPointer" )] - internal static unsafe partial void* glfwGetWindowUserPointer( - IntPtr window ); + internal static unsafe partial void* glfwGetWindowUserPointer( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowPosCallback" )] - internal static unsafe partial GLFWwindowposfun glfwSetWindowPosCallback( - IntPtr window, - IntPtr callback ); + internal static unsafe partial delegate* glfwSetWindowPosCallback( + IntPtr window, + IntPtr callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowSizeCallback" )] - internal static unsafe partial GLFWwindowsizefun glfwSetWindowSizeCallback( - IntPtr window, - GLFWwindowsizefun callback ); + internal static unsafe partial delegate* glfwSetWindowSizeCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowCloseCallback" )] - internal static unsafe partial GLFWwindowclosefun glfwSetWindowCloseCallback( - IntPtr window, - GLFWwindowclosefun callback ); + internal static unsafe partial delegate* glfwSetWindowCloseCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowRefreshCallback" )] - internal static unsafe partial GLFWwindowrefreshfun glfwSetWindowRefreshCallback( + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowRefreshCallback" )] + internal static unsafe partial delegate* glfwSetWindowRefreshCallback( IntPtr window, - GLFWwindowrefreshfun callback ); + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowFocusCallback" )] - internal static unsafe partial GLFWwindowfocusfun glfwSetWindowFocusCallback( - IntPtr window, - GLFWwindowfocusfun callback ); + internal static unsafe partial delegate* glfwSetWindowFocusCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowIconifyCallback" )] - internal static unsafe partial GLFWwindowiconifyfun glfwSetWindowIconifyCallback( - IntPtr window, - GLFWwindowiconifyfun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowIconifyCallback" )] + internal static unsafe partial delegate* glfwSetWindowIconifyCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowMaximizeCallback" )] - internal static unsafe partial GLFWwindowmaximizefun glfwSetWindowMaximizeCallback( - IntPtr window, - GLFWwindowmaximizefun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowMaximizeCallback" )] + internal static unsafe partial delegate* glfwSetWindowMaximizeCallback( + IntPtr window, + delegate* callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetFramebufferSizeCallback" )] + [LibraryImport( SSC_libName, EntryPoint = "glfwSetFramebufferSizeCallback" )] internal static unsafe partial FrameBufferSizeHandler glfwSetFramebufferSizeCallback( - IntPtr window, - IntPtr callback ); + IntPtr window, + IntPtr callback ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwSetWindowContentScaleCallback" )] - internal static unsafe partial GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback( - IntPtr window, - GLFWwindowcontentscalefun callback ); + [LibraryImport( SSC_libName, EntryPoint = "glfwSetWindowContentScaleCallback" )] + internal static unsafe partial delegate* glfwSetWindowContentScaleCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwPollEvents" )] internal static unsafe partial void glfwPollEvents(); @@ -368,134 +322,110 @@ namespace StgSharp.Internal internal static unsafe partial void glfwWaitEvents(); [LibraryImport( SSC_libName, EntryPoint = "glfwWaitEventsTimeout" )] - internal static unsafe partial void glfwWaitEventsTimeout( - double timeout ); + internal static unsafe partial void glfwWaitEventsTimeout( double timeout ); [LibraryImport( SSC_libName, EntryPoint = "glfwPostEmptyEvent" )] internal static unsafe partial void glfwPostEmptyEvent(); [LibraryImport( SSC_libName, EntryPoint = "glfwGetInputMode" )] - internal static unsafe partial int glfwGetInputMode( - IntPtr window, - int mode ); + internal static unsafe partial int glfwGetInputMode( IntPtr window, int mode ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetInputMode" )] - internal static unsafe partial void glfwSetInputMode( - IntPtr window, - int mode, - int value ); + internal static unsafe partial void glfwSetInputMode( IntPtr window, int mode, int value ); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwRawMouseMotionSupported" )] + [LibraryImport( SSC_libName, EntryPoint = "glfwRawMouseMotionSupported" )] internal static unsafe partial int glfwRawMouseMotionSupported(); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyName" )] - internal static unsafe partial byte* glfwGetKeyName( - int key, - int scancode ); + internal static unsafe partial byte* glfwGetKeyName( int key, int scancode ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKeyScancode" )] internal static unsafe partial int glfwGetKeyScancode( int key ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetKey" )] - internal static unsafe partial KeyStatus glfwGetKey( - IntPtr window, - int key ); + internal static unsafe partial KeyStatus glfwGetKey( IntPtr window, int key ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetMouseButton" )] - internal static unsafe partial int glfwGetMouseButton( - IntPtr window, - int button ); + internal static unsafe partial int glfwGetMouseButton( IntPtr window, int button ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetCursorPos" )] internal static unsafe partial void glfwGetCursorPos( - IntPtr window, - double* xpos, - double* ypos ); + IntPtr window, + double* xpos, + double* ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPos" )] internal static unsafe partial void glfwSetCursorPos( - IntPtr window, - double xpos, - double ypos ); + IntPtr window, + double xpos, + double ypos ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateCursor" )] internal static unsafe partial GLFWcursor* glfwCreateCursor( - GLFWimage* image, - int xhot, - int yhot ); + GLFWimage* image, + int xhot, + int yhot ); [LibraryImport( SSC_libName, EntryPoint = "glfwCreateStandardCursor" )] - internal static unsafe partial GLFWcursor* glfwCreateStandardCursor( - int shape ); + internal static unsafe partial GLFWcursor* glfwCreateStandardCursor( int shape ); [LibraryImport( SSC_libName, EntryPoint = "glfwDestroyCursor" )] - internal static unsafe partial void glfwDestroyCursor( - GLFWcursor* cursor ); + internal static unsafe partial void glfwDestroyCursor( GLFWcursor* cursor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursor" )] - internal static unsafe partial void glfwSetCursor( - IntPtr window, - GLFWcursor* cursor ); + internal static unsafe partial void glfwSetCursor( IntPtr window, GLFWcursor* cursor ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetKeyCallback" )] - internal static unsafe partial GLFWkeyfun glfwSetKeyCallback( - IntPtr window, - GLFWkeyfun callback ); + internal static unsafe partial delegate* glfwSetKeyCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharCallback" )] - internal static unsafe partial GLFWcharfun glfwSetCharCallback( - IntPtr window, - GLFWcharfun callback ); + internal static unsafe partial delegate* glfwSetCharCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCharModsCallback" )] - internal static unsafe partial GLFWcharmodsfun glfwSetCharModsCallback( - IntPtr window, - GLFWcharmodsfun callback ); + internal static unsafe partial delegate* glfwSetCharModsCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetMouseButtonCallback" )] - internal static unsafe partial GLFWmousebuttonfun glfwSetMouseButtonCallback( - IntPtr window, - GLFWmousebuttonfun callback ); + internal static unsafe partial delegate* glfwSetMouseButtonCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorPosCallback" )] - internal static unsafe partial GLFWcursorposfun glfwSetCursorPosCallback( - IntPtr window, - GLFWcursorposfun callback ); + internal static unsafe partial delegate* glfwSetCursorPosCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetCursorEnterCallback" )] - internal static unsafe partial GLFWcursorenterfun glfwSetCursorEnterCallback( - IntPtr window, - GLFWcursorenterfun callback ); + internal static unsafe partial delegate* glfwSetCursorEnterCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetScrollCallback" )] - internal static unsafe partial GLFWscrollfun glfwSetScrollCallback( - IntPtr window, - GLFWscrollfun callback ); + internal static unsafe partial delegate* glfwSetScrollCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetDropCallback" )] - internal static unsafe partial GLFWdropfun glfwSetDropCallback( - IntPtr window, - GLFWdropfun callback ); + internal static unsafe partial delegate* glfwSetDropCallback( + IntPtr window, + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickPresent" )] internal static unsafe partial int glfwJoystickPresent( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickAxes" )] - internal static unsafe partial float* glfwGetJoystickAxes( - int jid, - int* count ); + internal static unsafe partial float* glfwGetJoystickAxes( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickButtons" )] - internal static unsafe partial byte* glfwGetJoystickButtons( - int jid, - int* count ); + internal static unsafe partial byte* glfwGetJoystickButtons( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickHats" )] - internal static unsafe partial byte* glfwGetJoystickHats( - int jid, - int* count ); + internal static unsafe partial byte* glfwGetJoystickHats( int jid, int* count ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickName" )] internal static unsafe partial byte* glfwGetJoystickName( int jid ); @@ -504,41 +434,32 @@ namespace StgSharp.Internal internal static unsafe partial byte* glfwGetJoystickGUID( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickUserPointer" )] - internal static unsafe partial void glfwSetJoystickUserPointer( - int jid, - void* pointer ); + internal static unsafe partial void glfwSetJoystickUserPointer( int jid, void* pointer ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetJoystickUserPointer" )] - internal static unsafe partial void* glfwGetJoystickUserPointer( - int jid ); + internal static unsafe partial void* glfwGetJoystickUserPointer( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwJoystickIsGamepad" )] internal static unsafe partial int glfwJoystickIsGamepad( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetJoystickCallback" )] - internal static unsafe partial GLFWjoystickfun glfwSetJoystickCallback( - GLFWjoystickfun callback ); + internal static unsafe partial delegate* glfwSetJoystickCallback( + delegate* callback ); [LibraryImport( SSC_libName, EntryPoint = "glfwUpdateGamepadMappings" )] - internal static unsafe partial int glfwUpdateGamepadMappings( - byte* str ); + internal static unsafe partial int glfwUpdateGamepadMappings( byte* str ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadName" )] internal static unsafe partial byte* glfwGetGamepadName( int jid ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetGamepadState" )] - internal static unsafe partial int glfwGetGamepadState( - int jid, - GLFWgamepadstate* state ); + internal static unsafe partial int glfwGetGamepadState( int jid, GLFWgamepadstate* state ); [LibraryImport( SSC_libName, EntryPoint = "glfwSetClipboardString" )] - internal static unsafe partial void glfwSetClipboardString( - IntPtr window, - byte* str ); + internal static unsafe partial void glfwSetClipboardString( IntPtr window, byte* str ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetClipboardString" )] - internal static unsafe partial byte* glfwGetClipboardString( - IntPtr window ); + internal static unsafe partial byte* glfwGetClipboardString( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetTime" )] internal static unsafe partial double glfwGetTime(); @@ -553,8 +474,7 @@ namespace StgSharp.Internal internal static unsafe partial ulong* glfwGetTimerFrequency(); [LibraryImport( SSC_libName, EntryPoint = "glfwMakeContextCurrent" )] - internal static unsafe partial void glfwMakeContextCurrent( - IntPtr window ); + internal static unsafe partial void glfwMakeContextCurrent( IntPtr window ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetCurrentContext" )] internal static unsafe partial IntPtr glfwGetCurrentContext(); @@ -566,26 +486,21 @@ namespace StgSharp.Internal internal static unsafe partial void glfwSwapInterval( int interval ); [LibraryImport( SSC_libName, EntryPoint = "glfwExtensionSupported" )] - internal static unsafe partial int glfwExtensionSupported( - byte* extension ); + internal static unsafe partial int glfwExtensionSupported( byte* extension ); [LibraryImport( SSC_libName, EntryPoint = "glfwGetProcAddress", StringMarshalling = StringMarshalling.Utf8 )] - internal static unsafe partial IntPtr glfwGetProcAddress( - string procname ); + internal static unsafe partial IntPtr glfwGetProcAddress( string procname ); [LibraryImport( SSC_libName, EntryPoint = "glfwVulkanSupported" )] internal static unsafe partial int glfwVulkanSupported(); - [LibraryImport( - SSC_libName, - EntryPoint = "glfwGetRequiredInstanceExtensions" )] - internal static unsafe partial byte** glfwGetRequiredInstanceExtensions( - uint* count ); + [LibraryImport( SSC_libName, EntryPoint = "glfwGetRequiredInstanceExtensions" )] + internal static unsafe partial byte** glfwGetRequiredInstanceExtensions( uint* count ); - //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal unsafe partial static GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, byte* procname); + //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetInstanceProcAddress")] internal unsafe partial static delegate* glfwGetInstanceProcAddress(VkInstance instance, byte* procname); //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwGetPhysicalDevicePresentationSupport")] internal unsafe partial static int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint* queuefamily); //[LibraryImport(InternalIO.SSC_libname, EntryPoint = "glfwCreateWindowSurface")] internal unsafe partial static VkResult glfwCreateWindowSurface(VkInstance instance, glfwWindow* window, VkAllocationCallbacks* allocator, VkSurfaceKHR* surface); diff --git a/StgSharp.Common/MVVM/View/ViewBase.cs b/StgSharp.Common/MVVM/View/ViewBase.cs index 9ac51115..39e04161 100644 --- a/StgSharp.Common/MVVM/View/ViewBase.cs +++ b/StgSharp.Common/MVVM/View/ViewBase.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewBase.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,15 +46,16 @@ using System.Security.Cryptography; using System.Text; using System.Threading; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { /// - /// 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 @@ -72,9 +73,7 @@ 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 ] { @@ -95,11 +94,7 @@ namespace StgSharp.MVVM.View get => unitCubeSize; } - public bool Activated - { - get; - internal set; - } + public bool Activated { get; internal set; } public int Height { @@ -113,7 +108,7 @@ namespace StgSharp.MVVM.View public IntPtr Monitor => context.Monitor; - public IntPtr ViewHandle => context.ViewPortID; + public IntPtr ViewHandle => context.ViewPortHandle; public IViewDesigner Designer { @@ -123,11 +118,7 @@ namespace StgSharp.MVVM.View public string ContextName => context.Name; - public string SelfName - { - get; - set; - } + public string SelfName { get; set; } public ViewPort Port { @@ -151,24 +142,27 @@ 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. + /// Get the status of a certain key on the keyboard. /// - /// - /// representing if a key is pressed or released. + /// + /// + /// + /// + /// 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.ViewPortHandle, ( int )key ); } public void InternalInitialize( - string name, - (int, int, int) cubeSize, - [NotNull]ViewModelBase viewModelBinding ) + string name, + (int, int, int) cubeSize, + [NotNull]ViewModelBase viewModelBinding ) { SelfName = name; unitCubeSize = cubeSize; @@ -179,13 +173,12 @@ namespace StgSharp.MVVM.View 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( usedFrame == 0 ) + { if( !ValidateInitialization() ) { throw new InvalidOperationException( "This view is not correctly initialized before rendering." ); @@ -197,9 +190,13 @@ namespace StgSharp.MVVM.View 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 abstract void Show(); diff --git a/StgSharp.Common/MVVM/View/ViewDesigner.cs b/StgSharp.Common/MVVM/View/ViewDesigner.cs index c0d1cb9f..f4cf9673 100644 --- a/StgSharp.Common/MVVM/View/ViewDesigner.cs +++ b/StgSharp.Common/MVVM/View/ViewDesigner.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewDesigner.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -40,7 +40,7 @@ using System.Collections.Generic; using System.Net; using System.Text; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public abstract partial class ViewBase { @@ -57,12 +57,11 @@ 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; @@ -82,10 +81,10 @@ 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 ); @@ -94,17 +93,19 @@ namespace StgSharp.MVVM.View } 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(); } @@ -113,11 +114,11 @@ namespace StgSharp.MVVM.View } public TButtonGroup CreateKeyboardButtonGroup( - IClickTrigger leftBidning, - IClickTrigger rightBinding, - IClickTrigger upBinding, - IClickTrigger downBinding, - IClickTrigger confirmBinding ) + IClickTrigger leftBidning, + IClickTrigger rightBinding, + IClickTrigger upBinding, + IClickTrigger downBinding, + IClickTrigger confirmBinding ) where TButtonGroup: KeyboardButtonGroup, new() { TButtonGroup ret = new TButtonGroup(); diff --git a/StgSharp.Common/MVVM/View/ViewRender.cs b/StgSharp.Common/MVVM/View/ViewRender.cs index 470d1894..7a682898 100644 --- a/StgSharp.Common/MVVM/View/ViewRender.cs +++ b/StgSharp.Common/MVVM/View/ViewRender.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewRender.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Graphics; using StgSharp.HighPerformance; @@ -37,19 +36,15 @@ using System; using System.Collections.Generic; using System.Linq; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public abstract partial class ViewBase { - protected internal interface IViewRender - where TView: ViewBase + protected internal interface IViewRender where TView: ViewBase { - RenderStream this[ DataLabel renderName ] - { - get; - } + RenderStream this[ DataLabel renderName ] { get; } void CustomizedInitialize(); @@ -61,8 +56,7 @@ namespace StgSharp.MVVM.View } - protected abstract class ViewRender : IViewRender - where TView: ViewBase + protected abstract class ViewRender : IViewRender where TView: ViewBase { protected ViewRender( TView binding ) @@ -73,14 +67,15 @@ namespace StgSharp.MVVM.View public RenderStream this[ DataLabel renderName ] { - get => _render.TryGetValue( - renderName, out RenderStream stream ) ? + get => _render.TryGetValue( renderName, out RenderStream stream ) ? stream : ( null! ); protected set { - if( _render.ContainsKey( renderName ) ) { + if( _render.ContainsKey( renderName ) ) + { _render[ renderName ] = value; - } else { + } else + { _render.Add( renderName, value ); } } @@ -106,8 +101,7 @@ namespace StgSharp.MVVM.View return ret; } - public T CreateRenderStream( ViewPort vp ) - where T: RenderStream, new() + public T CreateRenderStream( ViewPort vp ) where T: RenderStream, new() { T ret = new T(); ret.Initialize( vp, Binding.TimeProvider ); diff --git a/StgSharp.Common/MVVM/View/ViewResponder.cs b/StgSharp.Common/MVVM/View/ViewResponder.cs index d7719d27..a792c87c 100644 --- a/StgSharp.Common/MVVM/View/ViewResponder.cs +++ b/StgSharp.Common/MVVM/View/ViewResponder.cs @@ -37,7 +37,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace StgSharp.MVVM.View +namespace StgSharp.MVVM { public partial class ViewBase { @@ -45,14 +45,9 @@ namespace StgSharp.MVVM.View protected interface IViewResponder where TVIew: ViewBase { - Action? this[ IClickTrigger trigger ] - { - get; - set; - } + Action? this[ IClickTrigger trigger ] { get; set; } - void CustomizedInitialize( - Func keyRegister ); + void CustomizedInitialize( Func keyRegister ); void Initialize( MethodLookUpDelegate methodGetter ); @@ -62,8 +57,7 @@ namespace StgSharp.MVVM.View } - protected abstract class ViewResponder : IViewResponder - where TView: ViewBase + protected abstract class ViewResponder : IViewResponder where TView: ViewBase { private bool _isInitialized; @@ -82,20 +76,17 @@ namespace StgSharp.MVVM.View 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 { + } else + { keyCallbackIndex.Add( - trigger, - value ?? - throw new ArgumentNullException( - nameof( value ) ) ); + trigger, value ?? throw new ArgumentNullException( nameof( value ) ) ); } } } @@ -103,7 +94,7 @@ namespace StgSharp.MVVM.View protected TView Binding => _binding; public abstract void CustomizedInitialize( - Func keyRegister ); + Func keyRegister ); public void Initialize( MethodLookUpDelegate methodGetter ) { @@ -112,11 +103,13 @@ namespace StgSharp.MVVM.View } CustomizedInitialize( ( trigger, name ) => { - if( !nameToCallbackMap.TryGetValue( - name, out Action ret ) ) { - if( methodGetter( name, out Action lookup ) ) { + if( !nameToCallbackMap.TryGetValue( name, out Action ret ) ) + { + if( methodGetter( name, out Action lookup ) ) + { this[ trigger ] = lookup; - } else { + } else + { throw new InvalidOperationException( $"Cannot find method named {name} in binded view model" ); } @@ -127,10 +120,11 @@ namespace StgSharp.MVVM.View 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.Common/MVVM/ViewModel/DataBinding.cs b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs index 5477ce5c..4f95b533 100644 --- a/StgSharp.Common/MVVM/ViewModel/DataBinding.cs +++ b/StgSharp.Common/MVVM/ViewModel/DataBinding.cs @@ -40,14 +40,12 @@ namespace StgSharp.MVVM.ViewModel { #nullable enable - [UnmanagedFunctionPointer( CallingConvention.Cdecl )] +[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 delegate bool MethodLookUpDelegate( string name, out Action callback ); public abstract partial class ViewModelBase { @@ -55,24 +53,28 @@ namespace StgSharp.MVVM.ViewModel public bool MethodLookup( string methodName, out Action callback ) { MethodInfo method = GetType().GetMethod( methodName )!; - if( method == null ) { + if( method == null ) + { callback = null!; return false; } - try { - callback = ( Action )Delegate.CreateDelegate( - typeof( Action ), this, methodName ); + 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; } } @@ -88,8 +90,8 @@ namespace StgSharp.MVVM.ViewModel [FieldOffset( 0 )] private M128 _mask; public DataBindingEntry( - [NotNull] BindingDataGetter gettingCallback, - [NotNull] BindingDataSetter settingCallback ) + [NotNull] BindingDataGetter gettingCallback, + [NotNull] BindingDataSetter settingCallback ) { getterPtr = Marshal.GetFunctionPointerForDelegate( gettingCallback ); setterPtr = Marshal.GetFunctionPointerForDelegate( settingCallback ); @@ -130,20 +132,15 @@ namespace StgSharp.MVVM.ViewModel public void SetValue( ref object value ) { - ( ( delegate* unmanaged[Cdecl] )setterPtr )( - ref value ); + ( ( delegate* unmanaged[Cdecl] )setterPtr )( ref value ); } - public static bool operator !=( - DataBindingEntry left, - DataBindingEntry right ) + public static bool operator !=( DataBindingEntry left, DataBindingEntry right ) { return left._mask != right._mask; } - public static bool operator ==( - DataBindingEntry left, - DataBindingEntry right ) + public static bool operator ==( DataBindingEntry left, DataBindingEntry right ) { return left._mask == right._mask; } diff --git a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs index c4e737a9..af5937aa 100644 --- a/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs +++ b/StgSharp.Common/MVVM/ViewModel/ShowViewPort.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ShowViewPort.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -30,7 +30,7 @@ //----------------------------------------------------------------------- using StgSharp.Controls; using StgSharp.Graphics; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.Threading; using StgSharp.Timing; @@ -54,14 +54,13 @@ namespace StgSharp.MVVM.ViewModel } /// - /// CustomizeInit this form and render it on screen, and respond with operation + /// CustomizeInit this form and render it on screen, and respond with operation /// public unsafe void UseViewModel( string viewEntryName ) { CustomizeInitialize(); UseViewInNextFrame( viewEntryName ); - TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( - 1 ); + TimeSpanAwaitingToken fpsCountingToken = fpsCountProvider.ParticipantSpanAwaiting( 1 ); fpsCountingToken.TimeSpanRefreshed += CountFps; fpsCountingToken.MissTimeSpanRefreshed += CountFps; if( _nextView != _currentView ) { @@ -69,21 +68,25 @@ namespace StgSharp.MVVM.ViewModel } Thread renderThread = new Thread( ( token ) => { - try { + try + { ProcessFrameWithoutEvent(); } - catch( Exception ex ) { + catch( Exception ex ) + { InternalIO.InternalWriteLog( - $"Critical error when rendering:\n" + $"{ex}", - LogType.Error ); + $"Critical error when rendering:\n" + $"{ex}", LogType.Error ); ShouldClose = true; + throw; } } ); renderThread.Start(); /**/ using( TimeSpanAwaitingToken eventAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( - 1 ) ) { - while( _closed ) { + 1 ) ) + { + while( _closed ) + { if( _nextView != _currentView ) { Interlocked.Exchange( ref _currentView, _nextView ); } @@ -112,16 +115,12 @@ namespace StgSharp.MVVM.ViewModel { 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.ViewPortHandle ) ) + { CurrentView.Use(); RenderStream.PollEvents(); } @@ -130,9 +129,11 @@ namespace StgSharp.MVVM.ViewModel private void ProcessFrameWithoutEvent() { using( TimeSpanAwaitingToken renderAwaitingToken = frameTimeProvider.ParticipantSpanAwaiting( - 1 ) ) { + 1 ) ) + { renderAwaitingToken.TimeSpanRefreshed += ( _, _ ) => { }; - while( _closed ) { + while( _closed ) + { foreach( ViewPort context in CurrentView.Render ) { context.FlushSize(); } diff --git a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs index a8959655..d50bf863 100644 --- a/StgSharp.Common/MVVM/ViewModel/ViewManage.cs +++ b/StgSharp.Common/MVVM/ViewModel/ViewManage.cs @@ -30,7 +30,7 @@ //----------------------------------------------------------------------- using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -44,9 +44,7 @@ namespace StgSharp.MVVM.ViewModel private Dictionary allView; - public T CreateAndBindView( - string name, - (int x, int y, int z) unitCubeSize ) + public T CreateAndBindView( string name, (int x, int y, int z) unitCubeSize ) where T: ViewBase, new() { T ret = new T(); diff --git a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs index 9b073031..8abb9480 100644 --- a/StgSharp.Common/MVVM/ViewModel/ViewModel.cs +++ b/StgSharp.Common/MVVM/ViewModel/ViewModel.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewModel.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -32,7 +32,7 @@ using StgSharp.Controlling.UsrActivity; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; using StgSharp.Math; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using StgSharp.Threading; using StgSharp.Timing; @@ -69,12 +69,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long frameLength = ( FrameSpeed > 0 ) ? - ( ( 1000L * 1000L ) / FrameSpeed ) : 0; + long frameLength = ( FrameSpeed > 0 ) ? ( ( 1000L * 1000L ) / FrameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -84,12 +82,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = new ViewPort(); allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long _frameLength = ( FrameSpeed > 0 ) ? - ( ( long )( 1000 * frameLength ) ) : 0; + long _frameLength = ( FrameSpeed > 0 ) ? ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( _frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -99,12 +95,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long frameLength = ( frameSpeed > 0 ) ? - ( ( 1000L * 1000L ) / frameSpeed ) : 0; + long frameLength = ( frameSpeed > 0 ) ? ( ( 1000L * 1000L ) / frameSpeed ) : 0; frameTimeProvider = new TimeSpanProvider( frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -114,12 +108,10 @@ namespace StgSharp.MVVM.ViewModel { viewPortDisplay = vBinding; allView = new(); - fpsCountProvider = new TimeSpanProvider( - 1.0, TimeSpanProvider.DefaultProvider ); + fpsCountProvider = new TimeSpanProvider( 1.0, TimeSpanProvider.DefaultProvider ); _frameSpeed = 0; _frameCount = 0; - long _frameLength = ( frameLength > 0 ) ? - ( ( long )( 1000 * frameLength ) ) : 0; + long _frameLength = ( frameLength > 0 ) ? ( ( long )( 1000 * frameLength ) ) : 0; frameTimeProvider = new TimeSpanProvider( _frameLength, TimeSpanProvider.DefaultProvider ); FrameSizeCallback = DefaultFrameRewsizeCallback; @@ -129,8 +121,7 @@ namespace StgSharp.MVVM.ViewModel { get { - if( this.TryGetObjectReference( - name, out DataBindingEntry entry ) ) { + if( this.TryGetObjectReference( name, out DataBindingEntry entry ) ) { return entry; } throw new KeyNotFoundException(); @@ -139,10 +130,9 @@ namespace StgSharp.MVVM.ViewModel public bool ShouldClose { - get => InternalIO.glfwWindowShouldClose( - viewPortDisplay.ViewPortID ) != 0; + get => InternalIO.glfwWindowShouldClose( viewPortDisplay.ViewPortHandle ) != 0; set => InternalIO.glfwSetWindowShouldClose( - viewPortDisplay.ViewPortID, value ? 1 : 0 ); + viewPortDisplay.ViewPortHandle, value ? 1 : 0 ); } public int CurrentFrameCount => frameTimeProvider.CurrentSpan; @@ -150,7 +140,7 @@ namespace StgSharp.MVVM.ViewModel public int FrameSpeed => _frameSpeed; /// - /// Height of this form, represent in + /// Height of this form, represent in /// public int Height { @@ -158,7 +148,7 @@ namespace StgSharp.MVVM.ViewModel } /// - /// Width of this form, represent in + /// Width of this form, represent in /// public int Width { @@ -167,7 +157,7 @@ namespace StgSharp.MVVM.ViewModel public unsafe IntPtr WindowID { - get => viewPortDisplay.ViewPortID; + get => viewPortDisplay.ViewPortHandle; } public string Name @@ -176,7 +166,7 @@ namespace StgSharp.MVVM.ViewModel } /// - /// Width of this form, represent in + /// Width of this form, represent in /// public Vec2 Size { @@ -194,10 +184,9 @@ namespace StgSharp.MVVM.ViewModel set { _resizeCallback = value; - IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( - value ); + IntPtr handlerPtr = Marshal.GetFunctionPointerForDelegate( value ); InternalIO.glfwSetFramebufferSizeCallback( - viewPortDisplay.ViewPortID, handlerPtr ); + viewPortDisplay.ViewPortHandle, handlerPtr ); } } #pragma warning restore CA1044 @@ -205,51 +194,49 @@ namespace StgSharp.MVVM.ViewModel public abstract void CustomizeInitialize(); /// - /// Set the size limit of current form + /// 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( 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.ViewPortHandle, ( int )minSize.X, ( int )minSize.Y, + ( int )maxSize.X, ( int )maxSize.Y ); } /// - /// Set the size limit of current form + /// 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 + /// + /// 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 ) + public void SetSizeLimit( int minWidth, int minHeight, int maxWidth, int maxHeight ) { ThreadHelper.MainThreadAssert(); InternalIO.glfwSetWindowSizeLimits( - this.viewPortDisplay.ViewPortID, minWidth, minHeight, maxWidth, - maxHeight ); + this.viewPortDisplay.ViewPortHandle, minWidth, minHeight, maxWidth, maxHeight ); } - public abstract bool TryGetObjectReference( - string name, - out DataBindingEntry entry ); + public abstract bool TryGetObjectReference( string name, out DataBindingEntry entry ); - private void DefaultFrameRewsizeCallback( - IntPtr windowHandle, - int width, - int height ) + private void DefaultFrameRewsizeCallback( IntPtr windowHandle, int width, int height ) { ViewPort.GetExistedViewPort( windowHandle, out ViewPort vp ); vp.RequestFlushSizeInNextFrame( width, height ); diff --git a/StgSharp.Common/MVVM/ViewPort.cs b/StgSharp.Common/MVVM/ViewPort.cs index 62992c26..39b88d0a 100644 --- a/StgSharp.Common/MVVM/ViewPort.cs +++ b/StgSharp.Common/MVVM/ViewPort.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="ViewPort.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -31,6 +31,7 @@ using System; using System.Collections.Concurrent; using System.Diagnostics; +using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; using System.Text; using System.Threading; @@ -53,31 +54,27 @@ namespace StgSharp.MVVM Name = new StackFrame( 1, false ). GetMethod()!.DeclaringType!.Name; Monitor = IntPtr.Zero; - ViewPortID = InternalIO.glfwCreateWindow( - _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, - IntPtr.Zero ); - if( ViewPortID == IntPtr.Zero ) { - throw new InvalidOperationException( - "Unable to create viewport handle." ); + ViewPortHandle = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, IntPtr.Zero ); + if( ViewPortHandle == IntPtr.Zero ) { + throw new InvalidOperationException( "Unable to create viewport handle." ); } - _handleToViewPortIndex.TryAdd( ViewPortID, this ); + _handleToViewPortIndex.TryAdd( ViewPortHandle, this ); } - public ViewPort(int width, int height, string name, IntPtr monitor ) + public ViewPort( int width, int height, string name, IntPtr monitor ) { _newWidth = width; _newHeight = height; FlushSize(); Name = name; Monitor = monitor; - ViewPortID = InternalIO.glfwCreateWindow( - _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, - IntPtr.Zero ); - if( ViewPortID == IntPtr.Zero ) { - throw new InvalidOperationException( - "Unable to create viewport handle." ); + ViewPortHandle = InternalIO.glfwCreateWindow( + _newWidth, _newHeight, Encoding.UTF8.GetBytes( Name ), Monitor, IntPtr.Zero ); + if( ViewPortHandle == IntPtr.Zero ) { + throw new InvalidOperationException( "Unable to create viewport handle." ); } - _handleToViewPortIndex.TryAdd( ViewPortID, this ); + _handleToViewPortIndex.TryAdd( ViewPortHandle, this ); } public unsafe int Height @@ -92,35 +89,17 @@ namespace StgSharp.MVVM internal set { Interlocked .Exchange( ref _width, value ); } } - public IntPtr GraphicHandle - { - get; - internal set; - } + public IntPtr GraphicHandle { get; internal set; } - public IntPtr Monitor - { - get; - internal set; - } + public IntPtr Monitor { get; internal set; } - public IntPtr ViewPortID - { - get; - private set; - } + public IntPtr ViewPortHandle { get; private set; } - public string Name - { - get; - set; - } + public string Name { get; set; } //[BlueprintNodeExecution] [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static bool GetExistedViewPort( - IntPtr handle, - out ViewPort port ) + public static bool GetExistedViewPort( IntPtr handle, out ViewPort port ) { return _handleToViewPortIndex.TryGetValue( handle, out port ); } diff --git a/StgSharp.Common/Math/Graphic/Camera.cs b/StgSharp.Common/Math/Graphic/Camera.cs index 14195980..d5f3c5ff 100644 --- a/StgSharp.Common/Math/Graphic/Camera.cs +++ b/StgSharp.Common/Math/Graphic/Camera.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Camera.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -96,28 +96,34 @@ namespace StgSharp.Graphics } } + public Matrix44 CameraMatrix() + { + return Projection * View; + } + public void DisplayGLtypeDefinition() { Console.WriteLine( "uniform matrix4x4 cameraName;" ); } /// - /// Get all uniform related to this . + /// Get all uniform related to this . /// - /// Shader program requires this camera. - /// - /// ContextName of all related uniforms. If you fallow form from + /// + /// Shader program requires this camera. /// - /// - public unsafe void GainAllUniforms( - ShaderProgram source, - params string[] uniformName ) + /// + /// ContextName of all related uniforms. If you fallow form from + /// + /// + /// + /// + public unsafe void GainAllUniforms( ShaderProgram source, params string[] uniformName ) { if( uniformName is null || uniformName.Length != 1 ) { throw new ArgumentException( - "Camera needs exactly one uniform.", - nameof( uniformName ) ); + "Camera needs exactly one uniform.", nameof( uniformName ) ); } convertedUniform = source.GetUniform( uniformName[ 0 ] ); } @@ -143,19 +149,19 @@ namespace StgSharp.Graphics 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( Vec3 position, Vec3 target, Vec3 up ) { Vec3 direction = position - target; - if( ( position.reg == cameraAtt.colum3.reg ) && ( this.up == up ) && ( cameraAtt.colum2.reg == - direction.reg ) ) { - //no difference with precious value + if( ( position.reg == cameraAtt.colum3.reg ) && + ( this.up == up ) && + ( cameraAtt.colum2.reg == direction.reg ) ) { return; } - if( direction.GetLength() == 0 ) { + if( direction.GetLength() == 0 ) + { //deadlock throw new ArgumentException(); } @@ -171,10 +177,10 @@ namespace StgSharp.Graphics Vec3 right = Linear.Orthogonalize( Linear.Cross( up, direction ) ); - cameraAtt.colum0.reg = right. reg; + cameraAtt.colum0.reg = right.reg; cameraAtt.colum1.reg = up.reg; cameraAtt.colum2.reg = direction.reg; - cameraAtt.colum3.reg = position. reg; + cameraAtt.colum3.reg = position.reg; InternalPitch(); InternalRow(); @@ -182,10 +188,10 @@ namespace StgSharp.Graphics } public void SetViewRange( - Radius fovRadius, - Vec2 size, - Vec2 offset, - (float front, float back) dephRange ) + Radius fovRadius, + Vec2 size, + Vec2 offset, + (float front, float back) dephRange ) { float distance = _target.GetLength(), @@ -193,8 +199,7 @@ namespace StgSharp.Graphics far = distance + dephRange.back, offsetX = offset.X, offsetY = offset.Y, - width = Scaler.Abs( - GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), + width = Scaler.Abs( GeometryScaler.Tan( fovRadius / 2 ) * near * 2 ), height = ( width * size.Y ) / size.X; _projection.colum0.X = ( 2 * near ) / width; @@ -257,8 +262,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum1.vec, cameraAtt.colum2.vec ); + Matrix32 partialCoord = new Matrix32( cameraAtt.colum1.vec, cameraAtt.colum2.vec ); float angle = _pitch._radius; Matrix22 rotation = new Matrix22( @@ -275,8 +279,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, cameraAtt.colum1.vec ); + Matrix32 partialCoord = new Matrix32( cameraAtt.colum0.vec, cameraAtt.colum1.vec ); float angle = _row._radius; Matrix22 rotation = new Matrix22( @@ -293,8 +296,7 @@ namespace StgSharp.Graphics { _isLookAtAvailable = false; - Matrix32 partialCoord = new Matrix32( - cameraAtt.colum0.vec, cameraAtt.colum2.vec ); + Matrix32 partialCoord = new Matrix32( cameraAtt.colum0.vec, cameraAtt.colum2.vec ); float angle = _yaw._radius; Matrix22 rotation = new Matrix22( Scaler.Cos( angle ), -Scaler.Sin( angle ), Scaler.Sin( angle ), diff --git a/StgSharp.Common/Math/HighPrecision/Vec2HP.cs b/StgSharp.Common/Math/HighPrecision/Vec2HP.cs new file mode 100644 index 00000000..a93f1c91 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec2HP.cs @@ -0,0 +1,67 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec2HP.cs" +// Project: World +// 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.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public struct Vec2HP : IVector + { + + [FieldOffset( 0 )] private M256 buffer; + [FieldOffset( 0 )] private Vector256 clrBuffer; + + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + + public Vec2HP( double x, double y ) + { + this.X = x; + this.Y = y; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec2HP Zero => new Vec2HP( 0, 0 ); + + public static Vec2HP One => new Vec2HP( 1, 1 ); + + } +} diff --git a/StgSharp.Common/Math/HighPrecision/Vec3HP.cs b/StgSharp.Common/Math/HighPrecision/Vec3HP.cs new file mode 100644 index 00000000..d70f5452 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec3HP.cs @@ -0,0 +1,86 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec3HP.cs" +// Project: StepVisualizer +// 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.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack = 16 )] + public struct Vec3HP : IVector + { + + [FieldOffset( 0 )] internal M256 buffer; + [FieldOffset( 0 )] internal Vector256 clrBuffer; + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + [FieldOffset( 2 * sizeof( double ) )] public double Z; + + public Vec3HP() : this( 0, 0, 0 ) { } + + public Vec3HP( Vector256 clrBuffer ) + { + this.X = 0; + this.Y = 0; + this.Z = 0; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out this.clrBuffer ); + this.clrBuffer = clrBuffer; + } + + public Vec3HP( double x, double y, double z ) + { + this.X = x; + this.Y = y; + this.Z = z; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec3HP Zero => new Vec3HP( 1, 1, 1 ); + + public static Vec3HP One => throw new NotImplementedException(); + + public override string ToString() + { + return $"Double precision 3D Vector<{X},{Y},{Z}>"; + } + + } +} diff --git a/StgSharp.Common/Math/HighPrecision/Vec4HP.cs b/StgSharp.Common/Math/HighPrecision/Vec4HP.cs new file mode 100644 index 00000000..92876dc4 --- /dev/null +++ b/StgSharp.Common/Math/HighPrecision/Vec4HP.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="Vec4HP.cs" +// Project: World +// 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.HighPerformance; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Math.HighPrecision +{ + [StructLayout( LayoutKind.Explicit, Pack =16 )] + public struct Vec4HP : IVector + { + + [FieldOffset( 0 )] private M256 buffer; + [FieldOffset( 0 )] private Vector256 clrBuffer; + [FieldOffset( 3 * sizeof( double ) )] public double W; + [FieldOffset( 0 * sizeof( double ) )] public double X; + [FieldOffset( 1 * sizeof( double ) )] public double Y; + [FieldOffset( 2 * sizeof( double ) )] public double Z; + + public Vec4HP( double x, double y, double z, double w ) + { + this.X = x; + this.Y = y; + this.Z = z; + this.W = w; + Unsafe.SkipInit( out buffer ); + Unsafe.SkipInit( out clrBuffer ); + } + + public static Vec4HP Zero => new Vec4HP( 0, 0, 0, 0 ); + + public static Vec4HP One => new Vec4HP( 1, 1, 1, 1 ); + + } +} diff --git a/StgSharp.Common/Math/Linear/IVector.cs b/StgSharp.Common/Math/Linear/IVector.cs index e033b654..0536a1db 100644 --- a/StgSharp.Common/Math/Linear/IVector.cs +++ b/StgSharp.Common/Math/Linear/IVector.cs @@ -40,27 +40,9 @@ namespace StgSharp.Math public interface IVector where TSelf: struct, IVector { - public static abstract TSelf Zero - { - get; - } + public static abstract TSelf Zero { get; } - public static abstract TSelf One - { - get; - } - - public Vec2 XY - { - get; - set; - } - - public Vec3 XYZ - { - get; - set; - } + public static abstract TSelf One { get; } } } diff --git a/StgSharp.Common/Math/Linear/Matrix22.cs b/StgSharp.Common/Math/Linear/Matrix22.cs index 99f9df32..cebf975d 100644 --- a/StgSharp.Common/Math/Linear/Matrix22.cs +++ b/StgSharp.Common/Math/Linear/Matrix22.cs @@ -96,7 +96,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { _transpose = _mat; float cache = _transpose.m10; _transpose.m10 = _transpose.m01; @@ -106,21 +107,17 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix22 operator -( - Matrix22 left, - Matrix22 right ) + public static unsafe Matrix22 operator -( Matrix22 left, Matrix22 right ) { Matrix22 ret = new Matrix22(); - InternalIO.Intrinsic.sub_mat_2( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.sub_mat_2( &left._mat, &right._mat, &ret._mat ); return ret; } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix22 operator *( Matrix22 mat, float value ) { - return new Matrix22( - mat._mat.colum0 * value, mat._mat.colum1 * value ); + return new Matrix22( mat._mat.colum0 * value, mat._mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -168,18 +165,14 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix22 operator /( Matrix22 mat, float value ) { - return new Matrix22( - mat._mat.colum0 / value, mat._mat.colum1 / value ); + return new Matrix22( mat._mat.colum0 / value, mat._mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix22 operator +( - Matrix22 left, - Matrix22 right ) + public static unsafe Matrix22 operator +( Matrix22 left, Matrix22 right ) { Matrix22 ret = new Matrix22(); - InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.add_mat_2( &left._mat, &right._mat, &ret._mat ); return ret; } diff --git a/StgSharp.Common/Math/Linear/Matrix23.cs b/StgSharp.Common/Math/Linear/Matrix23.cs index a0c2a81e..00de4332 100644 --- a/StgSharp.Common/Math/Linear/Matrix23.cs +++ b/StgSharp.Common/Math/Linear/Matrix23.cs @@ -61,13 +61,7 @@ namespace StgSharp.Math Unsafe.SkipInit( out _transpose ); } - public Matrix23( - float a00, - float a01, - float a02, - float a10, - float a11, - float a12 ) + public Matrix23( 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 ); @@ -85,7 +79,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this._transpose.m00 ) { + fixed( float* p = &this._transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -99,7 +94,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this._transpose.m00 ) { + fixed( float* p = &this._transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -110,8 +106,10 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet3* source = &this._mat ) { + if( !isTransposed ) + { + fixed( ColumnSet3* source = &this._mat ) + { fixed( ColumnSet2* target = &this._transpose ) { InternalIO.Intrinsic.transpose32( source, target ); } @@ -122,13 +120,10 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix23 operator -( - Matrix23 left, - Matrix23 right ) + public static unsafe Matrix23 operator -( Matrix23 left, Matrix23 right ) { Matrix23 ret = new Matrix23(); - InternalIO.Intrinsic.sub_mat_3( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.sub_mat_3( &left._mat, &right._mat, &ret._mat ); return ret; } @@ -136,8 +131,7 @@ namespace StgSharp.Math 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 )] @@ -186,18 +180,14 @@ namespace StgSharp.Math 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 unsafe Matrix23 operator +( - Matrix23 left, - Matrix23 right ) + public static unsafe Matrix23 operator +( Matrix23 left, Matrix23 right ) { Matrix23 ret = new Matrix23(); - InternalIO.Intrinsic.add_mat_3( &left._mat, &right._mat, - &ret._mat ); + InternalIO.Intrinsic.add_mat_3( &left._mat, &right._mat, &ret._mat ); return ret; } diff --git a/StgSharp.Common/Math/Linear/Matrix24.cs b/StgSharp.Common/Math/Linear/Matrix24.cs index 6e1f007c..4f689b3f 100644 --- a/StgSharp.Common/Math/Linear/Matrix24.cs +++ b/StgSharp.Common/Math/Linear/Matrix24.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Matrix24.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Math/Linear/Matrix32.cs b/StgSharp.Common/Math/Linear/Matrix32.cs index 213fb909..b7a760be 100644 --- a/StgSharp.Common/Math/Linear/Matrix32.cs +++ b/StgSharp.Common/Math/Linear/Matrix32.cs @@ -66,13 +66,7 @@ namespace StgSharp.Math isTransposed = false; } - public unsafe Matrix32( - float a00, - float a01, - float a10, - float a11, - float a20, - float a21 ) + public unsafe Matrix32( float a00, float a01, float a10, float a11, float a20, float a21 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -91,7 +85,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -105,7 +100,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -121,8 +117,10 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet2* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet2* source = &this.mat ) + { fixed( ColumnSet3* target = &this.transpose ) { InternalIO.Intrinsic.transpose23( source, target ); } @@ -136,15 +134,13 @@ namespace StgSharp.Math 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.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1 ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix32 operator *( Matrix32 mat, float value ) { - return new Matrix32( - mat.mat.colum0 * value, mat.mat.colum1 * value ); + return new Matrix32( mat.mat.colum0 * value, mat.mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -204,14 +200,11 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix32 operator /( Matrix32 mat, float value ) { - return new Matrix32( - mat.mat.colum0 / value, mat.mat.colum1 / value ); + return new Matrix32( mat.mat.colum0 / value, mat.mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix32 operator +( - Matrix32 left, - Matrix32 right ) + public static unsafe Matrix32 operator +( Matrix32 left, Matrix32 right ) { Matrix32 ret = new Matrix32(); InternalIO.Intrinsic.add_mat_2( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix33.cs b/StgSharp.Common/Math/Linear/Matrix33.cs index bd77da3f..7aadcb49 100644 --- a/StgSharp.Common/Math/Linear/Matrix33.cs +++ b/StgSharp.Common/Math/Linear/Matrix33.cs @@ -68,15 +68,15 @@ 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 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -96,7 +96,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -112,7 +113,8 @@ namespace StgSharp.Math LogType.Error ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -131,7 +133,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { fixed( ColumnSet3* source = &this.mat, target = &this.transpose ) { InternalIO.Intrinsic.transpose33( source, target ); } @@ -140,9 +143,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix33 operator -( - Matrix33 left, - Matrix33 right ) + public static unsafe Matrix33 operator -( Matrix33 left, Matrix33 right ) { Matrix33 ret = new Matrix33(); InternalIO.Intrinsic.sub_mat_3( &left.mat, &right.mat, &ret.mat ); @@ -153,8 +154,7 @@ namespace StgSharp.Math 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 )] @@ -225,14 +225,11 @@ namespace StgSharp.Math 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 unsafe Matrix33 operator +( - Matrix33 left, - Matrix33 right ) + public static unsafe Matrix33 operator +( Matrix33 left, Matrix33 right ) { Matrix33 ret = new Matrix33(); InternalIO.Intrinsic.add_mat_3( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix34.cs b/StgSharp.Common/Math/Linear/Matrix34.cs index 765c022c..66ac6ffc 100644 --- a/StgSharp.Common/Math/Linear/Matrix34.cs +++ b/StgSharp.Common/Math/Linear/Matrix34.cs @@ -79,18 +79,18 @@ 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 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -111,7 +111,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -125,7 +126,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -135,8 +137,10 @@ namespace StgSharp.Math internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet4* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet4* source = &this.mat ) + { fixed( ColumnSet3* target = &this.transpose ) { InternalIO.Intrinsic.transpose43( source, target ); } @@ -147,9 +151,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix34 operator -( - Matrix34 left, - Matrix34 right ) + public static unsafe Matrix34 operator -( Matrix34 left, Matrix34 right ) { Matrix34 ret = new Matrix34(); InternalIO.Intrinsic.sub_mat_4( &left.mat, &right.mat, &ret.mat ); @@ -160,8 +162,8 @@ namespace StgSharp.Math 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 )] @@ -222,14 +224,12 @@ namespace StgSharp.Math 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 unsafe Matrix34 operator +( - Matrix34 left, - Matrix34 right ) + public static unsafe Matrix34 operator +( Matrix34 left, Matrix34 right ) { Matrix34 ret = new Matrix34(); InternalIO.Intrinsic.add_mat_4( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix42.cs b/StgSharp.Common/Math/Linear/Matrix42.cs index f971c83e..dd7324e1 100644 --- a/StgSharp.Common/Math/Linear/Matrix42.cs +++ b/StgSharp.Common/Math/Linear/Matrix42.cs @@ -71,14 +71,14 @@ namespace StgSharp.Math } 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 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -97,7 +97,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -111,7 +112,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -121,15 +123,16 @@ namespace StgSharp.Math public override int GetHashCode() { - return HashCode.Combine( - mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); + return HashCode.Combine( mat.colum0.GetHashCode(), mat.colum1.GetHashCode() ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet2* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet2* source = &this.mat ) + { fixed( ColumnSet4* target = &this.transpose ) { InternalIO.Intrinsic.transpose24( source, target ); } @@ -140,9 +143,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix42 operator -( - Matrix42 left, - Matrix42 right ) + public static unsafe Matrix42 operator -( Matrix42 left, Matrix42 right ) { Matrix42 ret = new Matrix42(); InternalIO.Intrinsic.sub_mat_2( &left.mat, &right.mat, &ret.mat ); @@ -152,8 +153,7 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix42 operator *( Matrix42 mat, float value ) { - return new Matrix42( - mat.mat.colum0 * value, mat.mat.colum1 * value ); + return new Matrix42( mat.mat.colum0 * value, mat.mat.colum1 * value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -225,14 +225,11 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] public static Matrix42 operator /( Matrix42 mat, float value ) { - return new Matrix42( - mat.mat.colum0 / value, mat.mat.colum1 / value ); + return new Matrix42( mat.mat.colum0 / value, mat.mat.colum1 / value ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix42 operator +( - Matrix42 left, - Matrix42 right ) + public static unsafe Matrix42 operator +( Matrix42 left, Matrix42 right ) { Matrix42 ret = new Matrix42(); InternalIO.Intrinsic.add_mat_2( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix43.cs b/StgSharp.Common/Math/Linear/Matrix43.cs index af978c6d..68c8710e 100644 --- a/StgSharp.Common/Math/Linear/Matrix43.cs +++ b/StgSharp.Common/Math/Linear/Matrix43.cs @@ -70,18 +70,18 @@ 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 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -101,7 +101,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -115,7 +116,8 @@ namespace StgSharp.Math throw new ArgumentOutOfRangeException( nameof( columNum ) ); } InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -130,22 +132,22 @@ namespace StgSharp.Math 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 )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { - fixed( ColumnSet3* source = &this.mat ) { + if( !isTransposed ) + { + fixed( ColumnSet3* source = &this.mat ) + { fixed( ColumnSet4* target = &this.transpose ) { InternalIO.Intrinsic.transpose34( source, target ); } @@ -159,8 +161,7 @@ namespace StgSharp.Math 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.colum0 - right.mat.colum0, left.mat.colum1 - right.mat.colum1, left.mat.colum2 - right.mat.colum2 ); } @@ -173,8 +174,7 @@ namespace StgSharp.Math public static unsafe 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 )] @@ -247,14 +247,11 @@ namespace StgSharp.Math 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 unsafe Matrix43 operator +( - Matrix43 left, - Matrix43 right ) + public static unsafe Matrix43 operator +( Matrix43 left, Matrix43 right ) { Matrix43 ret = new Matrix43(); InternalIO.Intrinsic.add_mat_3( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Matrix44.cs b/StgSharp.Common/Math/Linear/Matrix44.cs index 84756810..b3f2388c 100644 --- a/StgSharp.Common/Math/Linear/Matrix44.cs +++ b/StgSharp.Common/Math/Linear/Matrix44.cs @@ -62,11 +62,7 @@ namespace StgSharp.Math this.mat = mat; } - internal Matrix44( - Vector4 vec0, - Vector4 vec1, - Vector4 vec2, - Vector4 vec3 ) + internal Matrix44( Vector4 vec0, Vector4 vec1, Vector4 vec2, Vector4 vec3 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -83,22 +79,22 @@ namespace StgSharp.Math } 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 ) { Unsafe.SkipInit( out this ); isTransposed = false; @@ -113,7 +109,8 @@ namespace StgSharp.Math get { #if DEBUG - if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) + { throw new ArgumentOutOfRangeException( nameof( columNum ) ); } if( ( columNum > 3 ) || ( columNum < 0 ) ) { @@ -121,7 +118,8 @@ namespace StgSharp.Math } #endif InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); return *( float* )pbit; } @@ -129,7 +127,8 @@ namespace StgSharp.Math set { #if DEBUG - if( ( rowNum > 3 ) || ( rowNum < 0 ) ) { + if( ( rowNum > 3 ) || ( rowNum < 0 ) ) + { throw new ArgumentOutOfRangeException( nameof( columNum ) ); } if( ( columNum > 3 ) || ( columNum < 0 ) ) { @@ -137,7 +136,8 @@ namespace StgSharp.Math } #endif InternalTranspose(); - fixed( float* p = &this.transpose.m00 ) { + fixed( float* p = &this.transpose.m00 ) + { ulong pbit = ( ( ulong )p ) + ( ( ( ulong )sizeof( Vector4 ) ) * ( ( ulong )rowNum ) ) + ( ( ( ulong )sizeof( float ) ) * ( ( ulong )columNum ) ); *( float* )pbit = value; } @@ -191,8 +191,8 @@ namespace StgSharp.Math 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() ); } [MethodImpl( MethodImplOptions.AggressiveInlining )] @@ -200,7 +200,8 @@ namespace StgSharp.Math { InternalTranspose(); Matrix42 ans = new Matrix42(); - fixed( ColumnSet4* lptr = &transpose ) { + fixed( ColumnSet4* lptr = &transpose ) + { fixed( Vector4* rptr = &right.mat.colum0 ) { InternalIO.Intrinsic.dot_42( lptr, rptr, &ans.mat.colum0 ); } @@ -215,7 +216,8 @@ namespace StgSharp.Math Matrix43 ans = new Matrix43(); - fixed( Vector4* rptr = &right.mat.colum0 ) { + fixed( Vector4* rptr = &right.mat.colum0 ) + { fixed( ColumnSet4* lptr = &transpose ) { InternalIO.Intrinsic.dot_43( lptr, rptr, &ans.mat.colum0 ); } @@ -233,7 +235,8 @@ namespace StgSharp.Math [MethodImpl( MethodImplOptions.AggressiveInlining )] internal unsafe void InternalTranspose() { - if( !isTransposed ) { + if( !isTransposed ) + { fixed( ColumnSet4* source = &mat, target = &transpose ) { InternalIO.Intrinsic.transpose44( source, target ); } @@ -242,15 +245,11 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix44 operator -( - Matrix44 left, - Matrix44 right ) + 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.colum0 - left.mat.colum0, right.mat.colum1 - left.mat.colum1, + right.mat.colum2 - left.mat.colum2, right.mat.colum3 - left.mat.colum3 ); } public static bool operator !=( Matrix44 left, Matrix44 right ) @@ -262,17 +261,15 @@ namespace StgSharp.Math 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 ); } [Obsolete( "The operand may cause performance loss, use Matrix.Multiple() method instead.", false )] [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix42 operator *( - Matrix44 left, - Matrix42 right ) + public static unsafe Matrix42 operator *( Matrix44 left, Matrix42 right ) { return left.Multiple( right ); } @@ -313,9 +310,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe Matrix44 operator +( - Matrix44 left, - Matrix44 right ) + public static unsafe Matrix44 operator +( Matrix44 left, Matrix44 right ) { Matrix44 ret = new Matrix44(); InternalIO.Intrinsic.add_mat_4( &left.mat, &right.mat, &ret.mat ); diff --git a/StgSharp.Common/Math/Linear/Vec2.cs b/StgSharp.Common/Math/Linear/Vec2.cs index 1d8da84d..7920543c 100644 --- a/StgSharp.Common/Math/Linear/Vec2.cs +++ b/StgSharp.Common/Math/Linear/Vec2.cs @@ -38,8 +38,8 @@ using System.Runtime.InteropServices; namespace StgSharp.Math { /// - /// A two dimension vector defined by two elements. Vec2 in StgSharp are default used as colum - /// vector. + /// A two dimension vector defined by two elements. Vec2 in World are default used as colum + /// vector. /// [StructLayout( LayoutKind.Explicit, Size = 16, Pack = 16 )] public struct Vec2 : IVector diff --git a/StgSharp.Common/Math/Linear/Vec3.cs b/StgSharp.Common/Math/Linear/Vec3.cs index e24de603..71a6edf6 100644 --- a/StgSharp.Common/Math/Linear/Vec3.cs +++ b/StgSharp.Common/Math/Linear/Vec3.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.HighPerformance; using System; using System.Numerics; @@ -133,9 +132,11 @@ namespace StgSharp.Math public override bool Equals( object obj ) { - if( obj is Vec3 ) { + if( obj is Vec3 ) + { return this == ( Vec3 )obj; - } else { + } else + { return false; } } @@ -220,8 +221,7 @@ namespace StgSharp.Math } [MethodImpl( MethodImplOptions.AggressiveInlining )] - public static unsafe implicit operator Vec3( - (float, float, float) tuple ) + public static unsafe implicit operator Vec3( (float, float, float) tuple ) { Vec3 vec = new Vec3( *( Vector3* )&tuple ); return vec; diff --git a/StgSharp.Common/Math/Linear/Vector.Cross.cs b/StgSharp.Common/Math/Linear/Vector.Cross.cs index 1f1866e0..29b24e86 100644 --- a/StgSharp.Common/Math/Linear/Vector.Cross.cs +++ b/StgSharp.Common/Math/Linear/Vector.Cross.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Vector.Cross.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Common/Math/Linear/Vector.GetAngle.cs b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs index 81144fe6..d77df9b2 100644 --- a/StgSharp.Common/Math/Linear/Vector.GetAngle.cs +++ b/StgSharp.Common/Math/Linear/Vector.GetAngle.cs @@ -43,8 +43,7 @@ namespace StgSharp.Math public static float GetAngle( Vec3 vec1, Vec3 vec2 ) { - return Scaler.ACos( - ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); + return Scaler.ACos( ( vec1 * vec2 ) / ( vec1.GetLength() * vec2.GetLength() ) ); } } diff --git a/StgSharp.Common/Math/Linear/Vector.Normalize.cs b/StgSharp.Common/Math/Linear/Vector.Normalize.cs index 060e6d97..fac4d7f6 100644 --- a/StgSharp.Common/Math/Linear/Vector.Normalize.cs +++ b/StgSharp.Common/Math/Linear/Vector.Normalize.cs @@ -46,12 +46,18 @@ namespace StgSharp.Math public static Vec4 Normalize( Vec4 vec ) { - return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + return new Vec4 + { + vec = Vector4.Normalize( vec.vec ) + }; } public static Vec3 Normalize( Vec3 vec ) { - return new Vec3 { v = Vector3.Normalize( vec.v ) }; + return new Vec3 + { + v = Vector3.Normalize( vec.v ) + }; } public static unsafe void Normalize( ref Vec4 source, ref Vec4 target ) @@ -76,8 +82,7 @@ namespace StgSharp.Math Vector3 t = target.v; s = Vector3.Normalize( s ); - Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, - s ) ) * s; + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, s ) ) * s; t -= projection; t = Vector3.Normalize( t ); diff --git a/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs index 8f333e65..318d14e0 100644 --- a/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs +++ b/StgSharp.Common/Math/Linear/Vector.Orthogonalize.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Vector.Orthogonalize.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -46,17 +46,21 @@ namespace StgSharp.Math public static Vec4 Orthogonalize( Vec4 vec ) { - return new Vec4 { vec = Vector4.Normalize( vec.vec ) }; + return new Vec4 + { + vec = Vector4.Normalize( vec.vec ) + }; } public static Vec3 Orthogonalize( Vec3 vec ) { - return new Vec3 { v = Vector3.Normalize( vec.v ) }; + return new Vec3 + { + v = Vector3.Normalize( vec.v ) + }; } - public static unsafe void Orthogonalize( - ref Vec4 source, - ref Vec4 target ) + public static unsafe void Orthogonalize( ref Vec4 source, ref Vec4 target ) { Vector4 s = source.vec; Vector4 t = target.vec; @@ -73,21 +77,22 @@ 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 Vec3 source, - ref Vec3 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; + Vector3 projection = ( Vector3.Dot( t, s ) / Vector3.Dot( s, s ) ) * s; t -= projection; t = Vector3.Normalize( t ); diff --git a/StgSharp.Common/Math/Scalar/ASin.cs b/StgSharp.Common/Math/Scalar/ASin.cs index bb32dd13..749f1362 100644 --- a/StgSharp.Common/Math/Scalar/ASin.cs +++ b/StgSharp.Common/Math/Scalar/ASin.cs @@ -41,11 +41,17 @@ namespace StgSharp.Math piby2 = 1.5707963705e+00f; /* 0x3fc90fdb */ /// - /// Reurns the value of ArcSin(x) + /// Reurns the value of ArcSin(x) /// - /// The sine value of the angle - /// - /// + /// + /// The sine value of the angle + /// + /// + /// + /// + /// + /// + /// public static float ASin( float x ) { return MathF.Asin( x ); diff --git a/StgSharp.Common/Math/Scalar/BasicOps.cs b/StgSharp.Common/Math/Scalar/BasicOps.cs index e211a3d3..3690476a 100644 --- a/StgSharp.Common/Math/Scalar/BasicOps.cs +++ b/StgSharp.Common/Math/Scalar/BasicOps.cs @@ -53,8 +53,7 @@ namespace StgSharp.Math return *( int* )a; } - internal static string GetListSeparator( - IFormatProvider formatProvider ) + internal static string GetListSeparator( IFormatProvider formatProvider ) { if( formatProvider is CultureInfo cultureInfo ) { return cultureInfo.TextInfo.ListSeparator; diff --git a/StgSharp.Common/Math/Scalar/Compare.cs b/StgSharp.Common/Math/Scalar/Compare.cs index 8f7b2e21..c5d9789b 100644 --- a/StgSharp.Common/Math/Scalar/Compare.cs +++ b/StgSharp.Common/Math/Scalar/Compare.cs @@ -42,7 +42,8 @@ namespace StgSharp.Math public static float MaxOf( params float[] stream ) { float ret = stream[ 0 ]; - foreach( float num in stream ) { + foreach( float num in stream ) + { if( ret < num ) { ret = num; } @@ -53,7 +54,8 @@ namespace StgSharp.Math public static float MinOf( params float[] stream ) { float ret = stream[ 0 ]; - foreach( float num in stream ) { + foreach( float num in stream ) + { if( ret > num ) { ret = num; } diff --git a/StgSharp.Common/Math/Scalar/Ctor.cs b/StgSharp.Common/Math/Scalar/Ctor.cs index b976dcdd..1dada7d9 100644 --- a/StgSharp.Common/Math/Scalar/Ctor.cs +++ b/StgSharp.Common/Math/Scalar/Ctor.cs @@ -47,16 +47,13 @@ namespace StgSharp.Math [DllImport( "Kernel32.dll", EntryPoint = "VirtualAlloc" )] private static extern IntPtr VirtualAlloc( - IntPtr address, - int size, - uint allocType, - uint protect ); + IntPtr address, + int size, + uint allocType, + uint protect ); [DllImport( "Kernel32.dll", EntryPoint = "VirtualFree" )] - private static extern bool VirtualFree( - IntPtr address, - int size, - uint freeType ); + private static extern bool VirtualFree( IntPtr address, int size, uint freeType ); } } diff --git a/StgSharp.Common/Math/Scalar/Exp.cs b/StgSharp.Common/Math/Scalar/Exp.cs index 4df46ac0..ed4794be 100644 --- a/StgSharp.Common/Math/Scalar/Exp.cs +++ b/StgSharp.Common/Math/Scalar/Exp.cs @@ -36,10 +36,14 @@ namespace StgSharp.Math public const float E = 2.718281828f; /// - /// Get the value of E ^ x; + /// Get the value of E ^ x; /// - /// - /// + /// + /// + /// + /// + /// + /// public static unsafe float Exp( float x ) { if( x == 1 ) { @@ -50,15 +54,18 @@ namespace StgSharp.Math } bool sign = false; - if( x < 0 ) { + if( x < 0 ) + { sign = true; x = -x; } float z = x, t; - if( x < 0.5f ) { + if( x < 0.5f ) + { t = 1.0f + ( x * ( 1.0f + ( x * ( 0.5f + ( x * ( 0.1666666667f + ( x * ( 0.0416666666667f + ( x * 8.333333333e-3f ) ) ) ) ) ) ) ) ); - } else { + } else + { /* * define z = n * 2 ^ m * n is between 0 and 0.5 diff --git a/StgSharp.Common/Math/Scalar/Log.cs b/StgSharp.Common/Math/Scalar/Log.cs index 9003770d..f64af7d0 100644 --- a/StgSharp.Common/Math/Scalar/Log.cs +++ b/StgSharp.Common/Math/Scalar/Log.cs @@ -42,9 +42,11 @@ namespace StgSharp.Math /// /// /// - /// + /// + /// + /// /// - /// Returns the value of ln(x). + /// Returns the value of ln(x). /// public static unsafe float Log( float x ) { diff --git a/StgSharp.Common/Math/Scalar/Pow.cs b/StgSharp.Common/Math/Scalar/Pow.cs index 87091efa..7e2775ff 100644 --- a/StgSharp.Common/Math/Scalar/Pow.cs +++ b/StgSharp.Common/Math/Scalar/Pow.cs @@ -34,11 +34,17 @@ namespace StgSharp.Math { /// - /// calculate the value of x^y + /// calculate the value of x^y /// - /// - /// - /// Returns the value of x^y + /// + /// + /// + /// + /// + /// + /// + /// Returns the value of x^y + /// public static unsafe float Pow( float x, float y ) { /* @@ -67,14 +73,17 @@ namespace StgSharp.Math z = Scaler.Log( x ) * y; bool sign = false; - if( z < 0 ) { + if( z < 0 ) + { sign = true; z = -z; } - if( z < 0.5f ) { + if( z < 0.5f ) + { t = 1.0f + ( z * ( 1.0f + ( z * ( 0.5f + ( z * ( 0.1666666667f + ( z * ( 0.0416666666667f + ( z * 8.333333333e-3f ) ) ) ) ) ) ) ) ); - } else { + } else + { uint zBit = *( uint* )&z; uint zBitAbs = zBit & 0b_0111_1111_1111_1111_1111_1111_1111_1111; uint uintm = zBitAbs >> 23; diff --git a/StgSharp.Common/Math/Scalar/Random.cs b/StgSharp.Common/Math/Scalar/Random.cs index 562f7964..f65ec272 100644 --- a/StgSharp.Common/Math/Scalar/Random.cs +++ b/StgSharp.Common/Math/Scalar/Random.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Math; using System; @@ -56,9 +55,11 @@ namespace StgSharp.Math #endif /// - /// returns a random float number between 0 and 1. + /// returns a random float number between 0 and 1. /// - /// + /// + /// + /// public static unsafe float LowProceisionRandom() { float seed = currentSeed; @@ -75,7 +76,8 @@ namespace StgSharp.Math sample2 *= 1000000; float result = sample2 - ( ( int )sample2 ); - if( result == 0 ) { + if( result == 0 ) + { currentSeed = sample2 + 0.1f; result = Scaler.LowProceisionRandom(); } @@ -85,19 +87,21 @@ namespace StgSharp.Math /// /// /// - /// + /// + /// + /// [MethodImpl( MethodImplOptions.AggressiveInlining )] public static T Random() where T: struct, IConvertible, INumber { - if( randomSeed == null ) { + if( randomSeed == null ) + { randomSeed = new byte[64]; string originSeed = - ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(StgSharp))!) : + ( $"{((Assembly.GetEntryAssembly() == null) ? (Assembly.GetAssembly(typeof(World))!) : Assembly.GetEntryAssembly())}" ) + ( $"{DateTime.UtcNow.ToString("o")}" ); using( SHA256 sha = SHA256.Create() ) { - randomSeed = sha.ComputeHash( - Encoding.UTF8.GetBytes( originSeed ) ); + randomSeed = sha.ComputeHash( Encoding.UTF8.GetBytes( originSeed ) ); } } using( SHA256 sha = SHA256.Create() ) { @@ -109,9 +113,11 @@ namespace StgSharp.Math } /// - /// Generates a random seed in int value. + /// Generates a random seed in int value. /// - /// + /// + /// + /// public static unsafe int RandomSeed() { float seedValue1 = LowProceisionRandom(); diff --git a/StgSharp.Common/Math/Scalar/Sqrt.cs b/StgSharp.Common/Math/Scalar/Sqrt.cs index 056a6a51..c37e2261 100644 --- a/StgSharp.Common/Math/Scalar/Sqrt.cs +++ b/StgSharp.Common/Math/Scalar/Sqrt.cs @@ -47,9 +47,9 @@ 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 ) { return 0; @@ -60,7 +60,8 @@ namespace StgSharp.Math * 故不考虑正负号 */ - if( x < 0 ) { + if( x < 0 ) + { throw new ArgumentOutOfRangeException(); } if( x <= 1e-12 ) { diff --git a/StgSharp.Common/Math/Scalar/Tan.cs b/StgSharp.Common/Math/Scalar/Tan.cs index 580fd019..fec4dbda 100644 --- a/StgSharp.Common/Math/Scalar/Tan.cs +++ b/StgSharp.Common/Math/Scalar/Tan.cs @@ -47,8 +47,8 @@ namespace StgSharp.Math 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.Common/PipeLine/CrossFramePipelineNode.cs b/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs index d8946c6c..dd8c8ef9 100644 --- a/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs +++ b/StgSharp.Common/PipeLine/CrossFramePipelineNode.cs @@ -63,9 +63,9 @@ namespace StgSharp.PipeLine private protected set => _mainExecution = value; } - public IEnumerable InputInterfacesName => _inputName; + public IEnumerable InputPortName => _inputName; - public IEnumerable OutputInterfacesName => _outputName; + public IEnumerable OutputPortName => _outputName; public PipelineNodeOperation Operation { @@ -73,8 +73,8 @@ namespace StgSharp.PipeLine } public void NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { if( currentCount < cycleCount ) { @@ -86,7 +86,7 @@ namespace StgSharp.PipeLine } //Console.WriteLine(currentCount); - PipelineNodeExport.SkipAll( output ); + PipelineNodeOutPort.SkipAll( output ); } } diff --git a/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs b/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs index 59141828..cf8447ac 100644 --- a/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs +++ b/StgSharp.Common/PipeLine/IConvertableToPipelineNode.cs @@ -36,21 +36,21 @@ using System.Text; namespace StgSharp.PipeLine { public delegate void PipelineNodeOperation( - in Dictionary input, - in Dictionary output ); + in Dictionary input, + in Dictionary output ); public interface IConvertableToPipelineNode { - public IEnumerable InputInterfacesName { get; } + public IEnumerable InputPortName { get; } - public IEnumerable OutputInterfacesName { get; } + public IEnumerable OutputPortName { get; } PipelineNodeOperation Operation { get; } void NodeMain( - in Dictionary input, - in Dictionary output ); + in Dictionary input, + in Dictionary output ); } @@ -71,15 +71,15 @@ namespace StgSharp.PipeLine _execution = execution; } - public IEnumerable InputInterfacesName => _input; + public IEnumerable InputPortName => _input; - public IEnumerable OutputInterfacesName => _output; + public IEnumerable OutputPortName => _output; public PipelineNodeOperation Operation => _execution; public void NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { _execution.Invoke( input, output ); } diff --git a/StgSharp.Common/PipeLine/PipeLineRunner.cs b/StgSharp.Common/PipeLine/PipeLineRunner.cs index b4ee8c87..f75ae0fa 100644 --- a/StgSharp.Common/PipeLine/PipeLineRunner.cs +++ b/StgSharp.Common/PipeLine/PipeLineRunner.cs @@ -51,69 +51,26 @@ namespace StgSharp.PipeLine private static ConcurrentStack pipelineInWaiting = new ConcurrentStack(); private static int _callingThread; - private static SemaphoreSlim bpLock = new SemaphoreSlim( 0, 1 ); + private static SemaphoreSlim pipelineLock = new SemaphoreSlim( 0, 1 ); - /// - /// Only the following occasions of calling are valid: 1. no bp is - /// running or the only bp is quitting. 2. calling from the main thread or a - /// thread the current bp is running on. - /// - internal static bool IsValidCalling - { - get - { - if( ( NodeRunner.CurrentBlueprint == null ) || //no bp running at all - ( ( pipelineInWaiting.IsEmpty ) && ( NodeRunner.CurrentBlueprint.IsRunning == - false ) ) ) - { - // a bp is quitting - //in case no bp is running - return true; - } - int? id = Task.CurrentId; - if( id is null ) - { - // in case calling from main thread and current running bp - return _callingThread == Environment.CurrentManagedThreadId; - } - foreach( NodeRunner item in allAvailableTask ) - { - if( item.Id == id ) - { - //if calling from any bp running task - return true; - } - } - return false; - } - } - - public static void Run( PipelineScheduler blueprint ) + public static void Run( PipelineScheduler pipeline ) { //Console.WriteLine(); - if( blueprint == null ) + if( pipeline == null ) { return; } - if( blueprint.IsRunning ) { + if( pipeline.IsRunning ) { throw new InvalidOperationException( "Attempt to run a blueprint instance twice." ); } - if( IsValidCalling ) - { - //Console.WriteLine("valid and run"); - if( InterruptAndRunNewBp( blueprint ) ) - { - while( InterruptAndRunNewBp( NodeRunner.CurrentBlueprint ) ) { } - } - } else - { - bpLock.Wait(); - if( InterruptAndRunNewBp( blueprint ) ) - { - while( InterruptAndRunNewBp( NodeRunner.CurrentBlueprint ) ) { } - } - bpLock.Release(); + if( !IsValidCalling() ) { + pipelineLock.Wait(); } + if( InterruptAndRunNewPipeline( pipeline ) ) + { + while( InterruptAndRunNewPipeline( NodeRunner.CurrentPipeline! ) ) { } + } + pipelineLock.Release(); Interlocked.Exchange( ref _callingThread, -1 ); } @@ -137,7 +94,10 @@ namespace StgSharp.PipeLine public static void Terminate() { cts.Cancel(); - NodeRunner.CurrentBlueprint.Terminate(); + if( NodeRunner.CurrentPipeline is null ) { + return; + } + NodeRunner.CurrentPipeline.Terminate(); foreach( NodeRunner task in allAvailableTask ) { task.Cts.Cancel(); } @@ -147,26 +107,28 @@ namespace StgSharp.PipeLine pipelineInWaiting.Clear(); } - internal static bool InterruptAndRunNewBp( PipelineScheduler newBp ) + internal static bool InterruptAndRunNewPipeline( PipelineScheduler newPipeline ) { - ArgumentNullException.ThrowIfNull( newBp ); - if( ( newBp != NodeRunner.CurrentBlueprint ) && ( NodeRunner.CurrentBlueprint != null ) ) + ArgumentNullException.ThrowIfNull( newPipeline ); + if( ( newPipeline != NodeRunner.CurrentPipeline ) && + ( NodeRunner.CurrentPipeline != null ) ) { //if a running bp exists - pipelineInWaiting.Push( NodeRunner.CurrentBlueprint ); + pipelineInWaiting.Push( NodeRunner.CurrentPipeline ); } //load new bp to current bp - Interlocked.Exchange( ref NodeRunner.CurrentBlueprint!, newBp ); + NodeRunner.CurrentPipeline = newPipeline; Interlocked.Exchange( ref _callingThread, Environment.CurrentManagedThreadId ); //run beginning node to init it first. - if( !NodeRunner.CurrentBlueprint.IsRunning ) + if( !NodeRunner.CurrentPipeline.IsRunning ) { - ( NodeRunner.CurrentBlueprint.BeginLayer as BeginningNode )!.Run(); + ( NodeRunner.CurrentPipeline.BeginLayer as BeginningNode )!.Run(); } //refresh all tasks + /* for( int i = 0; i < allAvailableTask.Length; i++ ) { NodeRunner item = allAvailableTask[ i ]; @@ -174,19 +136,64 @@ namespace StgSharp.PipeLine allAvailableTask[ i ] = NodeRunner.Run(); } } + /**/ PipelineNode node; - while( !cts.Token.IsCancellationRequested && NodeRunner.CurrentBlueprint - .RequestNextNativeNode( - out node ) ) + while( !cts.Token.IsCancellationRequested && + NodeRunner.CurrentPipeline.RequestNextMainThreadNode( out node ) ) { node.Run(); - if( !NodeRunner.CurrentBlueprint.IsRunning ) + if( !NodeRunner.CurrentPipeline.IsRunning ) { break; } } - ( NodeRunner.CurrentBlueprint.EndLayer as EndingNode )!.Run(); - return pipelineInWaiting.TryPeek( out NodeRunner.CurrentBlueprint ); + + while( ( NodeRunner.CurrentPipeline != null ) && + NodeRunner.CurrentPipeline.IsRunning && + !cts.Token.IsCancellationRequested && + NodeRunner.CurrentPipeline!.RequestNexConcurrentNode( out node ) ) + { + node.Run(); + if( !NodeRunner.CurrentPipeline!.IsRunning ) + { + break; + } + } + ( NodeRunner.CurrentPipeline!.EndLayer as EndingNode )!.Run(); + bool isEmpty = pipelineInWaiting.TryPop( out PipelineScheduler? pipeline ); + NodeRunner.CurrentPipeline = pipeline!; + return isEmpty; + } + + /// + /// Only the following occasions of calling are valid: 1. no bp is + /// running or the only bp is quitting.2. calling from the main thread or a + /// thread the current bp is running on. + /// + internal static bool IsValidCalling() + { + if( ( NodeRunner.CurrentPipeline == null ) || //no bp running at all + ( ( pipelineInWaiting.IsEmpty ) && ( NodeRunner.CurrentPipeline.IsRunning == false ) ) ) + { + // a bp is quitting + //in case no bp is running + return true; + } + int? id = Task.CurrentId; + if( id is null ) + { + // in case calling from main thread and current running bp + return _callingThread == Environment.CurrentManagedThreadId; + } + foreach( NodeRunner item in allAvailableTask ) + { + if( item.Id == id ) + { + //if calling from any bp running task + return true; + } + } + return false; } private static NodeRunner[] CreateBlueprintRunnerArray() @@ -200,7 +207,7 @@ namespace StgSharp.PipeLine internal class NodeRunner : CancellableTask { - private static PipelineScheduler _current; + private static volatile PipelineScheduler? _current; internal NodeRunner() : base() @@ -208,9 +215,10 @@ namespace StgSharp.PipeLine _startup = InternalRun; } - internal static ref PipelineScheduler CurrentBlueprint + internal static PipelineScheduler? CurrentPipeline { - get => ref _current; + get => _current; + set => _current = value; } internal static NodeRunner Run() @@ -225,16 +233,14 @@ namespace StgSharp.PipeLine private static void InternalRun( CancellationToken token ) { - //Console.WriteLine("Task Begin"); PipelineNode item; - while( ( CurrentBlueprint != null ) && CurrentBlueprint.IsRunning && !token.IsCancellationRequested && CurrentBlueprint.RequestNexGlobalNode( - out item ) ) - { - //Console.WriteLine($"Get node of {item.Name}, going to run."); + Console.WriteLine( $"Global thread {Environment.CurrentManagedThreadId} starts." ); + while( ( CurrentPipeline != null ) && + CurrentPipeline.IsRunning && + !token.IsCancellationRequested && + CurrentPipeline.RequestNexConcurrentNode( out item ) ) { item.Run(); } - - //Console.WriteLine("Task Completed"); } }//------------------------------------- End of Class ------------------------------------------ diff --git a/StgSharp.Common/PipeLine/PipelineMarshal.cs b/StgSharp.Common/PipeLine/PipelineMarshal.cs new file mode 100644 index 00000000..1941b1dc --- /dev/null +++ b/StgSharp.Common/PipeLine/PipelineMarshal.cs @@ -0,0 +1,118 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipelineMarshal.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; +using System.Linq; +using System.Net.Http; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.PipeLine +{ + public static class PipelineMarshal + { + + public static IEnumerable GetNodeSortedEnumeration( + PipelineScheduler scheduler ) + { + ArgumentNullException.ThrowIfNull( scheduler ); + return new PipelineNodeEnumerator( scheduler ) + { + _count = scheduler._allNode.Count, + }; + } + + private class PipelineNodeEnumerator : ICollection + { + + private readonly List> _mt, _c; + + public int _count; + + public PipelineNodeEnumerator( PipelineScheduler scheduler ) + { + if( !scheduler.TryGetAllNode( out _mt, out _c ) ) { + throw new InvalidOperationException( "Binded scheduler is not sorted." ); + } + } + + public bool IsReadOnly => true; + + public int Count => _count; + + public IEnumerator GetEnumerator() + { + for( int i = 1; i < _mt.Count; i++ ) + { + foreach( PipelineNode node in _mt[ i ] ) { + yield return node; + } + foreach( PipelineNode node in _c[ i ] ) { + yield return node; + } + } + } + + void ICollection.Add( PipelineNode item ) + { + throw new NotSupportedException(); + } + + void ICollection.Clear() + { + throw new NotSupportedException(); + } + + bool ICollection.Contains( PipelineNode item ) + { + throw new NotSupportedException(); + } + + void ICollection.CopyTo( PipelineNode[] array, int arrayIndex ) + { + throw new NotSupportedException(); + } + + bool ICollection.Remove( PipelineNode item ) + { + throw new NotSupportedException(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + } + + } +} diff --git a/StgSharp.Common/PipeLine/PipelineNodeLabel.cs b/StgSharp.Common/PipeLine/PipelineNodeLabel.cs new file mode 100644 index 00000000..8663b671 --- /dev/null +++ b/StgSharp.Common/PipeLine/PipelineNodeLabel.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="PipelineNodeLabel.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.CodeAnalysis; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.PipeLine +{ + public abstract record class PipelineNodeLabel + { + public static PipelineNodeLabel Empty => PipelineNodeLabelEmpty.Only; + + public abstract int ComputeHashCode(); + + public override int GetHashCode() + { + return ComputeHashCode(); + } + } + + public record class PipelineNodeStringLabel : PipelineNodeLabel + { + public PipelineNodeStringLabel( string name ) + { + Name = name; + } + + public string Name { get; } + + public override int ComputeHashCode() + { + return string.GetHashCode( Name ); + } + } + + internal record class PipelineNodeLabelEmpty : PipelineNodeLabel + { + public static PipelineNodeLabelEmpty Only { get; } = new PipelineNodeLabelEmpty(); + + public override int ComputeHashCode() + { + return 0; + } + } +} diff --git a/StgSharp.Common/PipeLine/PipelineNodePort.cs b/StgSharp.Common/PipeLine/PipelineNodePort.cs index bb8c6859..0c3bb7f8 100644 --- a/StgSharp.Common/PipeLine/PipelineNodePort.cs +++ b/StgSharp.Common/PipeLine/PipelineNodePort.cs @@ -38,120 +38,153 @@ using System.Threading.Tasks; namespace StgSharp.PipeLine { - public class PipelineNodeExport + public class PipelineNodeInPort { - private HashSet _linkerSet = new HashSet(); - private SemaphoreSlim formerCompleteSemaphore; + private HashSet _linkerSet = new HashSet(); - public PipelineNodeExport( PipelineNode container, string name ) + public PipelineNodeInPort( PipelineNode container, string label ) { Container = container; - Name = name; - formerCompleteSemaphore = new SemaphoreSlim( initialCount: 0, maxCount: 1 ); + Label = label; } + public IEnumerable LinkedPorts => _linkerSet; + public PipelineNode Container { get; init; } public SemaphoreSlim Waiter { get; init; } - public string Name { get; init; } + public string Label { get; init; } - public void Connect( PipelineNodeImport port ) + internal HashSet Linkers => _linkerSet; + + public void Connect( PipelineNodeOutPort port ) { ArgumentNullException.ThrowIfNull( port ); - if( _linkerSet.Add( port ) ) { - Container.Next.Add( port.Container ); - } - } - - public static void SkipAll( Dictionary ports ) - { - if( ports is null ) { - return; - } - foreach( PipelineNodeExport port in ports.Values ) { - port.Waiter.Release(); - } - } - - public void TransmitValue( IPipeLineConnectionPayload value ) - { - foreach( PipelineNodeImport item in _linkerSet ) { } - } - - public void WaitAll( IEnumerable ports ) - { - if( ports is null ) { - return; - } - foreach( PipelineNodeExport port in ports ) { - port.Waiter.Wait(); - } - } - - } - - public class PipelineNodeImport - { - - private HashSet _linkerSet = new HashSet(); - - public PipelineNodeImport( PipelineNode container, string name ) - { - Container = container; - Name = name; - } - - public IEnumerable LinkedPorts => _linkerSet; - - public PipelineNode Container { get; init; } - - public SemaphoreSlim Waiter { get; init; } - - public string Name { get; init; } - - public void Connect( PipelineNodeExport port ) - { - ArgumentNullException.ThrowIfNull( port ); - if( _linkerSet.Add( port ) ) { + if( _linkerSet.Add( port ) ) + { + port.Linkers.Add( this ); Container.Previous.Add( port.Container ); + port.Container.Next.Add( Container ); } } public IEnumerator GetFormerNodes() { - foreach( PipelineNodeExport port in _linkerSet ) { + foreach( PipelineNodeOutPort port in _linkerSet ) { yield return port.Container; } } public void Wait() { - foreach( PipelineNodeExport connector in _linkerSet ) { - connector.Waiter.Wait(); - } + PipelineNodeOutPort.WaitAll( _linkerSet ); } - public static void WaitAll( IDictionary ports ) + public static void WaitAll( IDictionary ports ) { if( ports is null ) { return; } - foreach( PipelineNodeImport port in ports.Values ) { + foreach( PipelineNodeInPort port in ports.Values ) { port.Wait(); } } - public static void WaitAll( IEnumerable ports ) + public static void WaitAll( IEnumerable ports ) { if( ports is null ) { return; } - foreach( PipelineNodeImport port in ports ) { + foreach( PipelineNodeInPort port in ports ) { port.Wait(); } } } + + public class PipelineNodeOutPort + { + + private HashSet _linkerSet = new HashSet(); + private volatile int _passCount; + private SemaphoreSlim formerCompleteSemaphore; + + public PipelineNodeOutPort( PipelineNode container, string label ) + { + Container = container; + Label = label; + formerCompleteSemaphore = new SemaphoreSlim( initialCount: 0, maxCount: 1 ); + } + + public PipelineNode Container { get; init; } + + public string Label { get; init; } + + internal HashSet Linkers => _linkerSet; + + private SemaphoreSlim Waiter => formerCompleteSemaphore; + + public void Connect( PipelineNodeInPort port ) + { + ArgumentNullException.ThrowIfNull( port ); + if( _linkerSet.Add( port ) ) + { + port.Linkers.Add( this ); + Container.Next.Add( port.Container ); + port.Container.Previous.Add( Container ); + } + } + + public void Release() + { + if( _passCount == 0 ) + { + Waiter.Release(); + } else + { + return; + } + } + + public static void SkipAll( Dictionary ports ) + { + if( ports is null ) { + return; + } + foreach( PipelineNodeOutPort port in ports.Values ) { + port.Release(); + } + } + + public void TransmitValue( IPipeLineConnectionPayload value ) + { + foreach( PipelineNodeInPort item in _linkerSet ) { } + } + + public static void WaitAll( IEnumerable ports ) + { + if( ports is null ) { + return; + } + foreach( PipelineNodeOutPort port in ports ) { + port.Wait(); + } + } + + internal void Wait() + { + Waiter.Wait(); + if( _passCount >= _linkerSet.Count ) + { + Interlocked.Exchange( ref _passCount, 0 ); + } else + { + Interlocked.Increment( ref _passCount ); + Waiter.Release(); + } + } + + } } diff --git a/StgSharp.Common/PipeLine/PipelineScheduler.cs b/StgSharp.Common/PipeLine/PipelineScheduler.cs index 000eb3f7..5ae5485c 100644 --- a/StgSharp.Common/PipeLine/PipelineScheduler.cs +++ b/StgSharp.Common/PipeLine/PipelineScheduler.cs @@ -49,44 +49,41 @@ namespace StgSharp.PipeLine { private BeginningNode _beginning; - private Dictionary allNode; + private bool _isAvailable = false; private EndingNode _ending; - private List - _concurrentNodes = new List(), - _mainThreadNodes = new List(); - - private List globalNodeList; - private List mainThreadNodeList; - - private SemaphoreSlim runningStat; - - internal int currentGlobalNodeIndex; - internal int currentNativeNodeIndex; + private int mtLevel, cLevel,mtIndex, cIndex; + private List> _concurrentNodes, _mainThreadNodes ; + private SemaphoreSlim runningStat,_concurrentLock = new SemaphoreSlim( 1, 1 ); + internal Dictionary _allNode; public PipelineScheduler() { - allNode = new Dictionary(); - globalNodeList = new List(); - mainThreadNodeList = new List(); + _allNode = new Dictionary(); runningStat = new SemaphoreSlim( 1, 1 ); _beginning = new BeginningNode( this ); _ending = new EndingNode( this ); } + /**/ + + public PipelineNode this[ PipelineNodeLabel label ] + { + get { return _allNode[ label ]; } + } public bool IsRunning { get => runningStat.CurrentCount == 0; } - public IEnumerable InputInterfacesName + public IEnumerable InputPortName { - get { return _beginning.OutputPorts.Keys; } + get => _beginning.InputPorts.Keys; } - public IEnumerable OutputInterfacesName + public IEnumerable OutputPortName { - get { return _beginning.OutputPorts.Keys; } + get => _beginning.OutputPorts.Keys; } public PipelineNode BeginLayer => _beginning; @@ -104,112 +101,196 @@ namespace StgSharp.PipeLine { get => runningStat; } - /**/ public void AddNode( PipelineNode node, bool isNative ) { ArgumentNullException.ThrowIfNull( node ); node.IsNative = isNative; - allNode.Add( node.Name, node ); + _allNode.TryAdd( node.Label, node ); } - public void ArrangeNodeOrder() + public void ArrangeNodes() { - LinkedList _cache = new LinkedList(); - foreach( PipelineNode node in _beginning.Next ) + if( _isAvailable ) { + return; + } + int maxLevel = 1; + Queue completedNodes = new Queue(); + foreach( PipelineNode item in _beginning.Next ) { - if( node.IsNative ) + item.TryIncreaseLevelTo( 1 ); + completedNodes.Enqueue( item ); + } + + //calc level of nodes O(V) + while( completedNodes.Count > 0 ) + { + PipelineNode u = completedNodes.Dequeue(); + foreach( PipelineNode v in u.Next ) { - _mainThreadNodes.Add( node ); + if( !v.TryIncreaseLevelTo( u.Level + 1 ) ) { + throw new InvalidOperationException( "Ring in DAG detected." ); + } + if( v.RemainingIncreaseCount == 0 ) + { + completedNodes.Enqueue( v ); + maxLevel = int.Max( maxLevel, v.Level ); + } + } + } + + //bucket sort of nodes, O(E) + _concurrentNodes = new List>( maxLevel + 1 ); + _mainThreadNodes = new List>( maxLevel + 1 ); + for( int i = 0; i <= maxLevel; i++ ) + { + _concurrentNodes.Add( [] ); + _mainThreadNodes.Add( [] ); + } + foreach( PipelineNode item in _allNode.Values ) + { + if( item.IsNative ) + { + _mainThreadNodes[ item.Level ].Add( item ); } else { - _concurrentNodes.Add( node ); - } - foreach( PipelineNode item in node.Next ) - { - item.Previous.Remove( node ); - _cache.AddLast( item ); + _concurrentNodes[ item.Level ].Add( item ); } } - while( _cache.Count > 0 ) - { - LinkedListNode begin = _cache.First!,current = begin,zero; - do - { - PipelineNode node = current.Value; - if( current.Value.Previous.Count == 0 ) - { - zero = current; - current = current.Next!; - if( node.IsNative ) - { - _mainThreadNodes.Add( node ); - } else - { - _concurrentNodes.Add( node ); - } - foreach( PipelineNode item in node.Next ) - { - item.Previous.Remove( node ); - _cache.AddLast( item ); - } - _cache.Remove( zero ); - } else - { - current = current.Next!; - } - } while (current.Next != begin); + foreach( List item in _concurrentNodes ) { + item.TrimExcess(); } + foreach( List item in _mainThreadNodes ) { + item.TrimExcess(); + } + _isAvailable = true; } - public PipelineNode Create( [NotNull]IConvertableToPipelineNode body, string name ) + public PipelineNode Create( + PipelineNodeLabel label, + [NotNull] IConvertableToPipelineNode body ) { - PipelineNode node = new PipelineNode( name, body, false ); + if( _allNode.TryGetValue( label, out PipelineNode? node ) ) { + throw new InvalidOperationException( "Label has exist in scheduler." ); + } + node = new PipelineNode( label, body, false ); + _allNode.Add( label, node ); return node; } + public PipelineNode GetNode( PipelineNodeLabel label ) + { + if( _allNode.TryGetValue( label, out PipelineNode? node ) ) + { + return node; + } else + { + throw new KeyNotFoundException(); + } + } + + public void LinkToInput( PipelineNodeInPort port ) + { + ArgumentNullException.ThrowIfNull( port ); + PipelineNodeOutPort p = _beginning.DefaultOut; + p.Connect( port ); + } + + public void LinkToInput( PipelineNodeInPort port, string inputPortName ) + { + ArgumentNullException.ThrowIfNull( port ); + PipelineNodeOutPort p = _beginning.DefineCertainOutputPort( inputPortName ); + p.Connect( port ); + } + [MethodImpl( MethodImplOptions.AggressiveInlining )] - public void SetInput( params (string name, IPipeLineConnectionPayload arg)[] parameters ) + public void SetInput( params (string label, IPipeLineConnectionPayload arg)[] parameters ) { _beginning.SetInputData( parameters ); } public void Terminate() { - Interlocked.Exchange( ref currentGlobalNodeIndex, int.MaxValue ); - Interlocked.Exchange( ref currentNativeNodeIndex, int.MaxValue ); + _concurrentLock.Wait(); + (mtLevel, cLevel, mtIndex, cIndex) = (int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue); + _concurrentLock.Release(); } - internal bool RequestNexGlobalNode( out PipelineNode node ) + public bool TryGetAllNode( + out List> mainThreadNodes, + out List> concurrentNodes ) { - if( currentGlobalNodeIndex < globalNodeList.Count ) + if( _isAvailable ) { - node = globalNodeList[ currentGlobalNodeIndex ]; - Interlocked.Increment( ref currentGlobalNodeIndex ); + mainThreadNodes = _mainThreadNodes; + concurrentNodes = _concurrentNodes; return true; } - node = default!; + mainThreadNodes = null; + concurrentNodes = null; return false; } - internal bool RequestNextNativeNode( out PipelineNode node ) + internal bool RequestNexConcurrentNode( out PipelineNode node ) { - if( currentNativeNodeIndex < mainThreadNodeList.Count ) + int index, level; + if( cLevel >= _concurrentNodes.Count ) { - node = mainThreadNodeList[ currentNativeNodeIndex ]; - Interlocked.Increment( ref currentNativeNodeIndex ); - return true; + node = null!; + return false; } - node = default!; - return false; + _concurrentLock.Wait(); + while( cIndex >= _concurrentNodes[ cLevel ].Count ) + { + Interlocked.Increment( ref cLevel ); + Interlocked.Exchange( ref cIndex, 0 ); + if( cLevel >= _concurrentNodes.Count ) + { + node = null!; + return false; + } + } + index = cIndex; + level = cLevel; + Interlocked.Increment( ref cIndex ); + _concurrentLock.Release(); + node = _concurrentNodes[ level ][ index ]; + return true; + } + + internal bool RequestNextMainThreadNode( out PipelineNode node ) + { + if( mtLevel >= _mainThreadNodes.Count ) + { + node = null!; + return false; + } + while( mtIndex >= _mainThreadNodes[ cLevel ].Count ) + { + Interlocked.Increment( ref mtLevel ); + Interlocked.Exchange( ref mtIndex, 0 ); + if( mtLevel >= _mainThreadNodes.Count ) + { + node = null!; + return false; + } + } + node = _mainThreadNodes[ mtLevel ][ mtIndex ]; + return true; + } + + internal void ResetIndex() + { + (mtLevel, cLevel, mtIndex, cIndex) = (0, 0, 0, 0); + _concurrentLock.Release(); } void IConvertableToPipelineNode.NodeMain( - in Dictionary input, - in Dictionary output ) + in Dictionary input, + in Dictionary output ) { PipeLineRunner.Run( this ); - PipelineNodeExport.SkipAll( output ); + PipelineNodeOutPort.SkipAll( output ); } ~PipelineScheduler() diff --git a/StgSharp.Common/PipeLine/PortArgs.cs b/StgSharp.Common/PipeLine/PortArgs.cs index 59bfe99f..213ca1c7 100644 --- a/StgSharp.Common/PipeLine/PortArgs.cs +++ b/StgSharp.Common/PipeLine/PortArgs.cs @@ -44,11 +44,11 @@ namespace StgSharp.PipeLine { private protected IPipeLineConnectionPayload args; - private protected PipelineNodeExport input; - private protected PipelineNodeImport output; + private protected PipelineNodeInPort output; + private protected PipelineNodeOutPort input; private protected SemaphoreSlim formerCompleteSemaphore; - public PipelineConnector( PipelineNodeExport former, PipelineNodeImport after ) + public PipelineConnector( PipelineNodeOutPort former, PipelineNodeInPort after ) { this.input = former; this.output = after; @@ -61,9 +61,9 @@ namespace StgSharp.PipeLine set => args = value; } - public PipelineNodeExport Input => input; + public PipelineNodeInPort Output => output; - public PipelineNodeImport Output => output; + public PipelineNodeOutPort Input => input; public static void SkipAll( Dictionary ports ) { diff --git a/StgSharp.Common/PipeLine/SideNode.cs b/StgSharp.Common/PipeLine/SideNode.cs index db85ae4c..7f349f81 100644 --- a/StgSharp.Common/PipeLine/SideNode.cs +++ b/StgSharp.Common/PipeLine/SideNode.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Generic; using System.Globalization; @@ -43,18 +42,24 @@ namespace StgSharp.PipeLine internal sealed class BeginningNode : PipelineNode { + public const string OutName = "default"; + private PipelineScheduler _bp; public BeginningNode( PipelineScheduler bp ) - : base( DefaultOperation, name: "BeginningNode", true, ["default"], ["default"] ) + : base( + DefaultOperation, new PipelineNodeStringLabel( "BeginningNode" ), true, ["default"], + [OutName] ) { _bp = bp; } + public PipelineNodeOutPort DefaultOut => OutputPorts[ OutName ]; + public override void Run() { _bp.RunningStat.Wait(); - PipelineNodeExport.SkipAll( _output ); + PipelineNodeOutPort.SkipAll( _output ); } internal void SetInputData( IEnumerable<(string, IPipeLineConnectionPayload)> data ) @@ -75,16 +80,17 @@ namespace StgSharp.PipeLine private PipelineScheduler _bp; public EndingNode( PipelineScheduler bp ) - : base( DefaultOperation, name: "EndingNode", true, ["default"], ["default"] ) + : base( + DefaultOperation, name: new PipelineNodeStringLabel( "EndingNode" ), true, ["default"], + ["default"] ) { _bp = bp; } public override void Run() { - PipelineNodeImport.WaitAll( _input ); - Interlocked.Exchange( ref _bp.currentGlobalNodeIndex, 0 ); - Interlocked.Exchange( ref _bp.currentNativeNodeIndex, 0 ); + PipelineNodeInPort.WaitAll( _input ); + _bp.ResetIndex(); _bp.RunningStat.Release(); } diff --git a/StgSharp.Common/PlainGeometryCollisionSensor.cs b/StgSharp.Common/PlainGeometryCollisionSensor.cs index e8f2bfba..17333911 100644 --- a/StgSharp.Common/PlainGeometryCollisionSensor.cs +++ b/StgSharp.Common/PlainGeometryCollisionSensor.cs @@ -34,38 +34,40 @@ using System; namespace StgSharp { - public class CollisionEventArgs:EventArgs + public class CollisionEventArgs : EventArgs { - public CollisionEventArgs(IGeometry target, IGeometry boarder) + + public CollisionEventArgs( IGeometry target, IGeometry boarder ) { Target = target; Boarder = boarder; } public IGeometry Target { get; set; } + public IGeometry Boarder { get; set; } + } - public class PlainGeometryCollisionSensor - where TBoarder : IGeometry - where TTarget : IGeometry + public class PlainGeometryCollisionSensor where TBoarder: IGeometry + where TTarget: IGeometry { + + internal EventHandler _rule; internal PlainGeometry _boarder; internal PlainGeometry _target; - internal EventHandler _rule; public event EventHandler Rule { add { _rule += value; } - remove + remove { - if (value == null) - { + if( value == null ) { return; } -#pragma warning disable CS8601 + #pragma warning disable CS8601 _rule -= value; -#pragma warning restore CS8601 + #pragma warning restore CS8601 } } diff --git a/StgSharp.Common/Stg/Bullet.cs b/StgSharp.Common/Stg/Bullet.cs index ef4c73ec..406236e6 100644 --- a/StgSharp.Common/Stg/Bullet.cs +++ b/StgSharp.Common/Stg/Bullet.cs @@ -7,7 +7,7 @@ // // 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, +// 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, @@ -17,7 +17,7 @@ // this permission notice shall be included in all copies // or substantial portions of the Software. // -// THE SOFTWARE IS PROVIDED ��AS IS��, +// 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. @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Geometries; using StgSharp.Math; @@ -40,13 +39,13 @@ namespace StgSharp.Gaming { protected Bullet( - PlainInstancingBuffer buffer, - GeometryMotion movement, - Vec2 beginPosition, - float angle, - float scale ) + PlainInstancingBuffer buffer, + GeometryMotion movement, + Vec2 beginPosition, + float angle, + float scale ) { - ArgumentNullException.ThrowIfNull(buffer); + ArgumentNullException.ThrowIfNull( buffer ); GlobalBuffer = buffer; BufferId = buffer.CreateInstanceID(); ( ( IInstancing )this ).Scale = scale; @@ -55,40 +54,20 @@ namespace StgSharp.Gaming Motion = movement; } - public GeometryMotion Motion - { - get; - set; - } + public GeometryMotion Motion { get; set; } - public IInstancingBuffer GlobalBuffer - { - get; - set; - } + public IInstancingBuffer GlobalBuffer { get; set; } - public int BufferId - { - get; - set; - } + public int BufferId { get; set; } - public Vec2 CenterPosition - { - get; - set; - } + public Vec2 CenterPosition { get; set; } public bool CollideWith( IPlainEntity entity ) { throw new System.NotImplementedException(); } - Vec3 IInstancing.CenterPositionGlobal - { - get; - set; - } + Vec3 IInstancing.CenterPositionGlobal { get; set; } } } \ No newline at end of file diff --git a/StgSharp.Common/Stg/CollisionTexture.cs b/StgSharp.Common/Stg/CollisionTexture.cs index 63f67677..cebc4ab8 100644 --- a/StgSharp.Common/Stg/CollisionTexture.cs +++ b/StgSharp.Common/Stg/CollisionTexture.cs @@ -28,10 +28,10 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.Internal; using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Graphics.OpenGL; +using StgSharp.Internal; using StgSharp.Math; using StgSharp.MVVM; @@ -72,8 +72,7 @@ namespace StgSharp.Stg public override bool IsContextSharable => false; - public void GenerateCollisionTexture( - IEnumerable bufferEnumeration ) + public void GenerateCollisionTexture( IEnumerable bufferEnumeration ) { fbo.Bind( 0 ); GL.ClearColor( 0, 0, 0, 1 ); @@ -81,7 +80,8 @@ namespace StgSharp.Stg generatingShader.Use(); vao.Bind( 0 ); - foreach( IInstancingBuffer item in bufferEnumeration ) { + foreach( IInstancingBuffer item in bufferEnumeration ) + { IGeometry g = item.TypicalShape; if( !( g is PlainGeometry ) ) { @@ -92,42 +92,33 @@ namespace StgSharp.Stg ebo.Bind( 0 ); ebo.SetValue( 0, g.VertexIndices, BufferUsage.StreamDraw ); - vbo.WriteVectorData( - 0, item.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vbo.WriteVectorData( 0, item.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); vao.SetVertexAttribute( - 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vao.SetVertexAttribute( - 2, 1, TypeCode.Single, false, 4 * sizeof( float ), - 3 * sizeof( float ) ); + 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, + 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 ); + Texture2DTarget.Texture2D, 0, ImageChannel.SingleColor, PixelChannelLayout.Float, + textureOutput ); VertexArray.BindNull(); } public void Init( Radius angleStride, string name ) { primeArgs = new ViewPort( - 1, (int)(( new Radius( Scaler.Pi ) ) / angleStride), name, - IntPtr.Zero ); + 1, ( int )( ( new Radius( Scaler.Pi ) ) / angleStride ), name, IntPtr.Zero ); PlatformSpecifiedInitialize(); CustomizeInit(); @@ -145,12 +136,10 @@ namespace StgSharp.Stg generatingShader = CreateShaderProgram(); Shader vertexShader = CreateShaderSegment( ShaderType.Vertex, 1 ); - Shader fragmentShader = CreateShaderSegment( - ShaderType.Fragment, 1 ); + Shader fragmentShader = CreateShaderSegment( ShaderType.Fragment, 1 ); vertexShader.Compile( 0, InternalIO.CollisionTextureVertexShader ); - fragmentShader.Compile( - 0, InternalIO.CollisionTextureFragmentShader ); + fragmentShader.Compile( 0, InternalIO.CollisionTextureFragmentShader ); vertexShader.AttachTo( 0, generatingShader ); fragmentShader.AttachTo( 0, generatingShader ); @@ -164,27 +153,24 @@ namespace StgSharp.Stg fbo = CreateFrameBuffer( 1 ); rbo = CreateRenderBuffer( 1 ); - GL.SetRenderBufferStorage( - RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + GL.SetRenderBufferStorage( RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); t = CreateTexture( 1 ); t.Bind2D( 0 ); GL.TextureImage2d( - Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, Array.Empty() ); + 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.Set2dFilterProperty( 0, TextureFilter.Nearest, TextureFilter.Nearest ); GL.FrameBufferTexture2d( - FrameBufferTarget.All, glAttachment.Color( 0 ), - Texture2DTarget.Texture2D, t[ 0 ], 0 ); + 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]; } diff --git a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs index f426bbc1..64995b76 100644 --- a/StgSharp.Common/Stg/Touhou/View/OpenningView.cs +++ b/StgSharp.Common/Stg/Touhou/View/OpenningView.cs @@ -28,7 +28,7 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- -using StgSharp.MVVM.View; +using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using System; @@ -42,8 +42,7 @@ 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.Common/StgSharp.Common.csproj b/StgSharp.Common/StgSharp.Common.csproj index 34092131..f9c95fe0 100644 --- a/StgSharp.Common/StgSharp.Common.csproj +++ b/StgSharp.Common/StgSharp.Common.csproj @@ -105,7 +105,7 @@ - + diff --git a/StgSharp.Common/Threading/CancellableTask.cs b/StgSharp.Common/Threading/CancellableTask.cs index bd8e289d..2dac6c94 100644 --- a/StgSharp.Common/Threading/CancellableTask.cs +++ b/StgSharp.Common/Threading/CancellableTask.cs @@ -38,12 +38,13 @@ using System.Threading.Tasks; namespace StgSharp.Threading { - public class CancellableTask:IDisposable + public class CancellableTask : IDisposable { + + private bool disposedValue; + private CancellationTokenSource cts; private protected Action _startup; private protected Task _internalTask; - private CancellationTokenSource cts; - private bool disposedValue; private protected CancellableTask() { @@ -82,9 +83,23 @@ namespace StgSharp.Threading _internalTask.Wait(); } + // ~CancellableTask() + // { + // Dispose(disposing: false); + // } + + public void Dispose() + { + Dispose( disposing: true ); + GC.SuppressFinalize( this ); + } + public static CancellableTask Run( Action startup ) { - CancellableTask ret = new CancellableTask { _startup = startup }; + CancellableTask ret = new CancellableTask + { + _startup = startup + }; ret._internalTask = Task.Run( ret.InternalAction ); return ret; } @@ -104,10 +119,30 @@ namespace StgSharp.Threading [MethodImpl( MethodImplOptions.AggressiveInlining )] internal void InternalAction() { - //Console.WriteLine($"Task {Task.CurrentId} is running."); _startup( Cts.Token ); } + protected virtual void Dispose( bool disposing ) + { + if( !disposedValue ) + { + if( disposing ) + { + if( IsCompleted ) + { + cts.Dispose(); + _internalTask.Dispose(); + } else + { + throw new InvalidOperationException( + "Cannot dispose a cancellable task before completed" ); + } + } + + disposedValue = true; + } + } + public static implicit operator Task( CancellableTask task ) { return task._internalTask; @@ -118,36 +153,5 @@ namespace StgSharp.Threading Cts.Dispose(); } - protected virtual void Dispose(bool disposing) - { - if (!disposedValue) - { - if (disposing) - { - if (IsCompleted) - { - cts.Dispose(); - _internalTask.Dispose(); - } - else - { - throw new InvalidOperationException("Cannot dispose a cancellable task before completed"); - } - } - - disposedValue = true; - } - } - - // ~CancellableTask() - // { - // Dispose(disposing: false); - // } - - public void Dispose() - { - Dispose(disposing: true); - GC.SuppressFinalize(this); - } } } diff --git a/StgSharp.Common/Threading/EmptyThread.cs b/StgSharp.Common/Threading/EmptyThread.cs index 1340b9f2..064e6216 100644 --- a/StgSharp.Common/Threading/EmptyThread.cs +++ b/StgSharp.Common/Threading/EmptyThread.cs @@ -41,8 +41,7 @@ namespace StgSharp.Threading public static partial class ThreadHelper { - private static readonly Thread _emptyThreadCache = new Thread( - () => { } ); + private static readonly Thread _emptyThreadCache = new Thread( () => { } ); static ThreadHelper() { @@ -50,8 +49,8 @@ namespace StgSharp.Threading } /// - /// An individual thread doing nothing, and its always returns false. + /// An individual thread doing nothing, and its always returns false. /// public static Thread EmptyThread { diff --git a/StgSharp.Common/Timing/TimeFunction.cs b/StgSharp.Common/Timing/TimeFunction.cs index 388f07c3..c8834ab1 100644 --- a/StgSharp.Common/Timing/TimeFunction.cs +++ b/StgSharp.Common/Timing/TimeFunction.cs @@ -44,9 +44,9 @@ namespace StgSharp.Timing internal TimeFunction() { } public TimeFunction( - TimeSpanProvider timeSpanProvider, - Func timeRelatedCalculation, - float range ) + TimeSpanProvider timeSpanProvider, + Func timeRelatedCalculation, + float range ) { _timeProvider = timeSpanProvider; _timeRelatedCalculation = timeRelatedCalculation; @@ -84,28 +84,20 @@ namespace StgSharp.Timing 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 ) + public virtual TimeFunction Renew( (Func func, float range) funcPair ) { - return new TimeFunction( - _timeProvider, funcPair.func, funcPair.range ); + return new TimeFunction( _timeProvider, funcPair.func, funcPair.range ); } - public virtual TimeFunction Renew( - Func func, - float range ) + public virtual TimeFunction Renew( Func func, float range ) { return new TimeFunction( _timeProvider, func, range ); } @@ -121,8 +113,7 @@ namespace StgSharp.Timing { float range = _ending - _beginning; return new TimeFunction( - _timeProvider, p => _timeRelatedCalculation( range - p ), - range ); + _timeProvider, p => _timeRelatedCalculation( range - p ), range ); } } @@ -142,15 +133,12 @@ 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(); } diff --git a/StgSharp.Common/Timing/TimeProvider.cs b/StgSharp.Common/Timing/TimeProvider.cs index f045b73c..7e5bfb8e 100644 --- a/StgSharp.Common/Timing/TimeProvider.cs +++ b/StgSharp.Common/Timing/TimeProvider.cs @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using StgSharp.Timing; using System; @@ -40,7 +39,7 @@ using System.Threading; namespace StgSharp { - public static partial class StgSharp + public static partial class World { internal static StgSharpTime mainTimeProvider = new StgSharpTime(); @@ -52,15 +51,14 @@ namespace StgSharp public sealed class StgSharpTime : TimeSourceProviderBase { - private static List subscriberList = new List( - ); + 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 static TimeSourceProviderBase OnlyInstance => World.MainTimeProvider; public override sealed void StartProvidingTime() { @@ -71,13 +69,14 @@ namespace StgSharp //speed test long totalMS, internalFrequncy = Stopwatch.Frequency; - for( int i = 0; i < 100; i++ ) { + for( int i = 0; i < 100; i++ ) + { totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); - for( int t = 0; t < 10; t++ ) { + for( int t = 0; t < 10; t++ ) + { if( totalMS < 1000 ) { subscriberList.Add( - new TimeSpanProvider( - 100L, TimeSpanProvider.DefaultProvider ) ); + new TimeSpanProvider( 100L, TimeSpanProvider.DefaultProvider ) ); } } } @@ -104,14 +103,12 @@ namespace StgSharp } } - protected override sealed void AddSubscriberUnsynced( - TimeSpanProvider subscriber ) + protected override sealed void AddSubscriberUnsynced( TimeSpanProvider subscriber ) { subscriberList.Add( subscriber ); } - protected override sealed void RemoveSubscriberUnsynced( - TimeSpanProvider subscriber ) + protected override sealed void RemoveSubscriberUnsynced( TimeSpanProvider subscriber ) { subscriberList.Remove( subscriber ); } @@ -122,24 +119,27 @@ namespace StgSharp lock( mainProvider ) { mainProvider.Restart(); } - while( mainProvider.IsRunning ) { + while( mainProvider.IsRunning ) + { totalMS = mainProvider.ElapsedTicks / ( internalFrequncy / ( 1000L * 1000L ) ); - if( subscriberList.Count == 0 ) { + if( subscriberList.Count == 0 ) + { continue; } CheckSubscriberSemaphore.Wait(); - List toRemoveList = new List( - ); - foreach( TimeSpanProvider subscriber in subscriberList ) { - if( !subscriber.CheckTime( totalMS ) ) { + 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 ); + $"Time subscriber {subscriber} is to be removed.", LogType.Info ); } ; } - if( toRemoveList.Count != 0 ) { + if( toRemoveList.Count != 0 ) + { foreach( TimeSpanProvider subscriber in toRemoveList ) { subscriberList.Remove( subscriber ); } diff --git a/StgSharp.Common/Timing/TimeSourceProvider.cs b/StgSharp.Common/Timing/TimeSourceProvider.cs index ea1fdacc..7ae8f283 100644 --- a/StgSharp.Common/Timing/TimeSourceProvider.cs +++ b/StgSharp.Common/Timing/TimeSourceProvider.cs @@ -39,8 +39,7 @@ namespace StgSharp.Timing public abstract class TimeSourceProviderBase { - private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( - 1, 1 ); + private SemaphoreSlim _addSubscriberSemaphore = new SemaphoreSlim( 1, 1 ); protected SemaphoreSlim CheckSubscriberSemaphore { @@ -49,14 +48,17 @@ namespace StgSharp.Timing public void AddSubscriber( TimeSpanProvider subscriber ) { - try { + try + { _addSubscriberSemaphore.Wait(); AddSubscriberUnsynced( subscriber ); } - catch( Exception ) { + catch( Exception ) + { throw; } - finally { + finally + { _addSubscriberSemaphore.Release(); } } @@ -64,13 +66,16 @@ namespace StgSharp.Timing public void RemoveSubscriber( TimeSpanProvider subscriber ) { _addSubscriberSemaphore.Wait(); - try { + try + { RemoveSubscriberUnsynced( subscriber ); } - catch( Exception ) { + catch( Exception ) + { throw; } - finally { + finally + { _addSubscriberSemaphore.Release(); } } @@ -79,11 +84,9 @@ namespace StgSharp.Timing 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.Common/Timing/TimeSpanAwaitingToken.cs b/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs index 7621d81c..bdea18e7 100644 --- a/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs +++ b/StgSharp.Common/Timing/TimeSpanAwaitingToken.cs @@ -45,8 +45,7 @@ namespace StgSharp.Timing public sealed class TimeSpanAwaitingToken : IDisposable { - private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( - [0] ); + private static readonly ConcurrentStack s_unusedID = new ConcurrentStack( [0] ); private static int s_maxID; private static readonly object s_lock = new object(); @@ -60,13 +59,16 @@ namespace StgSharp.Timing internal TimeSpanAwaitingToken( TimeSpanProvider provider ) { - if( s_unusedID.Count == 1 ) { - lock( s_lock ) { + if( s_unusedID.Count == 1 ) + { + lock( s_lock ) + { s_unusedID.TryPop( out int id ); TokenID = id; s_unusedID.Push( s_maxID++ ); } - } else { + } else + { s_unusedID.TryPop( out int id ); TokenID = id; } @@ -77,13 +79,16 @@ namespace StgSharp.Timing internal TimeSpanAwaitingToken( TimeSpanProvider provider, int count ) { - if( s_unusedID.Count == 1 ) { - lock( s_lock ) { + if( s_unusedID.Count == 1 ) + { + lock( s_lock ) + { s_unusedID.TryPop( out int id ); TokenID = id; s_unusedID.Push( s_maxID++ ); } - } else { + } else + { s_unusedID.TryPop( out int id ); TokenID = id; } @@ -130,12 +135,12 @@ namespace StgSharp.Timing public void Participant() { - lock( _participantObject ) { + lock( _participantObject ) + { _size++; SemaphoreSlim newSemaphore = new SemaphoreSlim( _awaitingSemaphore.CurrentCount, _size ); - Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ) - .Dispose(); + Interlocked.Exchange( ref _awaitingSemaphore, newSemaphore ).Dispose(); } } diff --git a/StgSharp.Common/Timing/TimeSpanProvider.cs b/StgSharp.Common/Timing/TimeSpanProvider.cs index a29eb27d..0fade796 100644 --- a/StgSharp.Common/Timing/TimeSpanProvider.cs +++ b/StgSharp.Common/Timing/TimeSpanProvider.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="TimeSpanProvider.cs" -// Project: StgSharp +// Project: StepVisualizer // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -28,7 +28,6 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- - using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -40,7 +39,7 @@ using System.Threading; namespace StgSharp.Timing { /// - /// A microsecond-accuracy timer. It will refresh every a certain time span. + /// A microsecond-accuracy timer. It will refresh every a certain time span. /// public class TimeSpanProvider { @@ -58,18 +57,18 @@ namespace StgSharp.Timing 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 ) ); - } + ArgumentNullException.ThrowIfNull( provider ); _timeSource = provider; _spanLength = spanMicroSeconds; _maxSpanCount = int.MaxValue; @@ -80,18 +79,18 @@ namespace StgSharp.Timing } /// - /// 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 ) ); - } + ArgumentNullException.ThrowIfNull( provider ); _timeSource = provider; _spanLength = ( long )( spanSeconds * 1000L * 1000L ); _spanBegin = -_spanLength; @@ -103,23 +102,23 @@ namespace StgSharp.Timing } /// - /// 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, - long maxSpan, - TimeSourceProviderBase provider ) + /// + /// + /// + /// + /// + /// + /// + /// + /// + public TimeSpanProvider( long spanLength, long maxSpan, TimeSourceProviderBase provider ) { - if( provider == null ) { - throw new ArgumentNullException( nameof( provider ) ); - } + ArgumentNullException.ThrowIfNull( provider ); if( maxSpan <= 0 ) { - throw new ArgumentException( - "Sapn count cannot be smaller than zero" ); + throw new ArgumentException( "Sapn count cannot be smaller than zero" ); } _timeSource = provider; _spanLength = spanLength; @@ -151,14 +150,13 @@ namespace StgSharp.Timing } /// - /// Time source provider provided in internal framework. + /// Time source provider provided in internal framework. /// public static TimeSourceProviderBase DefaultProvider => StgSharpTime.OnlyInstance; public TimeSpanAwaitingToken ParticipantSpanAwaiting( int count ) { - TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( - this, count ); + TimeSpanAwaitingToken token = new TimeSpanAwaitingToken( this, count ); _tokenToAdd.Enqueue( token ); return token; } @@ -173,12 +171,9 @@ namespace StgSharp.Timing Interlocked.Exchange( ref _maxSpanCount, 0 ); } - public void SubscribeToTimeSource( - TimeSourceProviderBase serviceHandler ) + public void SubscribeToTimeSource( TimeSourceProviderBase serviceHandler ) { - if( serviceHandler == null ) { - throw new ArgumentNullException( nameof( serviceHandler ) ); - } + ArgumentNullException.ThrowIfNull( serviceHandler ); if( _subscribed ) { return; } @@ -196,26 +191,29 @@ namespace StgSharp.Timing if( microseconds - _spanBegin < _spanLength ) { return true; } - while( !_tokenToAdd.IsEmpty ) { - _tokenToAdd.TryDequeue( out TimeSpanAwaitingToken tokenAdd ); + foreach( TimeSpanAwaitingToken tokenAdd in _tokenToAdd ) { _awaitingTokens.Add( tokenAdd ); } - while( !_tokenToQuit.IsEmpty ) { - _tokenToQuit.TryDequeue( out TimeSpanAwaitingToken tokenQuit ); + _tokenToAdd.Clear(); + foreach( TimeSpanAwaitingToken tokenQuit in _tokenToQuit ) + { _awaitingTokens.Remove( tokenQuit ); InternalIO.InternalWriteLog( - $"Awaiting token {tokenQuit!.TokenID} has been removed.", - LogType.Info ); + $"Awaiting token {tokenQuit!.TokenID} has been removed.", LogType.Info ); } + _tokenToQuit.Clear(); _spanBegin = microseconds; timeSpanCount++; - foreach( TimeSpanAwaitingToken item in _awaitingTokens ) { - if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) { + foreach( TimeSpanAwaitingToken item in _awaitingTokens ) + { + if( item.AwaitingSemaphoreSlim.CurrentCount == 0 ) + { item.AwaitingSemaphoreSlim.Release(); item.Refresh(); - } else { + } else + { item.MissRefresh(); } } @@ -223,8 +221,7 @@ namespace StgSharp.Timing return timeSpanCount < _maxSpanCount; } - public static explicit operator int( - [NotNull]TimeSpanProvider provider ) + public static explicit operator int( [NotNull]TimeSpanProvider provider ) { return provider.ToInt32(); } diff --git a/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json b/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json new file mode 100644 index 00000000..4c755f05 --- /dev/null +++ b/StgSharp.Common/bin/x64/Release/net8.0/StgSharp.Common.deps.json @@ -0,0 +1,43 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": {} + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {} + } + }, + "libraries": { + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs index 5e596158..c3c36da8 100644 --- a/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs +++ b/StgSharp.Common/obj/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs index 5e596158..c3c36da8 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json +++ b/StgSharp.Common/obj/x64/Debug/net8.0/StgSharp.Common.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs new file mode 100644 index 00000000..2541d8b9 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.AssemblyInfo.cs @@ -0,0 +1,24 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Common")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/Nitload-NSI/StgSharp.git")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..d6881354 --- /dev/null +++ b/StgSharp.Common/obj/x64/Release/net8.0/StgSharp.Common.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\refint\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Common\obj\x64\Release\net8.0\ref\StgSharp.Common.dll diff --git a/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs b/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs new file mode 100644 index 00000000..3fb51c66 --- /dev/null +++ b/StgSharp.Model/STEP/Analyser/ExpSyntaxAnalyzer.Enum.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.Enum.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.Script; +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + internal partial class StepExpSyntaxAnalyzer + { + + private static string ParseStepEnumLiteral( string source ) + { + int length = source.Length; + ReadOnlySpan span = source.AsSpan(); + if( length > 2 && span[ 0 ] == '.' && span[ length - 1 ] == '.' ) { + return span.Slice( 1, length - 2 ).ToString(); + } + throw new ExpInvalidSyntaxException( $"\"{source}\" is not a valid enum syntax" ); + } + + private void TryAppendEnum( Token e ) + { + ExpSyntaxNode node = e.Value switch + { + ".T." => new ExpBoolNode( e, true, true ), + ".F." => new ExpBoolNode( e, false, true ), + ".U." => new ExpLogicValueNode( e, ExpLogic.Unknown, true ), + _ => ExpEnumLiteralNode.Create( e, ParseStepEnumLiteral ), + }; + _cache.PushOperand( node ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepBSplineSurface.cs b/StgSharp.Model/STEP/Items/StepBSplineSurface.cs new file mode 100644 index 00000000..38a9092b --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBSplineSurface.cs @@ -0,0 +1,185 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBSplineSurface.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 CommunityToolkit.HighPerformance; + +using StgSharp.Script.Express; + +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.Model.Step +{ + public enum StepBSplineSurfaceForm + { + + PLANE_SURF, + CYLINDRICAL_SURF, + CONICAL_SURF, + SPHERICAL_SURF, + TOROIDAL_SURF, + SURF_OF_REVOLUTION, + RULED_SURF, + GENERALISED_CONE, + QUADRIC_SURF, + SURF_OF_LINEAR_EXTRUSION, + UNSPECIFIED, + + } + + public class StepBSplineSurface : StepBoundedSurface, IExpConvertableFrom + { + + public const string CONICAL_SURF_TEXT = "CONICAL_SURF"; + public const string CYLINDRICAL_SURF_TEXT = "CYLINDRICAL_SURF"; + public const string GENERALISED_CONE_TEXT = "GENERALISED_CONE"; + public const string PLANE_SURF_TEXT = "PLANE_SURF"; + public const string QUADRIC_SURF_TEXT = "QUADRIC_SURF"; + public const string RULED_SURF_TEXT = "RULED_SURF"; + public const string SPHERICAL_SURF_TEXT = "SPHERICAL_SURF"; + public const string SURF_OF_LINEAR_EXTRUSION_TEXT = "SURF_OF_LINEAR_EXTRUSION"; + public const string SURF_OF_REVOLUTION_TEXT = "SURF_OF_REVOLUTION"; + public const string TOROIDAL_SURF_TEXT = "TOROIDAL_SURF"; + public const string UNSPECIFIED_TEXT = "UNSPECIFIED"; + + public StepBSplineSurface( StepModel model ) : base( model ) { } + + public bool UClosed { get; set; } + + public bool VClosed { get; set; } + + public bool SelfIntersections { get; set; } + + public int UDegree { get; set; } + + public int VDegree { get; set; } + + public int UUpper => ControlPointsList.Count - 1; + + public int VUpper => ControlPointsList[ 0 ].Count - 1; + + public List> ControlPointsList { get; set; } + = new List>(); + + public StepBSplineSurfaceForm SurfaceForm { get; set; } + + public static StepBSplineSurface CreateFromSyntax( StepModel binder, ExpSyntaxNode syntax ) + { + ExpNodePresidentEnumerator enumerator = syntax.ToPresidentEnumerator(); + enumerator.AssertEnumeratorCount( 7 ); + StepBSplineSurface ret = new StepBSplineSurface( binder ); + + ret.UDegree = ( enumerator[ 0 ] as ExpIntNode ).Value; + ret.VDegree = ( enumerator[ 1 ] as ExpIntNode ).Value; + + ExpNodePresidentEnumerator pointList = enumerator[ 2 ].TupleToPresidentEnumerator(); + pointList.AssertEnumeratorCount( 2, int.MaxValue ); + for( int i = 0; i < pointList.Count; i++ ) + { + ExpNodePresidentEnumerator points = pointList[ i ].TupleToPresidentEnumerator(); + points.AssertEnumeratorCount( 2, int.MaxValue ); + List pList = new List( points.Count ); + CollectionsMarshal.SetCount( pList, points.Count ); + Span ls = CollectionsMarshal.AsSpan( pList ); + Span aspan = points.AsSpan(); + for( int j = 0; j < points.Count; j++ ) + { + StepCartesianPoint p = binder[ aspan[ i ] as StepEntityInstanceNode ] as StepCartesianPoint; + ls[ j ] = p; + } + ret.ControlPointsList.Add( pList ); + } + + ret.SurfaceForm = GetSurfaceForm( enumerator[ 3 ].CodeConvertTemplate ); + ret.UClosed = ( enumerator[ 4 ] as ExpBoolNode ).Value; + ret.VClosed = ( enumerator[ 5 ] as ExpBoolNode ).Value; + ret.SelfIntersections = ( enumerator[ 6 ] as ExpBoolNode ).Value; + return ret; + } + + public void FromInstance( StepBSplineSurface entity ) + { + base.FromInstance( entity ); + UClosed = entity.UClosed; + VClosed = entity.VClosed; + UDegree = entity.UDegree; + VDegree = entity.VDegree; + ControlPointsList.Clear(); + foreach( List list in entity.ControlPointsList ) { + ControlPointsList.Add( new List( list ) ); + } + SurfaceForm = entity.SurfaceForm; + } + + protected static StepBSplineSurfaceForm GetSurfaceForm( string literal ) + { + return literal switch + { + CONICAL_SURF_TEXT => StepBSplineSurfaceForm.PLANE_SURF, + CYLINDRICAL_SURF_TEXT => StepBSplineSurfaceForm.CYLINDRICAL_SURF, + GENERALISED_CONE_TEXT => StepBSplineSurfaceForm.CONICAL_SURF, + PLANE_SURF_TEXT => StepBSplineSurfaceForm.SPHERICAL_SURF, + QUADRIC_SURF_TEXT => StepBSplineSurfaceForm.TOROIDAL_SURF, + RULED_SURF_TEXT => StepBSplineSurfaceForm.SURF_OF_REVOLUTION, + SPHERICAL_SURF_TEXT => StepBSplineSurfaceForm.RULED_SURF, + SURF_OF_LINEAR_EXTRUSION_TEXT => StepBSplineSurfaceForm.GENERALISED_CONE, + SURF_OF_REVOLUTION_TEXT => StepBSplineSurfaceForm.QUADRIC_SURF, + TOROIDAL_SURF_TEXT => StepBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION, + UNSPECIFIED_TEXT => StepBSplineSurfaceForm.UNSPECIFIED, + _ => StepBSplineSurfaceForm.UNSPECIFIED, + }; + } + + protected static string GetSurfaceFormString( StepBSplineSurfaceForm form ) + { + return form switch + { + StepBSplineSurfaceForm.PLANE_SURF => CONICAL_SURF_TEXT, + StepBSplineSurfaceForm.CYLINDRICAL_SURF => CYLINDRICAL_SURF_TEXT, + StepBSplineSurfaceForm.CONICAL_SURF => GENERALISED_CONE_TEXT, + StepBSplineSurfaceForm.SPHERICAL_SURF => PLANE_SURF_TEXT, + StepBSplineSurfaceForm.TOROIDAL_SURF => QUADRIC_SURF_TEXT, + StepBSplineSurfaceForm.SURF_OF_REVOLUTION => RULED_SURF_TEXT, + StepBSplineSurfaceForm.RULED_SURF => SPHERICAL_SURF_TEXT, + StepBSplineSurfaceForm.GENERALISED_CONE => SURF_OF_LINEAR_EXTRUSION_TEXT, + StepBSplineSurfaceForm.QUADRIC_SURF => SURF_OF_REVOLUTION_TEXT, + StepBSplineSurfaceForm.SURF_OF_LINEAR_EXTRUSION => TOROIDAL_SURF_TEXT, + StepBSplineSurfaceForm.UNSPECIFIED => UNSPECIFIED_TEXT, + _ => UNSPECIFIED_TEXT + }; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/Items/StepBoundedSurface.cs b/StgSharp.Model/STEP/Items/StepBoundedSurface.cs new file mode 100644 index 00000000..a2ed60e0 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBoundedSurface.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBoundedSurface.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepBoundedSurface : StepSurface, IExpConvertableFrom + { + + public StepBoundedSurface( StepModel model ) : base( model ) { } + + public override StepItemType ItemType => StepItemType.BoundedSurface; + + public void FromInstance( StepBoundedSurface entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs b/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs new file mode 100644 index 00000000..ea80dbb4 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepBoundedSurfaceCurve.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepBoundedSurfaceCurve.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + internal class StepBoundedSurfaceCurve : StepBoundedCurve, IExpConvertableFrom + { + + public StepBoundedSurfaceCurve( StepModel model ) : base( model ) { } + + public StepCurve Parent { get; set; } = null!; + + public void FromInstance( StepSurfaceCurve entity ) + { + base.FromInstance( entity ); + } + + public void FromInstance( StepBoundedSurfaceCurve entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs b/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs new file mode 100644 index 00000000..975ac859 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepPcurveOrSurface.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepPcurveOrSurface.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step.Items +{ + public class StepPCurveOrSurface : StepGeometricRepresentationItem, IExpConvertableFrom + { + + public StepPCurveOrSurface( StepModel model ) : base( model ) { } + + public void FromInstance( StepPCurveOrSurface entity ) + { + base.FromInstance( entity ); + } + + } +} diff --git a/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs b/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs new file mode 100644 index 00000000..73528f24 --- /dev/null +++ b/StgSharp.Model/STEP/Items/StepSurfaceCurve.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepSurfaceCurve.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepSurfaceCurve : StepCurve, IExpConvertableFrom + { + + public StepSurfaceCurve( StepModel model ) : base( model ) { } + + public StepCurve Curve3D { get; set; } + + public void FromInstance( StepSurfaceCurve entity ) + { + throw new NotImplementedException(); + } + + } +} diff --git a/StgSharp.Model/STEP/StepEntityLabel.cs b/StgSharp.Model/STEP/StepEntityLabel.cs new file mode 100644 index 00000000..44c201c6 --- /dev/null +++ b/StgSharp.Model/STEP/StepEntityLabel.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEntityLabel.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.PipeLine; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public record class StepEntityLabel : PipelineNodeLabel + { + public StepEntityLabel( int id ) + { + Id = id; + } + + public int Id { get; init; } + + public override int ComputeHashCode() + { + return Id; + } + + public override string ToString() + { + return $"StepEntityLabel: {Id}"; + } + } +} diff --git a/StgSharp.Model/STEP/StepEntityUnsupportedException.cs b/StgSharp.Model/STEP/StepEntityUnsupportedException.cs new file mode 100644 index 00000000..d48787a6 --- /dev/null +++ b/StgSharp.Model/STEP/StepEntityUnsupportedException.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepEntityUnsupportedException.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.Model.Step +{ + internal class StepEntityUnsupportedException : Exception { } +} diff --git a/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs b/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs new file mode 100644 index 00000000..3625be4a --- /dev/null +++ b/StgSharp.Model/STEP/StepUncertainEntity.Parse.cs @@ -0,0 +1,83 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUncertainElement.Parse.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public partial class StepUninitializedEntity + { + + private static StepRepresentationItem ConvertSimpleEntity( + StepModel context, + ExpFunctionCallingNode calling ) + { + string name = calling.FunctionCaller.Name; + return name switch + { + ExpressStepUtil.AdvancedFaceText => StepAdvancedFace.FromSyntax( + context, calling.Right ), + ExpressStepUtil.Axis2Placement2DText => StepAxis2Placement2D.FromSyntax( + context, calling.Right ), + ExpressStepUtil.Axis2Placement3DText => StepAxis2Placement3D.FromSyntax( + context, calling.Right ), + ExpressStepUtil.BSplineCurveWithKnotsText => StepBSplineCurveWithKnots.FromSyntax( + context, calling.Right ), + ExpressStepUtil.CartesianPointText => StepCartesianPoint.FromSyntax( + context, calling.Right ), + ExpressStepUtil.CircleText => StepCircle.FromSyntax( context, calling.Right ), + ExpressStepUtil.CylindricalSurfaceText => StepCylindricalSurface.FromSyntax( + context, calling.Right ), + ExpressStepUtil.DirectionText => StepDirection.FromSyntax( context, calling.Right ), + ExpressStepUtil.EdgeCurveText => StepEdgeCurve.FromSyntax( context, calling.Right ), + ExpressStepUtil.EdgeLoopText => StepEdgeLoop.FromSyntax( context, calling.Right ), + ExpressStepUtil.EllipseText => StepEllipse.FromSyntax( context, calling.Right ), + ExpressStepUtil.FaceBoundText => StepFaceBound.FromSyntax( context, calling.Right ), + ExpressStepUtil.FaceOuterBoundText => StepFaceOuterBound.FromSyntax( + context, calling.Right ), + ExpressStepUtil.LineText => StepLine.FromSyntax( context, calling.Right ), + ExpressStepUtil.OrientedEdgeText => StepOrientedEdge.FromSyntax( + context, calling.Right ), + ExpressStepUtil.PlaneText => StepPlane.FromSyntax( context, calling.Right ), + ExpressStepUtil.VectorText => StepVector.FromSyntax( context, calling.Right ), + ExpressStepUtil.VertexPointText => StepVertexPoint.FromSyntax( + context, calling.Right ), + _ => throw new StepEntityUnsupportedException() + }; + } + + } +} diff --git a/StgSharp.Model/STEP/StepUncertainEntity.cs b/StgSharp.Model/STEP/StepUncertainEntity.cs new file mode 100644 index 00000000..eb29b2b7 --- /dev/null +++ b/StgSharp.Model/STEP/StepUncertainEntity.cs @@ -0,0 +1,238 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUncertainEntity.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 Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Operations; + +using StgSharp; + +using StgSharp.Model.Step; +using StgSharp.PipeLine; +using StgSharp.Script; + +using StgSharp.Script.Express; + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Dynamic; +using System.Reflection.Metadata; +using System.Security.AccessControl; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; +using System.Transactions; +using System.Xml.Linq; + +namespace StgSharp.Model.Step +{ + public partial class StepUninitializedEntity : StepEntityBase, IConvertableToPipelineNode + { + + internal const string InName = "in", OutName = "out"; + + private ExpSyntaxNode _data; + + internal StepUninitializedEntity( StepModel model, int id ) + { + Context = model; + Id = id; + } + + internal StepUninitializedEntity( StepModel model, StepEntityLabel label ) + { + Context = model; + Label = label; + } + + internal StepUninitializedEntity( + StepModel model, + int id, + ExpSyntaxNode initialization, + IEnumerable dependency ) + { + Context = model; + Id = id; + _data = initialization; + if( dependency == null ) + { + Dependencies = []; + } else + { + Dependencies = dependency; + } + } + + public override StepItemType ItemType => StepItemType.Unknown; + + internal static HashSet UnsupportedItemTypes { get; } = new HashSet(); + + internal StepEntityBase? ConvertToAccurate() + { + /* + StringBuilder builder = new StringBuilder(); + if( Dependencies is null || _data is null ) + { + builder.Append( "---------------------------" ); + builder.Append( "************************" ); + Console.WriteLine( + $"Building entity {Id} from thread {Environment.CurrentManagedThreadId} with dependency:{builder.ToString()} " ); + } else + { + foreach( int item in Dependencies ) { + builder.Append( $"{item}," ); + } + } + return null; + /**/ + if( _data is ExpFunctionCallingNode initNode ) + { + string name = initNode.FunctionCaller.Name; + StepEntityBase? entity = ConvertSimpleEntity( Context, initNode ); + if( entity is null ) + { + UnsupportedItemTypes.Add( name ); + return null; + } + return entity; + } else if( _data is StepComplexEntityNode complex ) + { + /**/ + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( complex.Right, true ); + StepRepresentationItem entity = null!; + while( enumerator.MoveNext() ) + { + if( enumerator.Current is not ExpFunctionCallingNode init ) { + throw new InvalidCastException(); + } + StepRepresentationItem? e = ConvertSimpleEntity( Context, init ); + if( e is null ) + { + //throw new NotImplementedException( $"Unknown entity type in sequence {Id}" ); + return null; + } + if( entity is null ) + { + entity = e; + } else + { + entity = StepDataParser.Implement( entity, e ); + } + } + return entity; + /**/ + return null; + } else + { + throw new ExpInvalidSyntaxException( "Name of entity is required." ); + } + } + + internal void FromSequence( StepEntityDefineSequence sequence ) + { + ExpSyntaxNode node = sequence.Expression; + if( node is not ExpBinaryOperatorNode assign ) { + throw new ExpInvalidSyntaxException( "Not an assign expression " ); + } + StepEntityInstanceNode? idNode = assign.Left as StepEntityInstanceNode; + if( idNode!.Id != this.Id ) { + throw new InvalidOperationException(); + } + FromSequenceUnsafe( sequence ); + } + + internal void FromSequenceUnsafe( StepEntityDefineSequence sequence ) + { + ExpSyntaxNode assign = ( sequence.Expression as ExpBinaryOperatorNode )!; + ExpSyntaxNode initNode; + if( ( assign.Right is ExpFunctionCallingNode f ) ) + { + initNode = assign.Right; + ExpEntityTypeName = f.FunctionCaller.Name; + } else if( ( assign.Right is StepComplexEntityNode c ) ) + { + initNode = assign.Right; + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( c.Right, false ); + StringBuilder sb = new StringBuilder(); + sb.Append( "Complex entity initialization: " ); + int count = 0; + while( enumerator.MoveNext() ) + { + if( count > 0 ) { + sb.Append( " <-> " ); + } + f = ( enumerator.Current as ExpFunctionCallingNode )!; + sb.Append( $"{f.FunctionCaller.Name}" ); + count++; + } + ExpEntityTypeName = sb.ToString(); + } else + { + throw new ExpInvalidSyntaxException( + "Entity init or complex entity define is required." ); + } + if( _data is not null ) { + return; + } + _data = initNode!; + Dependencies = sequence.Dependencies ?? []; + } + + void IConvertableToPipelineNode.NodeMain( + in Dictionary input, + in Dictionary output ) + { + try + { + StepEntityBase? entity = ConvertToAccurate(); + if( entity is not null ) + { + entity.FromInstance( this ); + Context.ReplaceEntity( this, entity ); + } + } + catch( StepEntityUnsupportedException ) { } + catch( Exception ex ) + { + throw new Exception( $"Step decoder crashed when building entity {Id}", ex ); + } + + //Context.ReplaceEntity( this, entity ); + PipelineNodeOutPort.SkipAll( output ); + } + + IEnumerable IConvertableToPipelineNode.InputPortName => [InName]; + + PipelineNodeOperation IConvertableToPipelineNode.Operation => ( this as IConvertableToPipelineNode ).NodeMain; + + IEnumerable IConvertableToPipelineNode.OutputPortName => [OutName]; + + } +} \ No newline at end of file diff --git a/StgSharp.Model/STEP/StepUnsupportedEntity.cs b/StgSharp.Model/STEP/StepUnsupportedEntity.cs new file mode 100644 index 00000000..49f4d046 --- /dev/null +++ b/StgSharp.Model/STEP/StepUnsupportedEntity.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="StepUnsupportedEntity.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.Script.Express; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Model.Step +{ + public class StepUnsupportedEntity : StepEntityBase + { + + private ExpSyntaxNode _initSequence; + + public StepUnsupportedEntity( StepModel model, int id, string name, ExpSyntaxNode sequence ) + { + Id = id; + Name = name; + _initSequence = sequence; + Context = model; + } + + public override StepItemType ItemType => StepItemType.Unknown; + + } +} diff --git a/StgSharp.Model/StgSharp.Model.csproj b/StgSharp.Model/StgSharp.Model.csproj index 4147ac04..bf6032ec 100644 --- a/StgSharp.Model/StgSharp.Model.csproj +++ b/StgSharp.Model/StgSharp.Model.csproj @@ -5,6 +5,7 @@ enable preview AnyCPU;x64 + True diff --git a/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json b/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json new file mode 100644 index 00000000..b505019f --- /dev/null +++ b/StgSharp.Model/bin/x64/Release/net8.0/StgSharp.Model.deps.json @@ -0,0 +1,244 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Model/1.0.0": { + "dependencies": { + "StgSharp.Common": "1.0.0", + "StgSharp.Script": "1.0.0" + }, + "runtime": { + "StgSharp.Model.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": {}, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "4.13.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Collections.Immutable/8.0.0": {}, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + }, + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "Microsoft.CodeAnalysis.CSharp": "4.13.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Model/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==", + "path": "microsoft.codeanalysis.analyzers/3.11.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-T8nRl4mAUY4mhdYM4U2ra2vP2EL+ol8Yqwo0gwC/V55vmlXq9NxdIkZJynTpTL1uX/jHijJ90AeOEx4lf7OwzQ==", + "path": "microsoft.codeanalysis.common/4.13.0", + "hashPath": "microsoft.codeanalysis.common.4.13.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BsH7Vijbj9IL7Fj4k/ysZSVyLGFqr75wmdFGwCKWJvSjnA1xwPaQ3hkB2BQdHOt5CpEYA6Q0I6Oo5sDTDHqHsg==", + "path": "microsoft.codeanalysis.csharp/4.13.0", + "hashPath": "microsoft.codeanalysis.csharp.4.13.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "path": "system.collections.immutable/8.0.0", + "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512" + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "path": "system.reflection.metadata/8.0.0", + "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs index ec6d5c05..ecb9214b 100644 --- a/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs +++ b/StgSharp.Model/obj/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs index ec6d5c05..ecb9214b 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json +++ b/StgSharp.Model/obj/x64/Debug/net8.0/StgSharp.Model.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs new file mode 100644 index 00000000..b4c1c687 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Model")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..77d80d84 --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.csproj.FileListAbsolute.txt @@ -0,0 +1,18 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\bin\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.BC99943D.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\refint\StgSharp.Model.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\StgSharp.Model.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Model\obj\x64\Release\net8.0\ref\StgSharp.Model.dll diff --git a/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.Model/obj/x64/Release/net8.0/StgSharp.Model.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Script/Common/CodeLineHelper.cs b/StgSharp.Script/Common/CodeLineHelper.cs index 49309174..676fe6c2 100644 --- a/StgSharp.Script/Common/CodeLineHelper.cs +++ b/StgSharp.Script/Common/CodeLineHelper.cs @@ -51,8 +51,7 @@ namespace StgSharp.Script ReadOnlySpan subSpan = sourceSpan.Slice( startIndex ); int start = 0; - while( start < subSpan.Length && char.IsWhiteSpace( - subSpan[ start ] ) ) { + while( start < subSpan.Length && char.IsWhiteSpace( subSpan[ start ] ) ) { start++; } int end = subSpan.Length - 1; @@ -67,10 +66,7 @@ namespace StgSharp.Script return new string( subSpan.Slice( start, finalLength ) ); } - public static string SliceAndTrim( - this string line, - int startIndex, - int length ) + public static string SliceAndTrim( this string line, int startIndex, int length ) { if( line == null ) { throw new ArgumentNullException( nameof( line ) ); @@ -88,8 +84,7 @@ namespace StgSharp.Script ReadOnlySpan subSpan = sourceSpan.Slice( startIndex, length ); int start = 0; - while( start < subSpan.Length && char.IsWhiteSpace( - subSpan[ start ] ) ) { + while( start < subSpan.Length && char.IsWhiteSpace( subSpan[ start ] ) ) { start++; } int end = subSpan.Length - 1; diff --git a/StgSharp.Script/Common/CompileStack.cs b/StgSharp.Script/Common/CompileStack.cs index d5a9252f..73e20404 100644 --- a/StgSharp.Script/Common/CompileStack.cs +++ b/StgSharp.Script/Common/CompileStack.cs @@ -28,6 +28,8 @@ // //----------------------------------------------------------------------- //----------------------------------------------------------------------- +using StgSharp.Collections; + using System; using System.Collections.Generic; using System.Data; @@ -49,9 +51,10 @@ namespace StgSharp.Script private Token[] _tokenArray = new Token[4]; private int _nodeCount,_tokenCount, _operatorCount; - private Stack _depthStack = new Stack(); - private Stack _isNode = new Stack(); + private RandomAccessibleStack _isNode = new RandomAccessibleStack( + 8 ); + private Stack _depthStack = new Stack(); private Stack> _statementCache = new Stack>(); private TNode _lastNode; @@ -97,6 +100,43 @@ namespace StgSharp.Script Stack statementsInDepth = _statementCache.Pop(); } + public bool GetOperandAt( Index i, out TNode operandNode, out Token operandToken ) + { + OperandIndex index = _isNode[ i ]; + if( index.IsNode ) + { + operandNode = _nodeArray[ index.Index ]; + operandToken = Token.Empty; + return true; + } else + { + operandToken = _tokenArray[ index.Index ]; + operandNode = default!; + return false; + } + } + + public bool GetOperandAt( + CompileDepthMark depth, + Index i, + out Token operandToken, + out TNode operandNode ) + { + OperandIndex index = _isNode[ i ]; + _depthStack.Contains( depth ); + if( index.IsNode ) + { + operandNode = _nodeArray[ index.Index ]; + operandToken = Token.Empty; + return true; + } else + { + operandToken = _tokenArray[ index.Index ]; + operandNode = default!; + return false; + } + } + public CompileDepthMark IncreaseDepth( int usage ) { CompileDepthMark mark = @@ -131,7 +171,7 @@ namespace StgSharp.Script n = TNode.Empty; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ _nodeCount - 1 ]; @@ -160,7 +200,7 @@ namespace StgSharp.Script n = TNode.Empty; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ --_nodeCount ]; @@ -189,8 +229,8 @@ namespace StgSharp.Script Array.Resize( ref _nodeArray, _nodeArray.Length * 2 ); } _nodeArray[ _nodeCount ] = node; + _isNode.Push( new( true, _nodeCount ) ); _nodeCount++; - _isNode.Push( true ); IsLastAddedOperator = false; } @@ -200,8 +240,8 @@ namespace StgSharp.Script Array.Resize( ref _tokenArray, _tokenArray.Length * 2 ); } _tokenArray[ _tokenCount ] = token; + _isNode.Push( new( false, _tokenCount ) ); _tokenCount++; - _isNode.Push( false ); IsLastAddedOperator = false; } @@ -229,7 +269,7 @@ namespace StgSharp.Script isNode = false; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ _nodeCount - 1 ]; @@ -264,7 +304,7 @@ namespace StgSharp.Script isNode = false; return false; } - if( _isNode.Pop() ) + if( _isNode.Pop().IsNode ) { t = Token.Empty; n = _nodeArray[ --_nodeCount ]; @@ -290,5 +330,7 @@ namespace StgSharp.Script return false; } + private record struct OperandIndex( bool IsNode, int Index ); + } } diff --git a/StgSharp.Script/Common/IScriptSourceProvider.cs b/StgSharp.Script/Common/IScriptSourceProvider.cs index dfe2bcd4..380d5ee7 100644 --- a/StgSharp.Script/Common/IScriptSourceProvider.cs +++ b/StgSharp.Script/Common/IScriptSourceProvider.cs @@ -37,15 +37,9 @@ namespace StgSharp.Script public interface IScriptSourceProvider { - bool IsEmpty - { - get; - } + bool IsEmpty { get; } - int Location - { - get; - } + int Location { get; } void EndWriting(); @@ -54,10 +48,14 @@ namespace StgSharp.Script string ReadLine( out int position ); /// - /// Return part of current provider. + /// Return part of current provider. /// - /// Count of lines to be sliced - /// + /// + /// Count of lines to be sliced + /// + /// + /// + /// public IScriptSourceProvider Slice( int location, int count ); } diff --git a/StgSharp.Script/Common/ITypeSource.cs b/StgSharp.Script/Common/ITypeSource.cs index ea1daaba..89c57014 100644 --- a/StgSharp.Script/Common/ITypeSource.cs +++ b/StgSharp.Script/Common/ITypeSource.cs @@ -36,8 +36,7 @@ using System.Threading.Tasks; namespace StgSharp.Script { - public interface ITypeSource - where TConvert: ITypeSource + public interface ITypeSource where TConvert: ITypeSource { bool IsConvertable( TConvert targetType ); diff --git a/StgSharp.Script/Common/ScriptSourceTransmitter.cs b/StgSharp.Script/Common/ScriptSourceTransmitter.cs index efa9287c..7a4007eb 100644 --- a/StgSharp.Script/Common/ScriptSourceTransmitter.cs +++ b/StgSharp.Script/Common/ScriptSourceTransmitter.cs @@ -38,9 +38,9 @@ using System.Text.RegularExpressions; namespace StgSharp.Script { /// - /// Transmit a continuous part of script code to interpreter or compiler. This transmitter is - /// designed for single-thread-write and single-thread read. Any multi thread operation will - /// cause undefined behaviour. + /// Transmit a continuous part of script code to interpreter or compiler. This transmitter is + /// designed for single-thread-write and single-thread read. Any multi thread operation will + /// cause undefined behaviour. /// public class ScriptSourceTransmitter : IScriptSourceProvider { @@ -73,10 +73,7 @@ namespace StgSharp.Script _index = 0; } - public ScriptSourceTransmitter( - string endMark, - int start, - int capacity ) + public ScriptSourceTransmitter( string endMark, int start, int capacity ) { _cache = new List( capacity ); _completeMark = endMark; @@ -85,8 +82,7 @@ namespace StgSharp.Script } public bool IsEmpty => _isWriting ? - ( _cache.Count == 0 ) : ( _buffer.Length == 0 ) || ( _index >= - _buffer.Length ); + ( _cache.Count == 0 ) : ( _buffer.Length == 0 ) || ( _index >= _buffer.Length ); public bool IsFrozen => !_isWriting; @@ -107,8 +103,7 @@ namespace StgSharp.Script public string ReadLine() { if( _isWriting ) { - throw new InvalidOperationException( - "Cannot read before all writing operation." ); + throw new InvalidOperationException( "Cannot read before all writing operation." ); } if( _index >= _buffer.Length ) { return string.Empty; @@ -121,10 +116,10 @@ namespace StgSharp.Script public string ReadLine( out int position ) { if( _isWriting ) { - throw new InvalidOperationException( - "Cannot read before all writing operation." ); + throw new InvalidOperationException( "Cannot read before all writing operation." ); } - if( _index >= _buffer.Length ) { + if( _index >= _buffer.Length ) + { position = -1; return string.Empty; } @@ -148,7 +143,8 @@ namespace StgSharp.Script if( !_isWriting ) { return; } - if( string.Equals( _completeMark, line ) ) { + if( string.Equals( _completeMark, line ) ) + { EndWriting(); return; } diff --git a/StgSharp.Script/Express/Builtin/ExpLogic.cs b/StgSharp.Script/Express/Builtin/ExpLogic.cs index 7f102257..fa4a64ce 100644 --- a/StgSharp.Script/Express/Builtin/ExpLogic.cs +++ b/StgSharp.Script/Express/Builtin/ExpLogic.cs @@ -30,6 +30,7 @@ //----------------------------------------------------------------------- using System; using System.Collections.Generic; +using System.Runtime.CompilerServices; using System.Text; namespace StgSharp.Script.Express @@ -46,13 +47,10 @@ namespace StgSharp.Script.Express public struct ExpLogic { - public static readonly ExpLogic False = new ExpLogic( - ExpLogicValue.False ); + public static readonly ExpLogic False = new ExpLogic( ExpLogicValue.False ); - public static readonly ExpLogic True = new ExpLogic( - ExpLogicValue.True ); - public static readonly ExpLogic Unknown = new ExpLogic( - ExpLogicValue.Unknown ); + public static readonly ExpLogic True = new ExpLogic( ExpLogicValue.True ); + public static readonly ExpLogic Unknown = new ExpLogic( ExpLogicValue.Unknown ); private readonly ExpLogicValue _value; @@ -67,13 +65,18 @@ namespace StgSharp.Script.Express public bool IsUnknown => _value == ExpLogicValue.Unknown; + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public bool ToBoolean() + { + return _value == ExpLogicValue.True; + } + public override string ToString() => _value.ToString(); - public static bool TryParse( - ReadOnlySpan value, - out ExpLogic result ) + public static bool TryParse( ReadOnlySpan value, out ExpLogic result ) { - if( Enum.TryParse( value, out ExpLogicValue e ) ) { + if( Enum.TryParse( value, out ExpLogicValue e ) ) + { result = new ExpLogic( e ); return true; } diff --git a/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs index 5d753d20..4a615615 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpBinaryOperatorNode.cs @@ -73,8 +73,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -158,8 +158,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -229,8 +229,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, @@ -283,8 +283,8 @@ namespace StgSharp.Script.Express left.EqualityTypeConvert.Name ); } bool isFloat = - ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == - 0; + ( left._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0 || + ( right._nodeFlag | ExpNodeFlag.BuiltinType_Real ) == 0; return new ExpBinaryOperatorNode( source, left, right ) { _returnType = isFloat ? ExpressCompile.ExpReal : ExpressCompile.ExpInt, diff --git a/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs new file mode 100644 index 00000000..4b7b69c7 --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpEnumLiteralNode.cs @@ -0,0 +1,68 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpEnumLiteralNode.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.Script; + +using System; + +namespace StgSharp.Script.Express +{ + public class ExpEnumLiteralNode : ExpSyntaxNode + { + + private ExpEnumLiteralNode( Token t ) : base( t ) { } + + public override ExpSyntaxNode Left => Empty; + + public override ExpSyntaxNode Right => Empty; + + public override IExpElementSource EqualityTypeConvert => ExpInstantiableElement.Void; + + public string Literal { get; private set; } + + public static ExpEnumLiteralNode Create( Token t, Func parser ) + { + string l; + if( parser is null ) + { + l = t.Value; + } else + { + l = parser( t.Value ); + } + return new ExpEnumLiteralNode( t ) + { + Literal = l, + CodeConvertTemplate = l + }; + } + + } +} \ No newline at end of file diff --git a/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs index 45a5044c..98e043d0 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpLiteralNode.cs @@ -88,7 +88,14 @@ namespace StgSharp.Script.Express } - public class ExpBoolNode : ExpElementInstance + public interface IExpBooleanSyntax + { + + bool Value { get; } + + } + + public class ExpBoolNode : ExpElementInstance, IExpBooleanSyntax { private readonly bool _value; @@ -152,7 +159,7 @@ namespace StgSharp.Script.Express } - public class ExpLogicValueNode : ExpElementInstance + public class ExpLogicValueNode : ExpElementInstance, IExpBooleanSyntax { private readonly ExpLogic _value; @@ -166,7 +173,7 @@ namespace StgSharp.Script.Express CodeConvertTemplate = isLiteral ? value.ToString() : source.Value; } - public ExpLogic Value => _value; + public ExpLogic LogicValue => _value; public override IExpElementSource EqualityTypeConvert { @@ -177,5 +184,7 @@ namespace StgSharp.Script.Express public override string TypeName => EqualityTypeConvert.Name; + bool IExpBooleanSyntax.Value => _value.ToBoolean(); + } } diff --git a/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs new file mode 100644 index 00000000..317ddaad --- /dev/null +++ b/StgSharp.Script/Express/ExpAstNode/ExpRangeAndIndexNode.cs @@ -0,0 +1,61 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpRangeAndIndexNode.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.Script.Express +{ + public class ExpIndexNode : ExpInstanceReferenceNode + { + + internal ExpIndexNode( Token t, ExpSyntaxNode node ) : base( t ) { } + + public override ExpSyntaxNode Left => throw new NotImplementedException(); + + public override ExpSyntaxNode Right => throw new NotImplementedException(); + + public override IExpElementSource EqualityTypeConvert => throw new NotImplementedException(); + + public static ExpIndexNode IndexAt( Token position, ExpSyntaxNode expression ) + { + ArgumentNullException.ThrowIfNull( expression ); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( expression.NodeFlag ) ) { + throw new ExpInvalidTypeException( + position, "Integer", expression.EqualityTypeConvert.Name ); + } + return new ExpIndexNode( position, expression ); + } + + } +} diff --git a/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs index 969864a5..7e46a6d4 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpRepeatNode.cs @@ -54,9 +54,9 @@ namespace StgSharp.Script.Express ExpSyntaxNode whileRule ) : base( source ) { - if( variable.NodeFlag != begin.NodeFlag || begin.NodeFlag != end.NodeFlag || ( increment != - null && end.NodeFlag != - increment.NodeFlag ) ) { + if( variable.NodeFlag != begin.NodeFlag || + begin.NodeFlag != end.NodeFlag || + ( increment != null && end.NodeFlag != increment.NodeFlag ) ) { throw new InvalidCastException(); } if( IsNullOrEmpty( increment ) ) diff --git a/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs b/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs index c90a04c9..c502366e 100644 --- a/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/ExpTupleNode.cs @@ -60,9 +60,9 @@ namespace StgSharp.Script.Express return new ExpTupleNode( node ); } - public ExpNodeNextEnumerator TupleAsEnumerator() + public ExpNodePresidentEnumerator TupleAsEnumerator() { - return node.ToEnumerator(); + return node.ToPresidentEnumerator(); } } diff --git a/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs b/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs index 20181f43..1242a021 100644 --- a/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs +++ b/StgSharp.Script/Express/ExpAstNode/_ExpNode.cs @@ -122,11 +122,12 @@ namespace StgSharp.Script.Express { IExpElementSource tLeft = left.EqualityTypeConvert, tRight = right.EqualityTypeConvert; - if( tLeft is not ExpInstantiableElement tLeftIns || tRight is not ExpInstantiableElement tRightIns ) { + if( tLeft is not ExpInstantiableElement tLeftIns || + tRight is not ExpInstantiableElement tRightIns ) { return false; } - if( ExpInstantiableElement.IsNullOrVoid( tLeftIns ) || ExpInstantiableElement.IsNullOrVoid( - tLeftIns ) ) { + if( ExpInstantiableElement.IsNullOrVoid( tLeftIns ) || + ExpInstantiableElement.IsNullOrVoid( tLeftIns ) ) { return false; } return tLeft.IsConvertable( tRight ); diff --git a/StgSharp.Script/Express/ExpNodeFlag.cs b/StgSharp.Script/Express/ExpNodeFlag.cs index f9caf5f3..6a34ba70 100644 --- a/StgSharp.Script/Express/ExpNodeFlag.cs +++ b/StgSharp.Script/Express/ExpNodeFlag.cs @@ -30,12 +30,39 @@ //----------------------------------------------------------------------- using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StgSharp.Script.Express { + [EditorBrowsable( EditorBrowsableState.Never )] + public static class ExpNodeFlagHelper + { + + public static bool IsInFlag( this ExpNodeFlag flag, long target ) + { + return ( ( long )flag & target ) != 0; + } + + public static bool IsInFlag( this ExpNodeFlag flag, ExpNodeFlag target ) + { + return ( long )( flag & target ) != 0; + } + + public static bool IsNotInFlag( this ExpNodeFlag flag, long target ) + { + return ( ( long )flag & target ) == 0; + } + + public static bool IsNotInFlag( this ExpNodeFlag flag, ExpNodeFlag target ) + { + return ( long )( flag & target ) == 0; + } + + } + [Flags] public enum ExpNodeFlag : long { diff --git a/StgSharp.Script/Express/ExpNodeTempEnumerator.cs b/StgSharp.Script/Express/ExpNodeTempEnumerator.cs new file mode 100644 index 00000000..c52b277f --- /dev/null +++ b/StgSharp.Script/Express/ExpNodeTempEnumerator.cs @@ -0,0 +1,200 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpNodeTempEnumerator.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 Microsoft.CodeAnalysis.CSharp.Syntax; + +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace StgSharp.Script.Express +{ + public static class ExpNodeNextEnumeratorExtensions + { + + public static ExpNodeTempEnumerator AsCollectionEnumerator( + this ExpSyntaxNode token, + bool unpack ) + { + ExpNodeTempEnumerator enumerator = new ExpNodeTempEnumerator( token, unpack ); + IExpElementSource type = token.EqualityTypeConvert; + while( enumerator.MoveNext() ) + { + if( enumerator. Current != type ) { + throw new InvalidCastException(); + } + } + return enumerator; + } + + [MethodImpl( MethodImplOptions.AggressiveInlining )] + public static ExpNodePresidentEnumerator ToPresidentEnumerator( this ExpSyntaxNode node ) + { + return new ExpNodePresidentEnumerator( node ); + } + + public static ExpNodePresidentEnumerator TupleToPresidentEnumerator( + this ExpSyntaxNode tuple ) + { + return new ExpNodePresidentEnumerator( tuple.Right ); + } + + } + + public class ExpNodePresidentEnumerator : IEnumerator + { + + private int _index = -1; + private List _begin = new List(); + + public ExpNodePresidentEnumerator( ExpSyntaxNode token ) + { + _begin.Add( token ); + ExpSyntaxNode t = token; + while( !ReferenceEquals( t.Next, token ) && t.Next != null ) + { + t = t.Next; + _begin.Add( t ); + } + } + + public ExpSyntaxNode this[ int index ] + { + get + { + ArgumentOutOfRangeException.ThrowIfNegative( index ); + ArgumentOutOfRangeException.ThrowIfGreaterThan( index, _begin.Count ); + return _begin[ index ]; + } + } + + public ExpSyntaxNode Current => _begin[ _index ]; + + public int Count => _begin.Count; + + public void AssertEnumeratorCount( int count ) + { + if( _begin.Count != count ) { + throw new InvalidOperationException( + $"Enumerator count mismatch. Expected {count}, but got {_begin.Count}." ); + } + } + + public void AssertEnumeratorCount( int min, int max ) + { + if( _begin.Count < min || _begin.Count > max ) { + throw new InvalidOperationException( + $"Enumerator count mismatch. Expected between {min} and {max}, but got {_begin.Count}." ); + } + } + + public Span AsSpan() + { + return CollectionsMarshal.AsSpan( _begin ); + } + + public void Dispose() + { + return; + } + + public bool MoveNext() + { + if( _index < _begin.Count - 1 ) + { + _index++; + return true; + } + return false; + } + + public void Reset() + { + _index = -1; + } + + object IEnumerator.Current => this.Current; + + } + + public class ExpNodeTempEnumerator : IEnumerator + { + + private ExpSyntaxNode? _current,_begin; + + public ExpNodeTempEnumerator( ExpSyntaxNode node ) + { + _current = null; + _begin = node; + } + + public ExpNodeTempEnumerator( ExpSyntaxNode node, bool unpack ) + { + _current = null; + _begin = unpack ? node.Right : node; + } + + public ExpSyntaxNode Current => _current!; + + public bool MoveNext() + { + if( _current == null ) + { + _current = _begin; + return true; + } + ExpSyntaxNode next = _current.Next; + if( ReferenceEquals( next, _begin ) || next == null ) { + return false; + } + _current = next; + return true; + } + + void IDisposable.Dispose() + { + return; + } + + void IEnumerator.Reset() + { + _current = null; + } + + object IEnumerator.Current => _current; + + } +} diff --git a/StgSharp.Script/Express/ExpPostProcessor.cs b/StgSharp.Script/Express/ExpPostProcessor.cs index fb1939dc..fa6b18cd 100644 --- a/StgSharp.Script/Express/ExpPostProcessor.cs +++ b/StgSharp.Script/Express/ExpPostProcessor.cs @@ -50,50 +50,47 @@ namespace StgSharp.Script.Express public string Process( string filePath ) { - Dictionary factoryMethods = new Dictionary( - ); + Dictionary factoryMethods = new Dictionary(); FileStream file = File.OpenRead( filePath ); - SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText( - File.ReadAllText( filePath ) ); + SyntaxTree syntaxTree = CSharpSyntaxTree.ParseText( File.ReadAllText( filePath ) ); - CSharpCompilation compilation = CSharpCompilation.Create( - "Analysis" ) - .AddSyntaxTrees( syntaxTree ) - .AddReferences( - MetadataReference.CreateFromFile( - typeof( object ).Assembly.Location ) ); + CSharpCompilation compilation = CSharpCompilation.Create( "Analysis" ) + .AddSyntaxTrees( syntaxTree ) + .AddReferences( + MetadataReference.CreateFromFile( + typeof( object ).Assembly.Location ) ); - INamedTypeSymbol? interfaceSymbol = compilation.GetTypeByMetadataName( - _interfaceName ); + INamedTypeSymbol? interfaceSymbol = compilation.GetTypeByMetadataName( _interfaceName ); if( interfaceSymbol == null ) { - throw new InvalidOperationException( - $"Interface '{_interfaceName}' not found." ); + throw new InvalidOperationException( $"Interface '{_interfaceName}' not found." ); } - SemanticModel semanticModel = compilation.GetSemanticModel( - syntaxTree ); + SemanticModel semanticModel = compilation.GetSemanticModel( syntaxTree ); SyntaxNode root = syntaxTree.GetRoot(); - IEnumerable classDeclarations = root.DescendantNodes( - ) - .OfType() - .Where( - cls => cls.BaseList?.Types.Any( - t => SymbolEqualityComparer.Default - .Equals( - semanticModel.GetTypeInfo( t.Type ) - .Type, - interfaceSymbol ) ) ?? - false ); + IEnumerable classDeclarations = root.DescendantNodes() + .OfType( + ) + .Where( + cls => cls.BaseList?.Types.Any( + t => SymbolEqualityComparer.Default + .Equals( + semanticModel.GetTypeInfo( + t.Type ) + .Type, + interfaceSymbol ) ) ?? + false ); - foreach( ClassDeclarationSyntax classDeclaration in classDeclarations ) { + foreach( ClassDeclarationSyntax classDeclaration in classDeclarations ) + { string className = classDeclaration.Identifier.Text; IMethodSymbol? factoryMethod = interfaceSymbol.GetMembers() - .OfType() - .FirstOrDefault( - m => m.IsStatic && m.Name == "CreateInstance" ); + .OfType() + .FirstOrDefault( + m => m.IsStatic && + m.Name == "CreateInstance" ); if( factoryMethod != null ) { factoryMethods[ className ] = $"() => {interfaceSymbol.Name}.CreateInstance()"; @@ -102,9 +99,7 @@ namespace StgSharp.Script.Express string code = "var factoryMethods = new Dictionary>\n{\n"; code += string.Join( - ",\n", - factoryMethods.Select( - kvp => $" {{ \"{kvp.Key}\", {kvp.Value} }}" ) ); + ",\n", factoryMethods.Select( kvp => $" {{ \"{kvp.Key}\", {kvp.Value} }}" ) ); code += "\n};"; return code; diff --git a/StgSharp.Script/Express/ExpSchemaSource.cs b/StgSharp.Script/Express/ExpSchemaSource.cs index 59c19391..8199c35f 100644 --- a/StgSharp.Script/Express/ExpSchemaSource.cs +++ b/StgSharp.Script/Express/ExpSchemaSource.cs @@ -58,8 +58,7 @@ namespace StgSharp.Script.Express _ruleDefineBegin = GetRuleDefineBegin(), _ruleDefineEnd = GetRuleDefineEnd(); - private readonly GeneratedExpSchema _compileResult = new GeneratedExpSchema( - ); + private readonly GeneratedExpSchema _compileResult = new GeneratedExpSchema(); private List _sourceCache = []; @@ -92,15 +91,19 @@ namespace StgSharp.Script.Express } name = _schemaBegin.Match( line ).Groups[ "namespace" ].Value; - while( !_schemaEnd.IsMatch( line ) ) { - if( TryReadConst( line, reader, - out IExpElementSource source ) ) { + while( !_schemaEnd.IsMatch( line ) ) + { + if( TryReadConst( line, reader, out IExpElementSource source ) ) + { _sourceCache.Add( source ); - } else if( TryReadType( line, reader, out source ) ) { + } else if( TryReadType( line, reader, out source ) ) + { _sourceCache.Add( source ); - } else if( TryReadEntity( line, reader, out source ) ) { + } else if( TryReadEntity( line, reader, out source ) ) + { _sourceCache.Add( source ); - } else if( TryReadRule( line, reader, out source ) ) { + } else if( TryReadRule( line, reader, out source ) ) + { _sourceCache.Add( source ); } else if( TryReadFunction( line, reader, out source ) ) { _sourceCache.Add( source ); @@ -110,33 +113,34 @@ namespace StgSharp.Script.Express } public static bool TryReadSchema( - string firstLine, - ExpFileSource reader, - out ExpSchemaSource source ) + string firstLine, + ExpFileSource reader, + out ExpSchemaSource source ) { - if( !_schemaBegin.IsMatch( firstLine ) ) { + if( !_schemaBegin.IsMatch( firstLine ) ) + { source = null!; return false; } ExpSchemaSource _source = new ExpSchemaSource(); _source.name = _schemaBegin.Match( firstLine ).Groups[ "namespace" ].Value; - while( !_schemaEnd.IsMatch( firstLine ) ) { - if( _source.TryReadConst( - firstLine, reader, - out IExpElementSource _elementSource ) ) { + while( !_schemaEnd.IsMatch( firstLine ) ) + { + if( _source.TryReadConst( firstLine, reader, + out IExpElementSource _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadType( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadType( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadEntity( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadEntity( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadRule( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadRule( firstLine, reader, out _elementSource ) ) + { _source._sourceCache.Add( _elementSource ); - } else if( _source.TryReadFunction( - firstLine, reader, out _elementSource ) ) { + } else if( _source.TryReadFunction( firstLine, reader, out _elementSource ) ) { _source._sourceCache.Add( _elementSource ); } firstLine = reader.ReadLine(); @@ -151,9 +155,7 @@ namespace StgSharp.Script.Express [GeneratedRegex( @"\s*END_CONSTANT;" )] private static partial Regex GetConstDefineEnd(); - [GeneratedRegex( - @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", - RegexOptions.Compiled )] + [GeneratedRegex( @"\s*ENTITY\s*(?[A-Za-z0-9_]+)\s*", RegexOptions.Compiled )] private static partial Regex GetEntityDefineBegin(); [GeneratedRegex( @@ -184,9 +186,7 @@ namespace StgSharp.Script.Express [GeneratedRegex( @"\s*SCHEMA\s*(?[A-Za-z0-9_]+)\s?;" )] private static partial Regex GetSchemaBegin(); - [GeneratedRegex( - @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", - RegexOptions.Compiled )] + [GeneratedRegex( @"END_SCHEMA;\s*--\s*(?[A-Za-z0-9_]+)", RegexOptions.Compiled )] private static partial Regex GetSchemaEnd(); [GeneratedRegex( @@ -200,18 +200,19 @@ namespace StgSharp.Script.Express private static partial Regex GetTypeDefineEnd(); private bool TryReadConst( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _constDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_CONSTANT", reader.Location ); - ExpConstantCollectionSource _source = new ExpConstantCollectionSource( - transmitter ); + ExpConstantCollectionSource _source = new ExpConstantCollectionSource( transmitter ); string line = reader.ReadLine(); - while( !_constDefineEnd.IsMatch( line ) ) { + while( !_constDefineEnd.IsMatch( line ) ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); } @@ -224,27 +225,28 @@ namespace StgSharp.Script.Express } private bool TryReadEntity( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _entityDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_ENTITY", reader.Location ); ExpEntitySource _source = new ExpEntitySource( match.Groups[ "TypeName" ].ToString(), transmitter ); string line = reader.ReadLine(); match = _entityDefineEnd.Match( line ); - while( !match.Success ) { + while( !match.Success ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); match = _entityDefineEnd.Match( line ); } string endedName = match.Groups[ "TypeName" ].ToString(); if( !string.Equals( endedName, _source.Name ) ) { - throw new ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_ENTITY" ); source = _source; @@ -255,12 +257,13 @@ namespace StgSharp.Script.Express } private bool TryReadFunction( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _functionDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_FUNCTION", reader.Location ); ExpFunctionSource _source = new ExpFunctionSource( @@ -268,15 +271,15 @@ namespace StgSharp.Script.Express transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); string line = reader.ReadLine(); match = _functionDefineEnd.Match( line ); - while( !match.Success ) { + while( !match.Success ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); match = _functionDefineEnd.Match( line ); } string endedName = match.Groups[ "FunctionName" ].ToString(); if( !string.Equals( endedName, _source.Name ) ) { - throw new ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_FUNCTION" ); source = _source; @@ -287,12 +290,13 @@ namespace StgSharp.Script.Express } private bool TryReadRule( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _ruleDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_RULE", reader.Location ); ExpRuleSource _source = new ExpRuleSource( @@ -303,15 +307,15 @@ namespace StgSharp.Script.Express } string line = reader.ReadLine(); match = _ruleDefineEnd.Match( line ); - while( !match.Success ) { + while( !match.Success ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); match = _ruleDefineEnd.Match( line ); } string endedName = match.Groups[ "RuleName" ].ToString(); if( !string.Equals( endedName, _source.Name ) ) { - throw new ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_RULE" ); source = _source; @@ -322,12 +326,13 @@ namespace StgSharp.Script.Express } private bool TryReadType( - string firstLine, - ExpFileSource reader, - out IExpElementSource source ) + string firstLine, + ExpFileSource reader, + out IExpElementSource source ) { Match match = _typeDefineBegin.Match( firstLine ); - if( match.Success ) { + if( match.Success ) + { ScriptSourceTransmitter transmitter = new ScriptSourceTransmitter( "END_ENTITY", reader.Location ); ExpTypeSource _source = new ExpTypeSource( @@ -335,15 +340,15 @@ namespace StgSharp.Script.Express transmitter.WriteLine( match.Groups[ "Remaining" ].ToString() ); string line = reader.ReadLine(); match = _typeDefineEnd.Match( line ); - while( !match.Success ) { + while( !match.Success ) + { transmitter.WriteLine( line ); line = reader.ReadLine(); match = _typeDefineEnd.Match( line ); } string endedName = match.Groups[ "TypeName" ].ToString(); if( !string.Equals( endedName, _source.Name ) ) { - throw new ExpInvalidElementDeclareEndingExceptions( - _source.Name, endedName ); + throw new ExpInvalidElementDeclareEndingExceptions( _source.Name, endedName ); } transmitter.WriteLine( "END_ENTITY" ); source = _source; diff --git a/StgSharp.Script/Express/ExpSource.cs b/StgSharp.Script/Express/ExpSource.cs index 1aee1a0c..31815eb8 100644 --- a/StgSharp.Script/Express/ExpSource.cs +++ b/StgSharp.Script/Express/ExpSource.cs @@ -51,14 +51,13 @@ namespace StgSharp.Script.Express public ExpFileSource( string path ) { - if ( !File.Exists( path ) ) { + if( !File.Exists( path ) ) { throw new FileNotFoundException(); } - _expFileStream = new FileStream( - path, FileMode.Open, FileAccess.Read ); + _expFileStream = new FileStream( path, FileMode.Open, FileAccess.Read ); _expMemoryMappedFile = MemoryMappedFile.CreateFromFile( - _expFileStream, null, 0, MemoryMappedFileAccess.Read, - HandleInheritability.None, true ); + _expFileStream, null, 0, MemoryMappedFileAccess.Read, HandleInheritability.None, + true ); _expMemoryMappedStream = _expMemoryMappedFile.CreateViewStream( offset: 0, size: 0, access: MemoryMappedFileAccess.Read ); _memoryReader = new StreamReader( _expMemoryMappedStream ); @@ -79,9 +78,7 @@ namespace StgSharp.Script.Express GC.SuppressFinalize( this ); } - public void EndWriting() - { - } + public void EndWriting() { } public string ReadLine() { @@ -92,7 +89,7 @@ namespace StgSharp.Script.Express return line; } - public string ReadLine(out int position) + public string ReadLine( out int position ) { throw new NotImplementedException(); } @@ -105,15 +102,12 @@ namespace StgSharp.Script.Express readLineSemaphore.Release(); } - IScriptSourceProvider IScriptSourceProvider.Slice(int location, int count) - { - throw new NotSupportedException(); - } - protected virtual void Dispose( bool disposing ) { - if( !disposedValue ) { - if( disposing ) { + if( !disposedValue ) + { + if( disposing ) + { _expFileStream.Dispose(); _expMemoryMappedFile.Dispose(); _expMemoryMappedStream.Dispose(); @@ -123,5 +117,10 @@ namespace StgSharp.Script.Express } } + IScriptSourceProvider IScriptSourceProvider.Slice( int location, int count ) + { + throw new NotSupportedException(); + } + } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs index ad37f904..b0d3c9d6 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.CaseOf.cs @@ -64,8 +64,8 @@ namespace StgSharp.Script.Express return true; case ":": state = _cache.StateOfCurrentDepth(); - if( state.CurrentState != ExpKeyword.Of && state.CurrentState != - ExpKeyword.Otherwise ) + if( state.CurrentState != ExpKeyword.Of && + state.CurrentState != ExpKeyword.Otherwise ) { root = _cache.PackAllStatements(); state.CloseCurrentCase( root ); @@ -95,7 +95,7 @@ namespace StgSharp.Script.Express _cache.StatementsInDepth.Push( root ); return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs index 98e6042d..a02a1313 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.Common.cs @@ -249,7 +249,8 @@ namespace StgSharp.Script.Express private bool TryParseInstance( Token t ) { if( _local.TryGetMember( t.Value, - out ExpSyntaxNode? node ) && node is ExpElementInstance instance ) + out ExpSyntaxNode? node ) && + node is ExpElementInstance instance ) { _cache.PushOperand( ExpInstanceReferenceNode.MakeReferenceFrom( t, instance ) ); return true; @@ -260,7 +261,8 @@ namespace StgSharp.Script.Express } else if( _cache.IsLastAddedOperator ) { if( _cache.PeekOperand( out _, - out ExpSyntaxNode? typenode ) && typenode is ExpMetaRefNode typeRef ) + out ExpSyntaxNode? typenode ) && + typenode is ExpMetaRefNode typeRef ) { _cache.PopOperand( out _, out _ ); _local.AddMember( t.Value, typeRef.SourceRef.CreateInstanceNode( t ) ); diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs index 1b95928f..be436fd9 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.If.cs @@ -107,7 +107,7 @@ namespace StgSharp.Script.Express _cache.StatementsInDepth.Push( ifNode ); return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs new file mode 100644 index 00000000..c8a0daf6 --- /dev/null +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RangeAndIndex.cs @@ -0,0 +1,123 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.RangeAndIndex.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 Microsoft.CodeAnalysis.Operations; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ExpKeyword = StgSharp.Script.Express.ExpressCompile.Keyword; + +namespace StgSharp.Script.Express +{ + public partial class ExpSyntaxAnalyzer + { + + private void AppendToken_RangeAndIndex( Token t ) + { + ExpSyntaxNode root; + switch( t.Value ) + { + case "[": + RangeAndIndexState state = new RangeAndIndexState(); + state.CurrentState = t.Value; + _cache.CurrentDepthMark.StateCache = state; + break; + case "]": + state = _cache.StateOfCurrentDepth(); + + //Generate range or index object + if( _cache.StatementsInDepth.Count != 0 ) + { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: expected one statement to define range beginning." ); + } + ReverseAnalyzeStatement(); + root = _cache.StatementsInDepth.Pop(); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( root.NodeFlag ) ) { + throw new ExpInvalidTypeException( + root, "integer", root.EqualityTypeConvert?.Name ?? string.Empty ); + } + if( state.CurrentState == "[" ) { } else { } + break; + case ":": + state = _cache.StateOfCurrentDepth(); + if( state.CurrentState != "[" ) { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: wrong position of :" ); + } + if( _cache.StatementsInDepth.Count != 0 ) { + throw new ExpInvalidSyntaxException( + "Range and index syntax error: expected one statement to define range beginning." ); + } + ReverseAnalyzeStatement(); + root = _cache.StatementsInDepth.Pop(); + if( ExpNodeFlag.BuiltinType_Int.IsNotInFlag( root.NodeFlag ) ) { + throw new ExpInvalidTypeException( + root, "integer", root.EqualityTypeConvert?.Name ?? string.Empty ); + } + state.RangeStart = root; + break; + default: + state = _cache.StateOfCurrentDepth(); + if( t.Value == "?" ) + { + switch( state.CurrentState ) + { + case ":": + _cache.PushOperand( new ExpIntNode( t, int.MaxValue, true ) ); + break; + case "[": + _cache.PushOperand( new ExpIntNode( t, int.MaxValue, true ) ); + break; + default: + throw new ExpInvalidSyntaxException( + "Range and index syntax error: \"?\" can only be used in range or index" ); + } + } + AppendToken_Common( t ); + break; + } + } + + private class RangeAndIndexState : ICompileDepthState + { + + public ExpSyntaxNode RangeStart { get; set; } + + public string CurrentState { get; set; } = string.Empty; + + } + + } +} diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs index 7b1df2e2..9cc7f93e 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.RepeatLoop.cs @@ -76,12 +76,12 @@ namespace StgSharp.Script.Express case ExpKeyword.Semicolon: if( t.Value != ExpKeyword.EndRepeat ) { - AppendToken_common( t ); + AppendToken_Common( t ); return true; } break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return false; } ExpSyntaxNode root = _cache.PackAllStatements(); @@ -118,7 +118,7 @@ namespace StgSharp.Script.Express state.Begin = root; return true; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } } @@ -137,7 +137,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.While; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -162,7 +162,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.While; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -181,7 +181,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.Semicolon; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { @@ -210,8 +210,9 @@ namespace StgSharp.Script.Express if( ExpTypeSource.IsNullOrVoid( state.IncrementVariableType ) ) { if( ( _local.TryGetMember( t.Value, - out ExpSyntaxNode? node ) && node is ExpElementInstance instance ) || _tempVariableInLoops.TryGetValue( - t.Value, out instance ) ) + out ExpSyntaxNode? node ) && + node is ExpElementInstance instance ) || + _tempVariableInLoops.TryGetValue( t.Value, out instance ) ) { state.IncrementVariable = ExpInstanceReferenceNode.MakeReferenceFrom( t, instance ); @@ -241,7 +242,7 @@ namespace StgSharp.Script.Express state.CurrentState = ExpKeyword.Until; break; default: - AppendToken_common( t ); + AppendToken_Common( t ); return true; } while( _cache.TryPopOperator( out Token op ) ) { diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs new file mode 100644 index 00000000..b7706bfa --- /dev/null +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.ReverseAnalysing.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="ExpSyntaxAnalyzer.ReverseAnalysing.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.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using ExpKeyword = StgSharp.Script.Express.ExpressCompile.Keyword; + +namespace StgSharp.Script.Express +{ + public partial class ExpSyntaxAnalyzer + { + + private void ClosePrefixReverse( Token rightSeparator ) + { + ExpSyntaxNode root; + ReverseAnalyzeStatement(); + root = _cache.PackAllStatements(); + if( rightSeparator.Value == ")" ) { + root = ExpTupleNode.Pack( root ); + } + _cache.DecreaseDepth(); + if( IsSeparatorMatch( _cache.PeekOperator(), rightSeparator ) ) + { + _cache.PopOperator(); + _cache.PushOperand( root ); + } else + { + throw new ExpCompileException( + rightSeparator, "Ending of block does not match its begging" ); + } + } + + private void ReverseAnalyzeStatement() + { + ExpSyntaxNode root; + if( _cache.OperatorAheadOfDepth == 0 ) + { + switch( _cache.OperandAheadOfDepth ) + { + case 1: + _cache.PopOperand( out _, out ExpSyntaxNode? statement ); + _cache.StatementsInDepth.Push( statement ); + break; + case 0: + _cache.StatementsInDepth.Push( ExpSyntaxNode.Empty ); + break; + default: + throw new ExpInvalidSyntaxException( + "More than one operand but no operator provided." ); + } + } else + { + while( _cache.TryPopOperator( out Token op ) ) { + ConvertAndPushOneOperator( op ); + } + _cache.PopOperand( out _, out root ); + _cache.StatementsInDepth.Push( root ); + } + } + + } +} diff --git a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs index dcb054b5..b7bd5025 100644 --- a/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs +++ b/StgSharp.Script/Express/ExpSyntaxAnalyzer.cs @@ -90,7 +90,7 @@ namespace StgSharp.Script.Express AppendToken_RepeatLoop( expToken ); break; default: - AppendToken_common( expToken ); + AppendToken_Common( expToken ); break; } } @@ -112,7 +112,7 @@ namespace StgSharp.Script.Express /// Append a token to top of cache. This method will automatically convert token to node /// if meets separators or operators. /// - private void AppendToken_common( Token expToken ) + private void AppendToken_Common( Token expToken ) { switch( expToken.Flag ) { diff --git a/StgSharp.Script/Express/ExpTokenReader.cs b/StgSharp.Script/Express/ExpTokenReader.cs index 19e5f033..e1d9b4cb 100644 --- a/StgSharp.Script/Express/ExpTokenReader.cs +++ b/StgSharp.Script/Express/ExpTokenReader.cs @@ -71,7 +71,6 @@ namespace StgSharp.Script.Express private IScriptSourceProvider _provider; private Regex - _nextHashtagSymbolPattern = GetHashtagSymbolPattern() , _nextWordTokenPattern = GetNextWordTokenPattern(), _nextStringLiteralPattern = GetStringLiteralPattern(), _nextNumberLiteralPattern = GetNumberLiteralPattern(), @@ -91,7 +90,8 @@ namespace StgSharp.Script.Express public bool IsEmpty { - get => ( ( string.IsNullOrEmpty( _lineCache ) || _current >= _lineCache.Length ) ) && _provider.IsEmpty; + get => ( ( string.IsNullOrEmpty( _lineCache ) || _current >= _lineCache.Length ) ) && + _provider.IsEmpty; } public ExpTokenReaderPreProcessor TokenReaderPreProcessor { get; set; } = ExpTokenReaderPreProcessor.Default; @@ -173,22 +173,6 @@ namespace StgSharp.Script.Express Match match; switch( c ) { - case '#': - match = _nextHashtagSymbolPattern.Match( _lineCache, _current ); - if( match.Success ) - { - begin = match.Groups[ "token" ].Index; - end = match.Groups[ "end" ].Index; - rest = match.Groups[ "rest" ].Index; - _current = rest; - _last = new( - ExpressCompile.PoolString( source[ 0..( end - begin ) ] ), _lineNum, - begin, TokenFlag.Member ); - return _last; - } else - { - throw new ExpInvalidCharException( '#' ); - } case '\'': char cNext = source[ 1 ]; if( cNext == '\'' ) //empty string @@ -281,8 +265,9 @@ namespace StgSharp.Script.Express { begin = _current; _current++; - if( _last.Flag == TokenFlag.Member || _last.Flag == - TokenFlag.Index_Right || _last.Flag == TokenFlag.Separator_Right ) + if( _last.Flag == TokenFlag.Member || + _last.Flag == TokenFlag.Index_Right || + _last.Flag == TokenFlag.Separator_Right ) { _last = new( ExpressCompile.PoolString( source[ ..1 ] ), _lineNum, begin, @@ -406,11 +391,6 @@ namespace StgSharp.Script.Express return !IsEmpty; } - [GeneratedRegex( - @"(?#[0-9A-Za-z]+)(?\s*?)(?\S|$)", - RegexOptions.Singleline )] - private static partial Regex GetHashtagSymbolPattern(); - [GeneratedRegex( @"(?[a-zA-Z][a-zA-Z0-9_]*)(?\s*?)(?\S|$)", RegexOptions.Singleline )] @@ -435,7 +415,7 @@ namespace StgSharp.Script.Express private static partial Regex GetStringLiteralPatternWithSingle(); [GeneratedRegex( - @"(?[:<>=+\-*\/]+)(?\s?)\s*?(?\S|$)", + @"(?[:<>=+\-*\/\.]+)(?\s?)\s*?(?\S|$)", RegexOptions.Singleline )] private static partial Regex GetSymbolPattern(); diff --git a/StgSharp.Script/Express/IExpConvertableFrom.cs b/StgSharp.Script/Express/IExpConvertableFrom.cs new file mode 100644 index 00000000..61ecf92a --- /dev/null +++ b/StgSharp.Script/Express/IExpConvertableFrom.cs @@ -0,0 +1,303 @@ +//----------------------------------------------------------------------- +//----------------------------------------------------------------------- +// file="IExpConvertableFrom.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.Script.Express +{ + // Base interface with one generic parameter renamed to T0 + public interface IExpConvertableFrom where T0: IExpConvertableFrom + { + + void FromInstance( T0 entity ); + + bool IsConvertableTo( string entityTypeName ); + + } + + // 2 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + { + + void FromInstance( T1 entity ); + + } + + // 3 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + { + + void FromInstance( T2 entity ); + + } + + // 4 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + { + + void FromInstance( T3 entity ); + + } + + // 5 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + { + + void FromInstance( T4 entity ); + + } + + // 6 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + { + + void FromInstance( T5 entity ); + + } + + // 7 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + { + + void FromInstance( T6 entity ); + + } + + // 8 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + { + + void FromInstance( T7 entity ); + + } + + // 9 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + { + + void FromInstance( T8 entity ); + + } + + // 10 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + { + + void FromInstance( T9 entity ); + + } + + // 11 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + { + + void FromInstance( T10 entity ); + + } + + // 12 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + { + + void FromInstance( T11 entity ); + + } + + // 13 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + { + + void FromInstance( T12 entity ); + + } + + // 14 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + { + + void FromInstance( T13 entity ); + + } + + // 15 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + where T14: IExpConvertableFrom + { + + void FromInstance( T14 entity ); + + } + + // 16 generic parameters + public interface IExpConvertableFrom : IExpConvertableFrom + where T0: IExpConvertableFrom + where T1: IExpConvertableFrom + where T2: IExpConvertableFrom + where T3: IExpConvertableFrom + where T4: IExpConvertableFrom + where T5: IExpConvertableFrom + where T6: IExpConvertableFrom + where T7: IExpConvertableFrom + where T8: IExpConvertableFrom + where T9: IExpConvertableFrom + where T10: IExpConvertableFrom + where T11: IExpConvertableFrom + where T12: IExpConvertableFrom + where T13: IExpConvertableFrom + where T14: IExpConvertableFrom + where T15: IExpConvertableFrom + { + + void FromInstance( T15 entity ); + + } +} diff --git a/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json b/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json new file mode 100644 index 00000000..064281a8 --- /dev/null +++ b/StgSharp.Script/bin/x64/Release/net8.0/StgSharp.Script.deps.json @@ -0,0 +1,227 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "StgSharp.Script/1.0.0": { + "dependencies": { + "CommunityToolkit.HighPerformance": "8.4.0", + "Microsoft.CodeAnalysis.CSharp": "4.13.0", + "StgSharp.Common": "1.0.0" + }, + "runtime": { + "StgSharp.Script.dll": {} + } + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "runtime": { + "lib/net8.0/CommunityToolkit.HighPerformance.dll": { + "assemblyVersion": "8.4.0.0", + "fileVersion": "8.4.0.1" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": {}, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.11.0", + "Microsoft.CodeAnalysis.Common": "4.13.0", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + }, + "runtime": { + "lib/net8.0/Microsoft.CodeAnalysis.CSharp.dll": { + "assemblyVersion": "4.13.0.0", + "fileVersion": "4.1300.25.12011" + } + }, + "resources": { + "lib/net8.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CSharp/4.7.0": {}, + "System.Collections.Immutable/8.0.0": {}, + "System.Reflection.Metadata/8.0.0": { + "dependencies": { + "System.Collections.Immutable": "8.0.0" + } + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": {}, + "StgSharp.Common/1.0.0": { + "dependencies": { + "Microsoft.CSharp": "4.7.0", + "System.Runtime.CompilerServices.Unsafe": "6.1.0" + }, + "runtime": { + "StgSharp.Common.dll": { + "assemblyVersion": "1.0.0", + "fileVersion": "1.0.0.0" + } + } + } + } + }, + "libraries": { + "StgSharp.Script/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "CommunityToolkit.HighPerformance/8.4.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-flxspiBs0G/0GMp7IK2J2ijV9bTG6hEwFc/z6ekHqB6nwRJ4Ry2yLdx+TkbCUYFCl4XhABkAwomeKbT6zM2Zlg==", + "path": "communitytoolkit.highperformance/8.4.0", + "hashPath": "communitytoolkit.highperformance.8.4.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Analyzers/3.11.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-v/EW3UE8/lbEYHoC2Qq7AR/DnmvpgdtAMndfQNmpuIMx/Mto8L5JnuCfdBYtgvalQOtfNCnxFejxuRrryvUTsg==", + "path": "microsoft.codeanalysis.analyzers/3.11.0", + "hashPath": "microsoft.codeanalysis.analyzers.3.11.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.Common/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-T8nRl4mAUY4mhdYM4U2ra2vP2EL+ol8Yqwo0gwC/V55vmlXq9NxdIkZJynTpTL1uX/jHijJ90AeOEx4lf7OwzQ==", + "path": "microsoft.codeanalysis.common/4.13.0", + "hashPath": "microsoft.codeanalysis.common.4.13.0.nupkg.sha512" + }, + "Microsoft.CodeAnalysis.CSharp/4.13.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-BsH7Vijbj9IL7Fj4k/ysZSVyLGFqr75wmdFGwCKWJvSjnA1xwPaQ3hkB2BQdHOt5CpEYA6Q0I6Oo5sDTDHqHsg==", + "path": "microsoft.codeanalysis.csharp/4.13.0", + "hashPath": "microsoft.codeanalysis.csharp.4.13.0.nupkg.sha512" + }, + "Microsoft.CSharp/4.7.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==", + "path": "microsoft.csharp/4.7.0", + "hashPath": "microsoft.csharp.4.7.0.nupkg.sha512" + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "path": "system.collections.immutable/8.0.0", + "hashPath": "system.collections.immutable.8.0.0.nupkg.sha512" + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "path": "system.reflection.metadata/8.0.0", + "hashPath": "system.reflection.metadata.8.0.0.nupkg.sha512" + }, + "System.Runtime.CompilerServices.Unsafe/6.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-5o/HZxx6RVqYlhKSq8/zronDkALJZUT2Vz0hx43f0gwe8mwlM0y2nYlqdBwLMzr262Bwvpikeb/yEwkAa5PADg==", + "path": "system.runtime.compilerservices.unsafe/6.1.0", + "hashPath": "system.runtime.compilerservices.unsafe.6.1.0.nupkg.sha512" + }, + "StgSharp.Common/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index c2bbcd95..c1b99397 100644 --- a/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs index aaa8c7dd..9033d3b0 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file=".NETCoreApp,Version=v8.0.AssemblyAttributes.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs index c2bbcd95..c1b99397 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json +++ b/StgSharp.Script/obj/x64/Debug/net8.0/StgSharp.Script.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs new file mode 100644 index 00000000..1185283c --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[assembly: System.Reflection.AssemblyProductAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.Script")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// 由 MSBuild WriteCodeFragment 类生成。 + diff --git a/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..e689132e --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.csproj.FileListAbsolute.txt @@ -0,0 +1,16 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Common.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\bin\x64\Release\net8.0\StgSharp.Common.xml +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.AssemblyInfoInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.AssemblyInfo.cs +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.D39FE6B0.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\refint\StgSharp.Script.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\StgSharp.Script.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.Script\obj\x64\Release\net8.0\ref\StgSharp.Script.dll diff --git a/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.Script/obj/x64/Release/net8.0/StgSharp.Script.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json index becfaeac..d7845156 100644 --- a/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json +++ b/StgSharp.TerminalDialogue/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -6,6 +6,7 @@ "version": "8.0.0" }, "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } } diff --git a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs index b130a49b..e2dd534e 100644 --- a/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs +++ b/StgSharp.TerminalDialogue/obj/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs index 38da6c12..e2dd534e 100644 --- a/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs +++ b/StgSharp.TerminalDialogue/obj/x64/Debug/StgSharp.TerminalDialogue.AssemblyInfo.cs @@ -14,7 +14,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c29993fd8497704d2ddeab3e1a3f8bfa5caa8d90")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [assembly: System.Reflection.AssemblyProductAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyTitleAttribute("StgSharp.TerminalDialogue")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt new file mode 100644 index 00000000..5ac650a6 --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.csproj.FileListAbsolute.txt @@ -0,0 +1,21 @@ +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.exe +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.deps.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.runtimeconfig.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\ColorHelper.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Terminal.Gui.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\TestableIO.System.IO.Abstractions.Wrappers.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\build\StgSharpTerminalDialogue\Wcwidth.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.csproj.AssemblyReference.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.GeneratedMSBuildEditorConfig.editorconfig +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.csproj.CoreCompileInputs.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.sourcelink.json +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.7B22D5CB.Up2Date +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\refint\StgSharp.TerminalDialogue.dll +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.pdb +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\StgSharp.TerminalDialogue.genruntimeconfig.cache +D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\内核源代码\StgSharp.TerminalDialogue\obj\x64\Release\ref\StgSharp.TerminalDialogue.dll diff --git a/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json new file mode 100644 index 00000000..f5139c6a --- /dev/null +++ b/StgSharp.TerminalDialogue/obj/x64/Release/StgSharp.TerminalDialogue.sourcelink.json @@ -0,0 +1 @@ +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharpDebug/ExpLinearExpressionTest.cs b/StgSharpDebug/ExpLinearExpressionTest.cs index 18669c70..a7bd02c5 100644 --- a/StgSharpDebug/ExpLinearExpressionTest.cs +++ b/StgSharpDebug/ExpLinearExpressionTest.cs @@ -144,7 +144,6 @@ namespace StgSharp REPEAT a := 1 TO 10; b := 10; END_REPEAT - """; public static void ExpLinearExpressionTest() diff --git a/StgSharpDebug/Program.cs b/StgSharpDebug/Program.cs index 6f75701a..a802caeb 100644 --- a/StgSharpDebug/Program.cs +++ b/StgSharpDebug/Program.cs @@ -1,7 +1,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- // file="Program.cs" -// Project: StgSharp +// Project: World // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // @@ -35,6 +35,7 @@ using StgSharp.Geometries; using StgSharp.Graphics; using StgSharp.Math; +using StgSharp.Model.Step; using StgSharp.MVVM; using StgSharp.MVVM.ViewModel; using StgSharp.Script; @@ -56,9 +57,13 @@ namespace StgSharp internal static unsafe void Main( string[] args ) { - StgSharp.Init(); + StepEntityLabel l1 = new StepEntityLabel( 1 ); + StepEntityLabel l2 = new StepEntityLabel( 1 ); + Console.WriteLine( l1 == l2 ); + + World.Init(); TestStepRead(); - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); return; try { } @@ -66,16 +71,16 @@ namespace StgSharp { Console.WriteLine( ex ); /* - StgSharp.WriteLog($"{ex}", LogType.Error); + World.WriteLog($"{ex}", LogType.Error); if( true ) { } Dialogue.PostError( ex ); /**/ - StgSharp.Terminate( -1 ); + World.Terminate( -1 ); /**/ } finally { - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); } } diff --git a/StgSharpDebug/RenderStream/Partical.cs b/StgSharpDebug/RenderStream/Partical.cs index 051f993a..c9d31f0c 100644 --- a/StgSharpDebug/RenderStream/Partical.cs +++ b/StgSharpDebug/RenderStream/Partical.cs @@ -73,17 +73,9 @@ namespace StgSharp public override bool IsContextSharable => true; - public Rectangle ButtonBounding - { - get; - private set; - } + public Rectangle ButtonBounding { get; private set; } - public TextureProvider ButtonTextureProvider - { - get; - private set; - } + public TextureProvider ButtonTextureProvider { get; private set; } //render a controlling item public void ButtonMain( IEnumerable items ) @@ -96,7 +88,8 @@ namespace StgSharp f_vao.Bind( 0 ); //GL.Assert(true); - foreach( PlainGeometryMesh mesh in items ) { + foreach( PlainGeometryMesh mesh in items ) + { //autoT.SelectTextureAndBind(mesh.TextureImage); f_t.LoadTexture( 0, mesh.TextureImage ); @@ -104,8 +97,7 @@ namespace StgSharp frameMainShader.Use(); //GL.Assert(true); - GL.DrawElements( - GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); + GL.DrawElements( GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero ); } //GL.ClearError(); @@ -133,15 +125,15 @@ namespace StgSharp /**/ GL.TextureImage2d( - Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null ); + 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)); @@ -151,16 +143,15 @@ namespace StgSharp //GL.Assert(false); vbo.Bind( 1 ); - vbo.WriteVectorData( - 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + 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 ); + GL.DrawElementsInstanced( GeometryType.TRIANGLES, 6, TypeCode.UInt32, IntPtr.Zero, + 100 ); //Console.WriteLine(TimePassed); //GL.Assert(true); @@ -205,16 +196,14 @@ namespace StgSharp } public void RenderButton( - ButtonStatus status, - float statusBegin, - in TextureProvider provider ) + ButtonStatus status, + float statusBegin, + in TextureProvider provider ) { provider.UpdateFromImage( i ); } - internal static Vec3 DefaultRotation( - TimeSpanProvider provider, - out float rotation ) + internal static Vec3 DefaultRotation( TimeSpanProvider provider, out float rotation ) { rotation = provider.SpanLengthLowPrecession; float angle = provider.CurrentSecond * 2; @@ -230,15 +219,16 @@ namespace StgSharp //GL.Assert(true); buffer = new PlainInstancingBuffer(); - for( int i = 0; i < 10; i++ ) { + for( int i = 0; i < 10; i++ ) + { float ai = Scaler.Abs( i - 5.0f ); - for( int t = 0; t < 10; t++ ) { + 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 ); + ( ( ( -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( @@ -287,24 +277,18 @@ namespace StgSharp 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 ); + vao.SetVertexAttribute( 0, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vbo.WriteVectorData( - 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vbo.WriteVectorData( 1, buffer.CoordAndRotationSpan, BufferUsage.StreamDraw ); + vao.SetVertexAttribute( 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); vao.SetVertexAttribute( - 1, 3, TypeCode.Single, false, 4 * sizeof( float ), 0 ); - vao.SetVertexAttribute( - 2, 1, TypeCode.Single, false, 4 * sizeof( float ), - 3 * sizeof( float ) ); + 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 ); + vbo.WriteScalerData( 2, buffer.ScalingSpan, BufferUsage.StaticDraw ); + vao.SetVertexAttribute( 3, 1, TypeCode.Single, false, sizeof( float ), 0 ); GL.VertexAttributeDivisor( 3, 1 ); @@ -326,33 +310,27 @@ namespace StgSharp t = CreateTexture( 1 ); t.Bind2D( 0 ); GL.TextureImage2d( - Texture2DTarget.Texture2D, 0, ImageChannel.WithAlphaChannel, - ( uint )Width, ( uint )Height, ImageChannel.WithAlphaChannel, - PixelChannelLayout.Byte, null! ); + 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 ); + t.Set2dFilterProperty( 0, TextureFilter.Linear, TextureFilter.Linear ); //GL.Assert(true); GL.FrameBufferTexture2d( - FrameBufferTarget.All, glAttachment.Color( 0 ), - Texture2DTarget.Texture2D, t[ 0 ], 0 ); + FrameBufferTarget.All, glAttachment.Color( 0 ), Texture2DTarget.Texture2D, t[ 0 ], + 0 ); - GL.SetRenderBufferStorage( - RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); - GL.CombineFrameBufferRenderBuffer( - FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); + GL.SetRenderBufferStorage( RenderBufferInternalFormat.Depth24_Stencil8, this.Size ); + GL.CombineFrameBufferRenderBuffer( FrameBufferAttachment.DepthAndStencil, rbo[ 0 ] ); - Console.WriteLine( - GL.CheckFrameBufferStatus( FrameBufferTarget.All ) ); + 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 ); + i = Image.FromMemory( this.Size, ImageChannel.WithAlphaChannel, imageStream ); time = s.GetUniform( "time" ); @@ -363,12 +341,10 @@ namespace StgSharp (1f, 0f), (0f, 0f) }; - ButtonBounding = new Rectangle( - -0.9f, 0.9f, 0.9f, 0.9f, 0.9f, -0.9f, -0.9f, -0.9f ); + 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 ); + ButtonTextureProvider = new TextureProvider( i, buttonTextureCoordArray ); f_vao = CreateVertexArray( 1 ); f_vbo = CreateVertexBuffer( 2 ); @@ -378,35 +354,29 @@ namespace StgSharp f_vao.Bind( 0 ); f_ebo.Bind( 0 ); - f_ebo.SetValue( - 0, ButtonBounding.VertexIndices, BufferUsage.StaticDraw ); + 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 ); + 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 ); + 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 ); + 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 ); + f_t.Set2dFilterProperty( 0, TextureFilter.Nearest, TextureFilter.Nearest ); //GL.Assert(true); f_t.ActivateAs( TextureUnit.Unit1 ); diff --git a/StgSharpDebug/SimdDemo.cs b/StgSharpDebug/SimdDemo.cs new file mode 100644 index 00000000..5762fd1e --- /dev/null +++ b/StgSharpDebug/SimdDemo.cs @@ -0,0 +1,15 @@ +using StgSharp.Math; + +namespace StgSharp +{ + public static class SimdDemo + { + public static void TestMethod() + { + Matrix44 m1 = new Matrix44(); + Matrix44 m2 = new Matrix44(); + var m3 = m1 * m2; + Console.WriteLine(m3[0,0]); + } + } +} \ No newline at end of file diff --git a/StgSharpDebug/StepReadingTest.cs b/StgSharpDebug/StepReadingTest.cs index 277726ef..74cd9c99 100644 --- a/StgSharpDebug/StepReadingTest.cs +++ b/StgSharpDebug/StepReadingTest.cs @@ -29,6 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Model.Step; +using StgSharp.PipeLine; using StgSharp.Script.Express; using System; @@ -50,9 +51,23 @@ namespace StgSharp private static void TestStepRead() { ExpressCompile.InitCompile(); - if( StepReader.FromFile( stepFile[ 0 ], out StepReader reader ) ) + if( StepReader.FromFile( stepFile[ 1 ], out StepReader reader ) ) { StepModel model = reader.ReadToModelSingleThread(); + PipeLineRunner.SetMaxTaskCount( 1 ); + string[] info = model.ShowStructure( int.MaxValue ); + FileStream fs = File.Open( "D:\\struct.txt", FileMode.Create, + FileAccess.ReadWrite ); + StreamWriter sw = new StreamWriter( fs ); + foreach( string line in info ) + { + sw.WriteLine( line ); + Console.WriteLine( line ); + } + sw.Dispose(); + fs.Dispose(); + + //model.InitEntity(); reader.Dispose(); } } diff --git a/StgSharpDebug/TestFileRead.cs b/StgSharpDebug/TestFileRead.cs index 6ba42af4..bc9d24a0 100644 --- a/StgSharpDebug/TestFileRead.cs +++ b/StgSharpDebug/TestFileRead.cs @@ -48,8 +48,7 @@ namespace StgSharp ExpSchemaSource schemaSource = new ExpSchemaSource(); schemaSource.ReadSchema( reader ); - ExpSchema schema = schemaSource.Compile( - ExpressCompileOption.Translate ); + ExpSchema schema = schemaSource.Compile( ExpressCompileOption.Translate ); } } diff --git a/StgSharpDebug/TestRender.cs b/StgSharpDebug/TestRender.cs index cc0f1d94..9c36f368 100644 --- a/StgSharpDebug/TestRender.cs +++ b/StgSharpDebug/TestRender.cs @@ -45,8 +45,8 @@ namespace StgSharp public static void TestRender() { - StgSharp.InitGL( 4, 6 ); - StgSharp.GlobalSetting.VSyncActivated = false; + World.InitGL( 4, 6 ); + World.GlobalSetting.VSyncActivated = false; ViewPort vp = new ViewPort( 800, 600, "Hello StgSharp!", IntPtr.Zero ); @@ -57,7 +57,7 @@ namespace StgSharp mainModel.UseViewModel( "MainView" ); - StgSharp.Terminate( 0 ); + World.Terminate( 0 ); } } diff --git a/StgSharpDebug/View/Control.cs b/StgSharpDebug/View/Control.cs index c5b8cb66..2347ee78 100644 --- a/StgSharpDebug/View/Control.cs +++ b/StgSharpDebug/View/Control.cs @@ -29,7 +29,7 @@ //----------------------------------------------------------------------- //----------------------------------------------------------------------- using StgSharp.Controlling.UsrActivity; -using StgSharp.MVVM.View; +using StgSharp.MVVM; using System; using System.Collections.Generic; @@ -48,7 +48,7 @@ namespace StgSharp public Control( ViewMain view ) : base( view ) { } public override void CustomizedInitialize( - Func keyRegister ) { } + Func keyRegister ) { } public override bool ValidateInitializing() { diff --git a/StgSharpDebug/View/Design.cs b/StgSharpDebug/View/Design.cs index b174c17e..0ae04fbc 100644 --- a/StgSharpDebug/View/Design.cs +++ b/StgSharpDebug/View/Design.cs @@ -48,17 +48,9 @@ namespace StgSharp public partial class ViewMain { - internal DemoButtonGroup Group - { - get; - set; - } + internal DemoButtonGroup Group { get; set; } - internal TriggerButton OnlyButton - { - get; - set; - } + internal TriggerButton OnlyButton { get; set; } internal class Design : ViewDesigner { @@ -74,8 +66,7 @@ namespace StgSharp new KeyTrigger( KeyboardKey.Down, KeyStatus.PRESS ), new KeyTrigger( KeyboardKey.Enter, KeyStatus.PRESS ) ); Binding.OnlyButton = CreateKeyboardButton( - Binding.Stream.ButtonBounding, - Binding.Stream.ButtonTextureProvider, true ); + Binding.Stream.ButtonBounding, Binding.Stream.ButtonTextureProvider, true ); Binding.OnlyButton.RenderButtonTexture += Binding.Stream.RenderButton; } diff --git a/StgSharpDebug/View/NewRender.cs b/StgSharpDebug/View/NewRender.cs index 63346a2e..8a23ac19 100644 --- a/StgSharpDebug/View/NewRender.cs +++ b/StgSharpDebug/View/NewRender.cs @@ -44,11 +44,7 @@ namespace StgSharp public partial class ViewMain { - public ParticleRenderStream Stream - { - get; - set; - } + public ParticleRenderStream Stream { get; set; } private class NewRender : ViewRender { diff --git a/StgSharpDebug/View/ViewMain.cs b/StgSharpDebug/View/ViewMain.cs index b057a8b9..151413dd 100644 --- a/StgSharpDebug/View/ViewMain.cs +++ b/StgSharpDebug/View/ViewMain.cs @@ -30,7 +30,6 @@ //----------------------------------------------------------------------- using StgSharp.Graphics; using StgSharp.MVVM; -using StgSharp.MVVM.View; using StgSharp.MVVM.ViewModel; using System; @@ -53,8 +52,7 @@ namespace StgSharp _databindingIndexMap = new Dictionary(); } - public override void CustomizedInitialize( - [NotNull]ViewModelBase viewModelBinding ) + public override void CustomizedInitialize( [NotNull]ViewModelBase viewModelBinding ) { Designer = new Design( this ); Responder = new Control( this ); @@ -65,21 +63,21 @@ namespace StgSharp Responder.Initialize( viewModelBinding.MethodLookup ); } - public override bool TryGetObjectReference( - string name, - out DataBindingEntry entry ) + public override bool TryGetObjectReference( string name, out DataBindingEntry entry ) { if( _databindingIndexMap.TryGetValue( name, out entry ) ) { return true; } - try { + try + { entry = name switch { _ => default( DataBindingEntry ), }; return !entry.ExactEqual( default( DataBindingEntry ) ); } - catch( Exception ) { + catch( Exception ) + { entry = default( DataBindingEntry ); return false; } diff --git a/StgSharpDebug/ViewModelMain.cs b/StgSharpDebug/ViewModelMain.cs index 1b321862..bf04a5ca 100644 --- a/StgSharpDebug/ViewModelMain.cs +++ b/StgSharpDebug/ViewModelMain.cs @@ -49,15 +49,12 @@ namespace StgSharp public ViewModelMain( ViewPort vp ) : base( vp, 60 ) { - dataBindingEntryIndexMap = new Dictionary( - ); + dataBindingEntryIndexMap = new Dictionary(); } public override void CustomizeInitialize() { } - public override bool TryGetObjectReference( - string name, - out DataBindingEntry entry ) + public override bool TryGetObjectReference( string name, out DataBindingEntry entry ) { if( dataBindingEntryIndexMap.TryGetValue( name, out entry ) ) { return true; diff --git a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs index 2596b8a1..8de793fe 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -14,7 +14,7 @@ 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+a6411e2f25010961d278c5bcb4a929e21b176bba")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] [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/net8.0/StgSharpDebug.sourcelink.json b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json index 6fa307cc..f5139c6a 100644 --- a/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json +++ b/StgSharpDebug/obj/x64/Debug/net8.0/StgSharpDebug.sourcelink.json @@ -1 +1 @@ -{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/a6411e2f25010961d278c5bcb4a929e21b176bba/*"}} \ No newline at end of file +{"documents":{"D:\\NitloadIndustry\\研究项目\\1-Flagship\\TH2020\\ProjectFile\\内核源代码\\*":"https://raw.githubusercontent.com/Nitload-NSI/CCD_Github/74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba/*"}} \ No newline at end of file diff --git a/StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs b/StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs new file mode 100644 index 00000000..2217181c --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net8.0/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")] diff --git a/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs new file mode 100644 index 00000000..01e77e6a --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.AssemblyInfo.cs @@ -0,0 +1,23 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("StgSharpDebug")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+74c01effe4cabbc9d0e2e87b0d295bb29d7c62ba")] +[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/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs new file mode 100644 index 00000000..8578f3d0 --- /dev/null +++ b/StgSharpDebug/obj/x64/Release/net8.0/StgSharpDebug.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/StgSharpDevelop.sln b/StgSharpDevelop.sln index 0d7be672..28c58083 100644 --- a/StgSharpDevelop.sln +++ b/StgSharpDevelop.sln @@ -26,12 +26,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.TerminalDialogue", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Script", "StgSharp.Script\StgSharp.Script.csproj", "{5B51F5EA-138C-46B5-B36F-1D389968B6CF}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Generator", "StgSharp.Generator\StgSharp.Generator.csproj", "{9A678884-081A-4E28-8439-B08F4BC05791}" - ProjectSection(ProjectDependencies) = postProject - {20CBFF26-6746-402E-992C-7B643E9423EB} = {20CBFF26-6746-402E-992C-7B643E9423EB} - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} = {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF} - EndProjectSection -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StgSharp.Model", "StgSharp.Model\StgSharp.Model.csproj", "{D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}" EndProject Global @@ -81,14 +75,6 @@ Global {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.Build.0 = Release|Any CPU {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|x64 - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.ActiveCfg = Debug|x64 - {9A678884-081A-4E28-8439-B08F4BC05791}.Debug|x64.Build.0 = Debug|x64 - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|Any CPU.Build.0 = Release|Any CPU - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.ActiveCfg = Release|x64 - {9A678884-081A-4E28-8439-B08F4BC05791}.Release|x64.Build.0 = Release|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.Build.0 = Debug|Any CPU {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.ActiveCfg = Debug|x64 diff --git a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json index becfaeac..d7845156 100644 --- a/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json +++ b/build/StgSharpTerminalDialogue/StgSharp.TerminalDialogue.runtimeconfig.json @@ -6,6 +6,7 @@ "version": "8.0.0" }, "configProperties": { + "System.Reflection.Metadata.MetadataUpdater.IsSupported": false, "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false } }