From 29581204ef2ffe0995da39931d2e622d99f5c52d Mon Sep 17 00:00:00 2001 From: Cody Merritt Anhorn Date: Fri, 23 Jul 2021 08:39:27 -0500 Subject: [PATCH] Updated Interop Version to 0.2.3 Created an demo page showing the usage of features from 0.2.3. --- .../Pages/MeshBuilderExample.razor | 7 + .../Pages/MeshBuilderExample.razor.cs | 126 ++++++++ .../Pages/MeshExample.razor | 4 +- .../Pages/MeshExample.razor.cs | 25 +- .../Shared/NavMenu.razor | 9 +- .../wwwroot/js/interop-bridge.custom.js | 303 ++++++++++++++---- .../EventHorizon.Blazor.BabylonJS.WASM.csproj | 4 +- .../Templates/ProjectFileTemplate.txt | 2 +- 8 files changed, 391 insertions(+), 89 deletions(-) create mode 100644 Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor create mode 100644 Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor.cs diff --git a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor new file mode 100644 index 00000000..940f37a0 --- /dev/null +++ b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor @@ -0,0 +1,7 @@ +@page "/mesh/builder" + +

Mesh Builder!

+ +
+ +
\ No newline at end of file diff --git a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor.cs b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor.cs new file mode 100644 index 00000000..f7f20957 --- /dev/null +++ b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshBuilderExample.razor.cs @@ -0,0 +1,126 @@ +namespace EventHorizon.Blazor.BabylonJS.Pages +{ + using System; + using System.Collections.Generic; + using System.Threading.Tasks; + using BABYLON; + using EventHorizon.Blazor.BabylonJS.Model; + using EventHorizon.Blazor.Interop.Callbacks; + + public partial class MeshBuilderExample : IDisposable + { + private Engine _engine; + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + CreateScene(); + } + } + + public void Dispose() + { + _engine?.dispose(); + } + + public void CreateScene() + { + var canvas = Canvas.GetElementById( + "game-window" + ); + var engine = new Engine( + canvas, + true + ); + var scene = new Scene( + engine + ); + var light1 = new HemisphericLight( + "HemisphericLight", + new Vector3(1, 1, 0), + scene + ); + + var columns = 6m; + var rows = 1m; + + var faceUV = new Vector4[6]; + + for (var i = 0; i < 6; i++) + { + faceUV[i] = new Vector4( + i / columns, + 0, + (i + 1) / columns, + 1m / rows + ); + } + + var mat = new StandardMaterial( + "mat", + scene + ); + var texture = new Texture( + scene, + "https://assets.babylonjs.com/environments/numbers.jpg" + ); + mat.diffuseTexture = texture; + + var alpha = 1; + var red = new Color4( + 1, + 0, + 0, + alpha + ); + var blue = new Color4( + 0, + 0, + 1, + alpha + ); + var green = new Color4( + 0, + 1, + 0, + alpha + ); + + var options = new + { + faceUV, + wrap = true, + width = 1, + height = 2, + depth = 3, + faceColors = new List { green, green, green, green, blue, red } + }; + + var box = MeshBuilder.CreateBox( + "box", + options, + scene + ); + box.material = mat; + + var camera = new ArcRotateCamera( + "ArcRotateCamera", + (decimal)(Math.PI / 2), + (decimal)(Math.PI / 4), + 10, + new Vector3(0, 1, 0), + scene + ); + scene.activeCamera = camera; + camera.attachControl( + false + ); + + engine.runRenderLoop(new ActionCallback( + () => Task.Run(() => scene.render(true, false)) + )); + + _engine = engine; + } + } +} diff --git a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor index b894034f..bd64808b 100644 --- a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor +++ b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor @@ -1,6 +1,6 @@ -@page "/mesh" +@page "/mesh/gltf" -

Mesh Loaded! Generated Code!

+

glTF Mesh Loaded!

diff --git a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor.cs b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor.cs index a4183d59..ded806a1 100644 --- a/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor.cs +++ b/Sample/EventHorizon.Blazor.BabylonJS/Pages/MeshExample.razor.cs @@ -1,13 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using BABYLON; -using EventHorizon.Blazor.BabylonJS.Model; -using EventHorizon.Blazor.Interop.Callbacks; - namespace EventHorizon.Blazor.BabylonJS.Pages { + using System; + using System.Threading.Tasks; + using BABYLON; + using EventHorizon.Blazor.BabylonJS.Model; + using EventHorizon.Blazor.Interop.Callbacks; + public partial class MeshExample : IDisposable { private Engine _engine; @@ -54,12 +52,13 @@ public void CreateScene() ), scene ); + var house = SceneLoader.ImportMesh( - null, - "assets/", - "House.gltf", - scene - ); + null, + "assets/", + "House.gltf", + scene + ); var freeCamera = new FreeCamera( "FreeCamera", new Vector3( diff --git a/Sample/EventHorizon.Blazor.BabylonJS/Shared/NavMenu.razor b/Sample/EventHorizon.Blazor.BabylonJS/Shared/NavMenu.razor index d24ce5f1..1b852cb7 100644 --- a/Sample/EventHorizon.Blazor.BabylonJS/Shared/NavMenu.razor +++ b/Sample/EventHorizon.Blazor.BabylonJS/Shared/NavMenu.razor @@ -13,8 +13,13 @@ +