├── .gitattributes ├── .gitignore ├── Ab4d.SharpEngine.Samples.Android.Application.sln ├── Ab4d.SharpEngine.Samples.Android.Application ├── Ab4d.SharpEngine.Samples.Android.Application.csproj ├── AndroidCameraController.cs ├── AndroidManifest.xml ├── CustomScaleListener.cs ├── MainActivity.cs ├── Resources │ ├── AboutResources.txt │ ├── layout │ │ └── activity_main.xml │ ├── lib │ │ └── Vulkan-validation-layers.txt │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ └── values │ │ ├── ic_launcher_background.xml │ │ └── strings.xml ├── SharpEngineSceneView.cs ├── TestScenes │ └── AllObjectsTestScene.cs └── Utilities │ ├── AndroidBitmapIO.cs │ ├── AndroidTextureLoader.cs │ └── SkiaSharpBitmapIO.cs ├── Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.sln ├── Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform ├── .gitignore ├── Android │ ├── AvaloniaUI.CrossPlatform.Android.csproj │ ├── Icon.png │ ├── MainActivity.cs │ ├── Properties │ │ └── AndroidManifest.xml │ └── Resources │ │ ├── AboutResources.txt │ │ ├── drawable-night-v31 │ │ └── avalonia_anim.xml │ │ ├── drawable-v31 │ │ └── avalonia_anim.xml │ │ ├── drawable │ │ └── splash_screen.xml │ │ ├── values-night │ │ └── colors.xml │ │ ├── values-v31 │ │ └── styles.xml │ │ └── values │ │ ├── colors.xml │ │ └── styles.xml ├── Desktop │ ├── AvaloniaUI.CrossPlatform.Desktop.csproj │ ├── Program.cs │ └── app.manifest ├── Directory.Build.props ├── Shared │ ├── App.axaml │ ├── App.axaml.cs │ ├── Assets │ │ └── avalonia-logo.ico │ ├── AvaloniaUI.CrossPlatform.Shared.csproj │ ├── GesturesCameraController.cs │ ├── ViewLocator.cs │ ├── ViewModels │ │ ├── MainViewModel.cs │ │ └── ViewModelBase.cs │ └── Views │ │ ├── MainView.axaml │ │ ├── MainView.axaml.cs │ │ ├── MainWindow.axaml │ │ └── MainWindow.axaml.cs ├── iOS │ ├── AppDelegate.cs │ ├── AvaloniaUI.CrossPlatform.iOS.csproj │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── PrivacyInfo.xcprivacy │ └── Resources │ │ └── LaunchScreen.xib └── readme.md ├── Ab4d.SharpEngine.Samples.AvaloniaUI.VulkanBackend.sln ├── Ab4d.SharpEngine.Samples.AvaloniaUI.sln ├── Ab4d.SharpEngine.Samples.AvaloniaUI ├── Ab4d.SharpEngine.Samples.AvaloniaUI.VulkanBackend.csproj ├── Ab4d.SharpEngine.Samples.AvaloniaUI.csproj ├── Advanced │ ├── AvaloniaMultiTouchSample.xaml │ ├── AvaloniaMultiTouchSample.xaml.cs │ ├── MultipleSceneViewsSample.xaml │ └── MultipleSceneViewsSample.xaml.cs ├── AndroidManifest.xml ├── App.axaml ├── App.axaml.cs ├── CameraControllers │ ├── PointerCameraControllerSample.xaml │ └── PointerCameraControllerSample.xaml.cs ├── Cameras │ └── AvaloniaPoint3DTo2DSample.cs ├── Common │ ├── AvaloniaMarkdownTextCreator.cs │ ├── AvaloniaSamplesContext.cs │ ├── CommonTitleUserControl.xaml │ ├── CommonTitleUserControl.xaml.cs │ ├── DragAndDropHelper.cs │ ├── GesturesCameraController.cs │ ├── MessageBox.xaml │ └── MessageBox.xaml.cs ├── CommonAvaloniaSampleUserControl.axaml ├── CommonAvaloniaSampleUserControl.axaml.cs ├── Diagnostics │ ├── DiagnosticsWindow.xaml │ ├── DiagnosticsWindow.xaml.cs │ ├── LogMessagesWindow.xaml │ └── LogMessagesWindow.xaml.cs ├── GlobalSharpEngineSettings.cs ├── HitTesting │ ├── AvaloniaManualInputEventsSample.cs │ └── AvaloniaRectangularSelectionSample.cs ├── Program.cs ├── QuickStart │ ├── AntiAliasingSample.xaml │ ├── AntiAliasingSample.xaml.cs │ ├── SharpEngineSceneViewInCode.xaml │ ├── SharpEngineSceneViewInCode.xaml.cs │ ├── SharpEngineSceneViewInXaml.xaml │ └── SharpEngineSceneViewInXaml.xaml.cs ├── Resources │ ├── sharp-engine-logo.ico │ └── yellow-light-buld-icon.png ├── SamplesWindow.xaml ├── SamplesWindow.xaml.cs ├── Settings │ ├── SettingsWindow.xaml │ └── SettingsWindow.xaml.cs ├── TestVulkanInteropWindow.xaml ├── TestVulkanInteropWindow.xaml.cs ├── Titles │ ├── IntroductionPage.xaml │ ├── IntroductionPage.xaml.cs │ └── QuickStartTitle.md └── UIProvider │ ├── AvaloniaUIElement.cs │ ├── AvaloniaUIPanel.cs │ ├── AvaloniaUIProvider.cs │ ├── ButtonUIElement.cs │ ├── CheckBoxUIElement.cs │ ├── ComboBoxUIElement.cs │ ├── KeyValueLabelUIElement.cs │ ├── LabelUIElement.cs │ ├── MarkdownUIElement.cs │ ├── RadioButtonsUIElement.cs │ ├── SliderUIElement.cs │ ├── StackPanelUIElement.cs │ └── TextBoxUIElement.cs ├── Ab4d.SharpEngine.Samples.Common ├── Ab4d.SharpEngine.Samples.Common.csproj ├── Advanced │ ├── AsyncUploadSample.cs │ ├── BackgroundAndOverlayRenderingSample.cs │ ├── ComplexSceneSample.cs │ ├── CustomFogEffectSample.cs │ ├── CustomOverlayPanelSample.cs │ ├── FogEffect.cs │ ├── FogEffectTechnique.cs │ ├── FogMaterial.cs │ ├── MeshOutlineSample.cs │ ├── RenderingLayerCustomCameraSample.cs │ └── TrianglesSortingSample.cs ├── AdvancedModels │ ├── AdvancedBooleanOperationsSample.cs │ ├── AdvancedHeightMapSample.cs │ ├── BitmapTextSample.cs │ ├── BooleanMeshSample.cs │ ├── BooleanOperationsSample.cs │ ├── ExtrudeAlongPathSample.cs │ ├── InstancedArrowsSample.cs │ ├── InstancedMeshNodeSample.cs │ ├── LatheSample.cs │ ├── MultiMaterialModelNodeSample.cs │ ├── PixelsRenderingSample.cs │ ├── PlanarShadowsSample.cs │ ├── SimpleHeightMapSample.cs │ ├── SkyboxSample.cs │ ├── SliceModelsSample.cs │ ├── SpritesSample.cs │ ├── StreamlinesSample.cs │ ├── TriangulatedExtrudedShapeSample.cs │ ├── TubePathsSample.cs │ ├── TubesSample.cs │ └── VectorTextSample.cs ├── Animations │ ├── AnimationEasingSample.cs │ ├── CameraAnimationSample.cs │ ├── GlobalAnimationPropertiesSample.cs │ ├── MaterialAnimationSample.cs │ ├── SceneNodeAnimationSample.cs │ ├── SharpEngineLogoAnimation.cs │ ├── TransformationAnimationSample.cs │ └── TransformationAnimationSample2.cs ├── CameraControllers │ ├── RotateAroundCustomPointSample.cs │ └── ZoomToCustomPointSample.cs ├── Cameras │ ├── CameraAxisPanelSample.cs │ ├── CustomCoordinateSystemSample.cs │ ├── FirstPersonCameraSample.cs │ ├── FitIntoViewSample.cs │ ├── FreeCameraSample.cs │ ├── Point3DTo2DSample.cs │ └── TargetPositionCameraSample.cs ├── CommonSample.cs ├── Diagnostics │ └── CommonDiagnostics.cs ├── HitTesting │ ├── HitTestingSample.cs │ ├── HitTestingWithIdBitmapSample.cs │ ├── InputEventsManagerSample.cs │ ├── InputEventsManagerWithSurfaceSample.cs │ ├── LineSelectionSample.cs │ ├── ManualInputEventsSample.cs │ ├── ModelMoverSample.cs │ ├── ModelRotatorSample.cs │ ├── ModelScalarSample.cs │ ├── RayPlaneHitTestingSample.cs │ └── RectangularSelectionSample.cs ├── ICommonSampleUIElement.cs ├── ICommonSampleUIPanel.cs ├── ICommonSampleUIProvider.cs ├── ICommonSamplesContext.cs ├── Importers │ ├── AssimpImporterSample.cs │ ├── CadImporterInfo.md │ ├── GltfImporterExporterSample.cs │ ├── PointCloudImporterSample.cs │ └── ReaderObjSample.cs ├── Lights │ └── LightsSample.cs ├── Lines │ ├── CurveLineSample.cs │ ├── DepthBiasSample.cs │ ├── EdgeLinesSample.cs │ ├── LineCapsSample.cs │ ├── LinesPerformanceSample.cs │ ├── LinesSample.cs │ ├── MiterLimitSample.cs │ ├── SpecialLineRenderingSample.cs │ ├── TubeLinesSample.cs │ ├── WireGridNodeSample.cs │ └── WireframeRenderingSample.cs ├── Materials │ ├── HeatmapRenderingSample.cs │ ├── MaterialsSample.cs │ └── SpecularMaterialSample.cs ├── Resources │ ├── BitmapFonts │ │ ├── arial_128.bmfc │ │ ├── arial_128.fnt │ │ ├── arial_128.text.fnt │ │ ├── arial_128_0.png │ │ ├── arial_black_128.bmfc │ │ ├── arial_black_128.fnt │ │ ├── arial_black_128.text.fnt │ │ ├── arial_black_128_0.png │ │ ├── arial_black_with_outline_128.bmfc │ │ ├── arial_black_with_outline_128.fnt │ │ ├── arial_black_with_outline_128.text.fnt │ │ ├── arial_black_with_outline_128_0.png │ │ ├── readme.txt │ │ ├── roboto font LICENSE.txt │ │ ├── roboto_128.bmfc │ │ ├── roboto_128.fnt │ │ ├── roboto_128.text.fnt │ │ ├── roboto_128_0.png │ │ ├── roboto_64.bmfc │ │ ├── roboto_64.fnt │ │ ├── roboto_64_0.png │ │ ├── roboto_black_128.bmfc │ │ ├── roboto_black_128.fnt │ │ ├── roboto_black_128.text.fnt │ │ ├── roboto_black_128_0.png │ │ ├── roboto_black_with_outline_128.bmfc │ │ ├── roboto_black_with_outline_128.fnt │ │ ├── roboto_black_with_outline_128.text.fnt │ │ └── roboto_black_with_outline_128_0.png │ ├── CadImporter-for-SharpEngine-1.png │ ├── CadImporter-for-SharpEngine-2.png │ ├── Diagnostics-gray.png │ ├── Diagnostics.png │ ├── HeightMaps │ │ ├── europe.png │ │ ├── europe_height.png │ │ ├── readme.txt │ │ ├── simpleHeightMap.png │ │ ├── vulkan-heightmap-cropped.png │ │ └── vulkan-heightmap.png │ ├── Models │ │ ├── Teapot.obj │ │ ├── dragon_vrip_res3.obj │ │ ├── dragon_vrip_res3.obj.mtl │ │ ├── dragon_vrip_res3_readme.txt │ │ ├── duck.dae │ │ ├── duckCM.png │ │ ├── house with trees.mtl │ │ ├── house with trees.obj │ │ ├── planetary-gear source.txt │ │ ├── planetary-gear.FBX │ │ ├── robotarm.mtl │ │ ├── robotarm.obj │ │ ├── teapot-hires.obj │ │ ├── voyager readme.txt │ │ └── voyager.gltf │ ├── PointClouds │ │ ├── 14 Ladybrook Road 10 - cropped.ply │ │ └── readme.txt │ ├── Settings.png │ ├── Shaders │ │ ├── CompileShaders.bat │ │ ├── CompileShaders.sh │ │ ├── FogShader.frag.glsl │ │ ├── FogShader.vert.glsl │ │ ├── spv │ │ │ ├── FogShader.frag.spv │ │ │ └── FogShader.vert.spv │ │ └── txt │ │ │ ├── FogShader.frag.json │ │ │ ├── FogShader.frag.resources.txt │ │ │ ├── FogShader.frag.txt │ │ │ ├── FogShader.vert.json │ │ │ ├── FogShader.vert.resources.txt │ │ │ └── FogShader.vert.txt │ ├── SkyboxTextures │ │ ├── CloudyLightRaysBack512.png │ │ ├── CloudyLightRaysDown512.png │ │ ├── CloudyLightRaysFront512.png │ │ ├── CloudyLightRaysLeft512.png │ │ ├── CloudyLightRaysRight512.png │ │ ├── CloudyLightRaysUp512.png │ │ └── readme.txt │ ├── Textures │ │ ├── 10x10-texture.png │ │ ├── TreeTexture.png │ │ ├── sharp-engine-logo.png │ │ ├── uvchecker.png │ │ └── uvchecker2.jpg │ ├── TrueTypeFonts │ │ ├── LICENSE.txt │ │ ├── Roboto-Black.ttf │ │ └── Roboto-Regular.ttf │ ├── ab4d-logo.png │ ├── new_icon.png │ ├── photo_icon.png │ ├── streamlines.csv │ ├── updated_icon.png │ └── warningIcon.png ├── Samples.xml ├── StandardModels │ ├── ArrowModelNodeSample.cs │ ├── BoxModelNodeSample.cs │ ├── CircleModelNodeSample.cs │ ├── ConeModelNodeSample.cs │ ├── CylinderModelNodeSample.cs │ ├── MeshModelNodeSample.cs │ ├── PlaneModelNodeSample.cs │ ├── PositionAndScaleSample.cs │ ├── PyramidModelNodeSample.cs │ ├── SphereModelNodeSample.cs │ ├── StandardModelsSampleBase.cs │ ├── TorusKnotModelNodeSample.cs │ ├── TransformationsSample.cs │ └── TrapezoidModelNodeSample.cs ├── TestScenes.cs ├── Titles │ ├── AdvancedModelsTitle.md │ ├── AdvancedTitle.md │ ├── AnimationsTitle.md │ ├── CamerasTitle.md │ ├── HitTesting.md │ ├── ImportersTitle.md │ ├── LightsTitle.md │ ├── LinesTitle.md │ ├── MaterialsTitle.md │ ├── PointerCameraControllerTitle.md │ └── StandardModelsTitle.md └── Utils │ ├── CsvDataReader.cs │ ├── MarkdownTextCreator.cs │ ├── PlyPointCloudReader.cs │ └── PlyPointCloudWriter.cs ├── Ab4d.SharpEngine.Samples.ImGui.sln ├── Ab4d.SharpEngine.Samples.ImGui ├── Ab4d.SharpEngine.Samples.ImGui.csproj ├── ImGuiRenderingStep.cs └── Program.cs ├── Ab4d.SharpEngine.Samples.LinuxFramebuffer.sln ├── Ab4d.SharpEngine.Samples.LinuxFramebuffer ├── Ab4d.SharpEngine.Samples.LinuxFramebuffer.csproj ├── DrmFramebufferOutput.cs ├── FbDevOutput.cs ├── InputDevice.cs ├── NativeDrm.cs ├── NativeFbDev.cs ├── NativeLibInput.cs ├── NativeLibc.cs ├── OutputDevice.cs ├── Program.cs └── README.md ├── Ab4d.SharpEngine.Samples.Maui.sln ├── Ab4d.SharpEngine.Samples.Maui ├── Ab4d.SharpEngine.Samples.Maui.csproj ├── AndroidManifest.xml ├── App.xaml ├── App.xaml.cs ├── AppShell.xaml ├── AppShell.xaml.cs ├── IPlatformInputHelper.cs ├── MainPage.xaml ├── MainPage.xaml.cs ├── MauiCameraController.cs ├── MauiProgram.cs ├── Platforms │ ├── Android │ │ ├── AndroidManifest.xml │ │ ├── MainActivity.cs │ │ ├── MainApplication.cs │ │ ├── PlatformInputHelper.cs │ │ └── Resources │ │ │ └── values │ │ │ └── colors.xml │ ├── MacCatalyst │ │ ├── AppDelegate.cs │ │ ├── Entitlements.Debug.plist │ │ ├── Entitlements.Release.plist │ │ ├── Info.plist │ │ ├── PlatformInputHelper.cs │ │ └── Program.cs │ ├── Windows │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Package.appxmanifest │ │ ├── PlatformInputHelper.cs │ │ └── app.manifest │ └── iOS │ │ ├── AppDelegate.cs │ │ ├── Info.plist │ │ ├── PlatformInputHelper.cs │ │ ├── PrivacyInfo.xcprivacy │ │ └── Program.cs ├── Properties │ └── launchSettings.json ├── Resources │ ├── AppIcon │ │ ├── appicon.svg │ │ └── appiconfg.svg │ ├── Fonts │ │ ├── FluentUI.cs │ │ ├── OpenSans-Regular.ttf │ │ └── OpenSans-Semibold.ttf │ ├── Images │ │ └── dotnet_bot.png │ ├── Raw │ │ └── AboutAssets.txt │ ├── Splash │ │ └── splash.svg │ └── Styles │ │ ├── Colors.xaml │ │ └── Styles.xaml ├── SharpEngineSceneView.cs └── readme.md ├── Ab4d.SharpEngine.Samples.SilkNet.Glfw.sln ├── Ab4d.SharpEngine.Samples.SilkNet.Sdl.sln ├── Ab4d.SharpEngine.Samples.SilkNet ├── Ab4d.SharpEngine.Samples.SilkNet.Glfw.csproj ├── Ab4d.SharpEngine.Samples.SilkNet.Sdl.csproj ├── Program.cs ├── SharpEngineSamplesRunner.cs ├── SilkWindowingUI │ ├── SilkView.cs │ └── SilkWindow.cs ├── StandardPresentation │ ├── IPresentationControl.cs │ ├── MouseButtonEventArgs.cs │ ├── MouseEventArgs.cs │ ├── MouseMoveEventArgs.cs │ ├── MouseWheelEventArgs.cs │ └── SizeChangeEventArgs.cs ├── TestScenes │ └── AllObjectsTestScene.cs └── Utilities │ ├── ImageMagickBitmapIO.cs │ ├── SkiaSharpBitmapIO.cs │ ├── SystemDrawingBitmapIO.cs │ └── UnsupportedBitmapIo.cs ├── Ab4d.SharpEngine.Samples.UnoPlatform.txt ├── Ab4d.SharpEngine.Samples.UnoPlatform ├── Ab4d.SharpEngine.Samples.UnoPlatform.sln ├── Ab4d.SharpEngine.Samples.UnoPlatform │ ├── Ab4d.SharpEngine.Samples.UnoPlatform.csproj │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── Icons │ │ │ ├── icon.svg │ │ │ └── icon_foreground.svg │ │ ├── SharedAssets.md │ │ └── Splash │ │ │ └── splash_screen.svg │ ├── ColorExtensions.cs │ ├── GlobalUsings.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Platforms │ │ └── Desktop │ │ │ └── Program.cs │ ├── PointerCameraController.cs │ ├── Properties │ │ └── launchSettings.json │ ├── SharpEngineSceneView.skia.cs │ ├── Strings │ │ └── en │ │ │ └── Resources.resw │ └── app.manifest ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props └── global.json ├── Ab4d.SharpEngine.Samples.WinForms.sln ├── Ab4d.SharpEngine.Samples.WinForms ├── Ab4d.SharpEngine.Samples.WinForms.csproj ├── CameraControllers │ ├── PointerCameraControllerSample.Designer.cs │ ├── PointerCameraControllerSample.cs │ └── PointerCameraControllerSample.resx ├── Cameras │ └── WinFormsPoint3DTo2DSample.cs ├── Common │ ├── DragAndDropHelper.cs │ └── WinFormsSamplesContext.cs ├── CommonWinFormsSampleUserControl.cs ├── HitTesting │ └── WinFormsManualInputEventsSample.cs ├── Program.cs ├── Properties │ ├── Resources.Designer.cs │ └── Resources.resx ├── QuickStart │ ├── SharpEngineSceneViewInCode.Designer.cs │ ├── SharpEngineSceneViewInCode.cs │ └── SharpEngineSceneViewInCode.resx ├── RenderFormSample.cs ├── Resources │ ├── ab4d-logo.png │ ├── new_icon.png │ ├── sharp-engine-logo.ico │ ├── updated_icon.png │ └── warningIcon.png ├── SamplesForm.Designer.cs ├── SamplesForm.cs ├── SamplesForm.resx ├── Titles │ ├── IntroductionPage.cs │ ├── QuickStartTitle.md │ └── RenderFormSample.md └── UIProvider │ ├── ButtonUIElement.cs │ ├── CheckBoxUIElement.cs │ ├── ComboBoxUIElement.cs │ ├── KeyValueLabelUIElement.cs │ ├── LabelUIElement.cs │ ├── RadioButtonsUIElement.cs │ ├── SliderUIElement.cs │ ├── StackPanelUIElement.cs │ ├── TextBoxUIElement.cs │ ├── WinFormsUIElement.cs │ ├── WinFormsUIPanel.cs │ └── WinFormsUIProvider.cs ├── Ab4d.SharpEngine.Samples.WinUI.sln ├── Ab4d.SharpEngine.Samples.WinUI ├── Ab4d.SharpEngine.Samples.WinUI.csproj ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── Diagnostics-gray.png │ ├── Diagnostics.png │ ├── LockScreenLogo.scale-200.png │ ├── Settings.png │ ├── SplashScreen.scale-200.png │ ├── Square150x150Logo.scale-200.png │ ├── Square44x44Logo.scale-200.png │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ ├── StoreLogo.png │ ├── Wide310x150Logo.scale-200.png │ ├── ab4d-logo.png │ ├── new_icon.png │ ├── photo_icon.png │ ├── sharp-engine-logo.ico │ ├── updated_icon.png │ └── warningIcon.png ├── CameraControllers │ ├── PointerCameraControllerSample.xaml │ └── PointerCameraControllerSample.xaml.cs ├── Cameras │ └── WinUIPoint3DTo2DSample.cs ├── Common │ ├── CommonTitleUserControl.xaml │ ├── CommonTitleUserControl.xaml.cs │ ├── DragAndDropHelper.cs │ ├── WinUIMarkdownTextCreator.cs │ ├── WinUISamplesContext.cs │ └── WinUiUtils.cs ├── CommonWinUISampleUserControl.xaml ├── CommonWinUISampleUserControl.xaml.cs ├── Diagnostics │ ├── DiagnosticsWindow.xaml │ ├── DiagnosticsWindow.xaml.cs │ ├── LogMessagesWindow.xaml │ └── LogMessagesWindow.xaml.cs ├── GlobalSharpEngineSettings.cs ├── HitTesting │ ├── WinUIManualInputEventsSample.cs │ └── WinUIRectangularSelectionSample.cs ├── Package.appxmanifest ├── Properties │ └── launchSettings.json ├── QuickStart │ ├── SharpEngineSceneViewInCode.xaml │ ├── SharpEngineSceneViewInCode.xaml.cs │ ├── SharpEngineSceneViewInXaml.xaml │ └── SharpEngineSceneViewInXaml.xaml.cs ├── SamplesWindow.xaml ├── SamplesWindow.xaml.cs ├── Settings │ ├── SettingsWindow.xaml │ └── SettingsWindow.xaml.cs ├── Titles │ ├── IntroductionPage.xaml │ ├── IntroductionPage.xaml.cs │ └── QuickStartTitle.md ├── UIProvider │ ├── ButtonUIElement.cs │ ├── CheckBoxUIElement.cs │ ├── ComboBoxUIElement.cs │ ├── KeyValueLabelUIElement.cs │ ├── LabelUIElement.cs │ ├── MarkdownUIElement.cs │ ├── RadioButtonsUIElement.cs │ ├── SliderUIElement.cs │ ├── StackPanelUIElement.cs │ ├── TextBoxUIElement.cs │ ├── WinUIElement.cs │ ├── WinUIPanel.cs │ └── WinUIProvider.cs └── app.manifest ├── Ab4d.SharpEngine.Samples.Wpf.sln ├── Ab4d.SharpEngine.Samples.Wpf ├── Ab4d.SharpEngine.Samples.Wpf.csproj ├── Advanced │ ├── MultipleSceneViewsSample.xaml │ └── MultipleSceneViewsSample.xaml.cs ├── App.xaml ├── App.xaml.cs ├── AssemblyInfo.cs ├── CameraControllers │ ├── PointerCameraControllerSample.xaml │ └── PointerCameraControllerSample.xaml.cs ├── Cameras │ └── WpfPoint3DTo2DSample.cs ├── Common │ ├── CommonSamplesWpfRunner.cs │ ├── CommonTitlePage.xaml │ ├── CommonTitlePage.xaml.cs │ ├── DragAndDropHelper.cs │ ├── InfoControl.cs │ ├── MarkdownTestPage.xaml │ ├── MarkdownTestPage.xaml.cs │ ├── SimpleGrid.cs │ ├── SingleSceneViewSample.cs │ ├── TextBlockEx.cs │ ├── WpfMarkdownTextCreator.cs │ └── WpfSamplesContext.cs ├── CommonWpfSamplePage.xaml ├── CommonWpfSamplePage.xaml.cs ├── Diagnostics │ ├── DiagnosticsWindow.xaml │ ├── DiagnosticsWindow.xaml.cs │ ├── LogMessagesWindow.xaml │ └── LogMessagesWindow.xaml.cs ├── GlobalSharpEngineSettings.cs ├── HitTesting │ ├── WpfManualInputEventsSample.cs │ └── WpfRectangularSelectionSample.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── QuickStart │ ├── AntiAliasingSample.xaml │ ├── AntiAliasingSample.xaml.cs │ ├── SharpEngineSceneViewInCode.xaml │ ├── SharpEngineSceneViewInCode.xaml.cs │ ├── SharpEngineSceneViewInXaml.xaml │ └── SharpEngineSceneViewInXaml.xaml.cs ├── Resources │ └── sharp-engine-logo.ico ├── Settings │ ├── SettingsWindow.xaml │ └── SettingsWindow.xaml.cs ├── Titles │ ├── IntroductionPage.xaml │ ├── IntroductionPage.xaml.cs │ └── QuickStartTitle.md └── UIProvider │ ├── ButtonUIElement.cs │ ├── CheckBoxUIElement.cs │ ├── ComboBoxUIElement.cs │ ├── KeyValueLabelUIElement.cs │ ├── LabelUIElement.cs │ ├── MarkdownUIElement.cs │ ├── RadioButtonsUIElement.cs │ ├── SliderUIElement.cs │ ├── StackPanelUIElement.cs │ ├── TextBoxUIElement.cs │ ├── WpfUIElement.cs │ ├── WpfUIPanel.cs │ └── WpfUIProvider.cs ├── README.md ├── doc ├── animated-samples2.png ├── xcode-devices.png ├── xcode-provisioning1.png └── xcode-provisioning2.png └── lib ├── MoltenVK ├── ios-arm64 │ └── libMoltenVK.dylib ├── ios-arm64_x86_64-simulator │ └── libMoltenVK.dylib ├── macos-arm64_x86_64 │ └── libMoltenVK.dylib ├── readme.txt ├── tvos-arm64_arm64e │ └── libMoltenVK.dylib └── tvos-arm64_x86_64-simulator │ └── libMoltenVK.dylib └── assimp-lib ├── AssimpLicense.txt ├── linux-x64 └── libassimp.so.5.4.2 ├── version readme.txt ├── win-x64 └── Assimp64.dll └── win-x86 └── Assimp32.dll /Ab4d.SharpEngine.Samples.Android.Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.3.32611.2 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ab4d.SharpEngine.Samples.Android.Application", "Ab4d.SharpEngine.Samples.Android.Application\Ab4d.SharpEngine.Samples.Android.Application.csproj", "{EF79004F-7504-4FCE-B228-3E4FB3B94760}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Debug|Any CPU.Deploy.0 = Debug|Any CPU 17 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Release|Any CPU.ActiveCfg = Release|Any CPU 18 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Release|Any CPU.Build.0 = Release|Any CPU 19 | {EF79004F-7504-4FCE-B228-3E4FB3B94760}.Release|Any CPU.Deploy.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | GlobalSection(ExtensibilityGlobals) = postSolution 25 | SolutionGuid = {03C34382-8A63-4F96-B411-48B6F1CC7090} 26 | EndGlobalSection 27 | EndGlobal 28 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/CustomScaleListener.cs: -------------------------------------------------------------------------------- 1 | using Ab4d.SharpEngine.Utilities; 2 | using Android.Views; 3 | 4 | namespace AndroidApp1; 5 | 6 | public class CustomScaleListener : ScaleGestureDetector.SimpleOnScaleGestureListener 7 | { 8 | private ManualPointerCameraController? _pointerCameraController; 9 | 10 | private float _startScaleFactor; 11 | private float _lastScaleFactor; 12 | 13 | public void SetPointerCameraController(ManualPointerCameraController pointerCameraController) 14 | { 15 | _pointerCameraController = pointerCameraController; 16 | } 17 | 18 | public override bool OnScaleBegin(ScaleGestureDetector? detector) 19 | { 20 | if (detector == null) 21 | return false; 22 | 23 | _startScaleFactor = detector.ScaleFactor; 24 | _lastScaleFactor = 1; 25 | 26 | return base.OnScaleBegin(detector); 27 | } 28 | 29 | public override bool OnScale(ScaleGestureDetector? detector) 30 | { 31 | if (detector == null) 32 | return false; 33 | 34 | //System.Diagnostics.Debug.WriteLine($"OnScale: CurrentSpanX: {detector.CurrentSpanX}; CurrentSpanY: {detector.CurrentSpanY}; ScaleFactor: {detector.ScaleFactor}"); 35 | 36 | if (_pointerCameraController != null) 37 | { 38 | float oneStepScaleFactor = detector.ScaleFactor / _lastScaleFactor; 39 | _lastScaleFactor = detector.ScaleFactor; 40 | 41 | //_mouseCameraController.ProcessMouseWheel(new Vector2(detector.FocusX, detector.FocusY), detector.ScaleFactor); 42 | _pointerCameraController.ChangeCameraDistance(1f / oneStepScaleFactor); 43 | 44 | //System.Diagnostics.Debug.WriteLine($"ChangeCameraDistance({oneStepScaleFactor})"); 45 | 46 | } 47 | 48 | return base.OnScale(detector); 49 | } 50 | } -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/lib/Vulkan-validation-layers.txt: -------------------------------------------------------------------------------- 1 | To enable Vulkan validation layers copy the *.so files to the subfolders (for newer devices it is usually enough to copy only to arm64-v8a folder). 2 | The *.so files can be downloaded from https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases 3 | Check that the the Build Action is set to "AndroidNativeLibrary" 4 | 5 | Add the following to AndroidManifest.xml: 6 | 7 | 8 | Then enabled validation layers in MainActivity.cs: set enableStandardValidation to true -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.Android.Application/Resources/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #2C3E50 4 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.Android.Application/Resources/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Ab4d.SharpEngine Demo 3 | Hello, Android with Ab4d.SharpEngine! 4 | Change color 5 | Change scene 6 | Start camera rotation 7 | Stop camera rotation 8 | This sample demonstrates only how to integrate Ab4d.SharpEngine into an Android app.\nSee samples for Avalonia, Wpf, WinUI or WinForms for more features of the engine. 9 | 10 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/AvaloniaUI.CrossPlatform.Android.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Android 4 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Android 5 | Exe 6 | net9.0-android 7 | 28 8 | enable 9 | com.ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform 10 | 1 11 | 1.0 12 | 14 | 15 | 16 | 17 | 18 | Resources\drawable\Icon.png 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Icon.png -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Avalonia; 4 | using Avalonia.Android; 5 | using Avalonia.ReactiveUI; 6 | 7 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Android 8 | { 9 | [Activity( 10 | Label = "Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Android", 11 | Theme = "@style/MyTheme.NoActionBar", 12 | Icon = "@drawable/icon", 13 | MainLauncher = true, 14 | ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.ScreenSize | ConfigChanges.UiMode)] 15 | public class MainActivity : AvaloniaMainActivity 16 | { 17 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 18 | { 19 | // Ab4d.SharpEngine license must be activated from the entry assembly (otherwise an SDK license is needed). 20 | // 21 | // Ab4d.SharpEngine Samples License can be used only for Ab4d.SharpEngine samples. 22 | // To use Ab4d.SharpEngine in your project, get a license from ab4d.com/trial or ab4d.com/purchase 23 | Ab4d.SharpEngine.Licensing.SetLicense(licenseOwner: "AB4D", 24 | licenseType: "SamplesLicense", 25 | platforms: "All", 26 | license: "5B53-8A17-DAEB-5B03-3B90-DD5B-958B-CA4D-0B88-CE79-FBB4-6002-D9C9-19C2-AFF8-1662-B2B2"); 27 | 28 | return base.CustomizeAppBuilder(builder) 29 | .WithInterFont() 30 | .UseReactiveUI(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Resources/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Resources/values-night/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #212121 4 | 5 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Resources/values-v31/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | #FFFFFF 4 | 5 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Desktop/AvaloniaUI.CrossPlatform.Desktop.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Desktop 4 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Desktop 5 | WinExe 6 | net9.0 7 | enable 8 | true 9 | 10 | 11 | 12 | app.manifest 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | libMoltenVK.dylib 25 | PreserveNewest 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Desktop/Program.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.ReactiveUI; 3 | using System; 4 | 5 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Desktop 6 | { 7 | internal sealed class Program 8 | { 9 | // Initialization code. Don't use any Avalonia, third-party APIs or any 10 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized 11 | // yet and stuff might break. 12 | [STAThread] 13 | public static void Main(string[] args) => BuildAvaloniaApp() 14 | .StartWithClassicDesktopLifetime(args); 15 | 16 | // Avalonia configuration, don't remove; also used by visual designer. 17 | public static AppBuilder BuildAvaloniaApp() 18 | { 19 | // Ab4d.SharpEngine license must be activated from the entry assembly (otherwise an SDK license is needed). 20 | // 21 | // Ab4d.SharpEngine Samples License can be used only for Ab4d.SharpEngine samples. 22 | // To use Ab4d.SharpEngine in your project, get a license from ab4d.com/trial or ab4d.com/purchase 23 | Ab4d.SharpEngine.Licensing.SetLicense(licenseOwner: "AB4D", 24 | licenseType: "SamplesLicense", 25 | platforms: "All", 26 | license: "5B53-8A17-DAEB-5B03-3B90-DD5B-958B-CA4D-0B88-CE79-FBB4-6002-D9C9-19C2-AFF8-1662-B2B2"); 27 | 28 | return AppBuilder.Configure() 29 | .UsePlatformDetect() 30 | .WithInterFont() 31 | .LogToTrace() 32 | .UseReactiveUI(); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Desktop/app.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | enable 4 | 11.3.0 5 | 6 | 7 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/App.axaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/App.axaml.cs: -------------------------------------------------------------------------------- 1 | using Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.ViewModels; 2 | using Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Views; 3 | using Avalonia; 4 | using Avalonia.Controls.ApplicationLifetimes; 5 | using Avalonia.Markup.Xaml; 6 | 7 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform 8 | { 9 | public partial class App : Application 10 | { 11 | public override void Initialize() 12 | { 13 | AvaloniaXamlLoader.Load(this); 14 | } 15 | 16 | public override void OnFrameworkInitializationCompleted() 17 | { 18 | if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) 19 | { 20 | desktop.MainWindow = new MainWindow 21 | { 22 | DataContext = new MainViewModel() 23 | }; 24 | } 25 | else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform) 26 | { 27 | singleViewPlatform.MainView = new MainView 28 | { 29 | DataContext = new MainViewModel() 30 | }; 31 | } 32 | 33 | base.OnFrameworkInitializationCompleted(); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/Assets/avalonia-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ab4d/Ab4d.SharpEngine.Samples/eb6853ec5f7776eb00c5d3fa2935b251ec1e1709/Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/Assets/avalonia-logo.ico -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/AvaloniaUI.CrossPlatform.Shared.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Shared 4 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Shared 5 | net9.0 6 | enable 7 | latest 8 | true 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/ViewLocator.cs: -------------------------------------------------------------------------------- 1 | using Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.ViewModels; 2 | using Avalonia.Controls; 3 | using Avalonia.Controls.Templates; 4 | using System; 5 | 6 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform 7 | { 8 | public class ViewLocator : IDataTemplate 9 | { 10 | public Control? Build(object? data) 11 | { 12 | if (data is null) 13 | return null; 14 | 15 | var name = data.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); 16 | var type = Type.GetType(name); 17 | 18 | if (type != null) 19 | { 20 | return (Control)Activator.CreateInstance(type)!; 21 | } 22 | 23 | return new TextBlock { Text = "Not Found: " + name }; 24 | } 25 | 26 | public bool Match(object? data) 27 | { 28 | return data is ViewModelBase; 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/ViewModels/MainViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.ViewModels 2 | { 3 | public class MainViewModel : ViewModelBase 4 | { 5 | #pragma warning disable CA1822 // Mark members as static 6 | public string Greeting => "Welcome to Avalonia!"; 7 | #pragma warning restore CA1822 // Mark members as static 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using ReactiveUI; 2 | 3 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.ViewModels 4 | { 5 | public class ViewModelBase : ReactiveObject 6 | { 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/Views/MainWindow.axaml: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/Shared/Views/MainWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia.Controls; 2 | 3 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.Views 4 | { 5 | public partial class MainWindow : Window 6 | { 7 | public MainWindow() 8 | { 9 | InitializeComponent(); 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.iOS; 4 | using Avalonia.Media; 5 | using Avalonia.ReactiveUI; 6 | using Foundation; 7 | using UIKit; 8 | 9 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.iOS 10 | { 11 | // The UIApplicationDelegate for the application. This class is responsible for launching the 12 | // User Interface of the application, as well as listening (and optionally responding) to 13 | // application events from iOS. 14 | [Register("AppDelegate")] 15 | #pragma warning disable CA1711 // Identifiers should not have incorrect suffix 16 | public partial class AppDelegate : AvaloniaAppDelegate 17 | #pragma warning restore CA1711 // Identifiers should not have incorrect suffix 18 | { 19 | protected override AppBuilder CustomizeAppBuilder(AppBuilder builder) 20 | { 21 | return base.CustomizeAppBuilder(builder) 22 | .WithInterFont() 23 | .UseReactiveUI(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDisplayName 6 | Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform 7 | CFBundleIdentifier 8 | com.ab4d.sharpengine.samples.avaloniaui 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1.0 13 | LSRequiresIPhoneOS 14 | 15 | MinimumOSVersion 16 | 15.0 17 | UIDeviceFamily 18 | 19 | 1 20 | 2 21 | 22 | UILaunchStoryboardName 23 | LaunchScreen 24 | UIRequiredDeviceCapabilities 25 | 26 | armv7 27 | 28 | UISupportedInterfaceOrientations 29 | 30 | UIInterfaceOrientationPortrait 31 | UIInterfaceOrientationPortraitUpsideDown 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // Ab4d.SharpEngine license must be activated from the entry assembly (otherwise an SDK license is needed). 11 | // 12 | // Ab4d.SharpEngine Samples License can be used only for Ab4d.SharpEngine samples. 13 | // To use Ab4d.SharpEngine in your project, get a license from ab4d.com/trial or ab4d.com/purchase 14 | Ab4d.SharpEngine.Licensing.SetLicense(licenseOwner: "AB4D", 15 | licenseType: "SamplesLicense", 16 | platforms: "All", 17 | license: "5B53-8A17-DAEB-5B03-3B90-DD5B-958B-CA4D-0B88-CE79-FBB4-6002-D9C9-19C2-AFF8-1662-B2B2"); 18 | 19 | // if you want to use a different Application Delegate class from "AppDelegate" 20 | // you can specify it here. 21 | UIApplication.Main(args, null, typeof(AppDelegate)); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/iOS/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyAccessedAPIType 6 | NSPrivacyAccessedAPICategoryFileTimestamp 7 | NSPrivacyAccessedAPITypeReasons 8 | 9 | C617.1 10 | 11 | 12 | 13 | NSPrivacyAccessedAPIType 14 | NSPrivacyAccessedAPICategorySystemBootTime 15 | NSPrivacyAccessedAPITypeReasons 16 | 17 | 35F9.1 18 | 19 | 20 | 21 | NSPrivacyAccessedAPIType 22 | NSPrivacyAccessedAPICategoryDiskSpace 23 | NSPrivacyAccessedAPITypeReasons 24 | 25 | E174.1 26 | 27 | 28 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform/readme.md: -------------------------------------------------------------------------------- 1 | # Ab4d.SharpEngine.Samples.AvaloniaUI.CrossPlatform 2 | 3 | This solution shows how to create an Avalonia app with Ab4d.SharpEngine that can run on Windows, Linux, macOS, Android and iOS. 4 | 5 | This sample shows only a few featrues of the Ab4d.SharpEngine library. See the "Ab4d.SharpEngine.Samples.AvaloniaUI" solution to see the sample for more features of the engine. 6 | 7 | To see how to build the app for **macOS** and **iOS**, see 8 | [Quick building instructions for macOS and iOS](https://github.com/ab4d/Ab4d.SharpEngine.Samples/blob/main/README.md#quick-building-instructions-for-macos-and-ios) or 9 | [Step by step instructions to run the samples on macOS and iOS](https://github.com/ab4d/Ab4d.SharpEngine.Samples#step-by-step-instructions-to-run-the-samples-on-macos-and-ios) 10 | 11 | Note that folder and file names in this solution have been shortened to prevent problems with max path size on Windows (260 chars). 12 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.VulkanBackend.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32602.215 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ab4d.SharpEngine.Samples.AvaloniaUI", "Ab4d.SharpEngine.Samples.AvaloniaUI\Ab4d.SharpEngine.Samples.AvaloniaUI.VulkanBackend.csproj", "{E370BC2C-04BB-4080-97AE-5F30671EB8A4}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ab4d.SharpEngine.Samples.Common", "Ab4d.SharpEngine.Samples.Common\Ab4d.SharpEngine.Samples.Common.csproj", "{096F0E8A-A19E-4412-8D96-C2705BCA5AEE}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {CFCDBCAB-0775-4BA6-B91F-FE99167E638B} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32602.215 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ab4d.SharpEngine.Samples.AvaloniaUI", "Ab4d.SharpEngine.Samples.AvaloniaUI\Ab4d.SharpEngine.Samples.AvaloniaUI.csproj", "{E370BC2C-04BB-4080-97AE-5F30671EB8A4}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ab4d.SharpEngine.Samples.Common", "Ab4d.SharpEngine.Samples.Common\Ab4d.SharpEngine.Samples.Common.csproj", "{096F0E8A-A19E-4412-8D96-C2705BCA5AEE}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {E370BC2C-04BB-4080-97AE-5F30671EB8A4}.Release|Any CPU.Build.0 = Release|Any CPU 20 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {096F0E8A-A19E-4412-8D96-C2705BCA5AEE}.Release|Any CPU.Build.0 = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {CFCDBCAB-0775-4BA6-B91F-FE99167E638B} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/Advanced/MultipleSceneViewsSample.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/App.axaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | #333 11 | #FFBC57 12 | #77FFBC57 13 | #CCC 14 | #EEE 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/Common/CommonTitleUserControl.xaml: -------------------------------------------------------------------------------- 1 |  8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/Common/MessageBox.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/CommonAvaloniaSampleUserControl.axaml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Ab4d.SharpEngine.Samples.AvaloniaUI/Diagnostics/LogMessagesWindow.xaml: -------------------------------------------------------------------------------- 1 |  11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |