Try to reuse bindgen from LyraApi C# package
This commit is contained in:
parent
faa5387f93
commit
fcf4f54e34
|
@ -1,4 +1,4 @@
|
||||||
workspace = { members = [ "common-api", "witguest"] }
|
workspace = { members = [ "./guests/rust/common-api", "./guests/rust/witguest"] }
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "wittest"
|
name = "wittest"
|
||||||
|
@ -16,5 +16,5 @@ lyra-ecs = { path = "./lyra-engine/crates/lyra-ecs" }
|
||||||
slab = "0.4.9"
|
slab = "0.4.9"
|
||||||
thiserror = "2.0.0"
|
thiserror = "2.0.0"
|
||||||
|
|
||||||
common-api = { path = "./common-api" }
|
common-api = { path = "./guests/rust/common-api" }
|
||||||
anyhow = "1.0.93"
|
anyhow = "1.0.93"
|
||||||
|
|
|
@ -2,9 +2,10 @@
|
||||||
|
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using ExampleWorld.wit.imports.lyra.api;
|
//using ExampleWorld.wit.imports.lyra.api;
|
||||||
using LyraApi;
|
using LyraApi;
|
||||||
using LyraApi.Ecs;
|
using LyraApi.Ecs;
|
||||||
|
using ImportsWorld.wit.imports.lyra.api;
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Sequential)]
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
struct Vec3(float x, float y, float z) : IComponent
|
struct Vec3(float x, float y, float z) : IComponent
|
||||||
|
@ -83,7 +84,6 @@ public class ExampleWorldImpl : IExampleWorld
|
||||||
|
|
||||||
var world = new World(gameWorld);
|
var world = new World(gameWorld);
|
||||||
Entity entity = world.Spawn(pos);
|
Entity entity = world.Spawn(pos);
|
||||||
//IEcs.Entity entity = gameWorld.Spawn(GetBytes(pos), infos);
|
|
||||||
Console.WriteLine("C#: Spawned {0}", entity.Id);
|
Console.WriteLine("C#: Spawned {0}", entity.Id);
|
||||||
|
|
||||||
IEcs.EcsDynamicView res = gameWorld.View(infos);
|
IEcs.EcsDynamicView res = gameWorld.View(infos);
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<IlcExportUnmanagedEntrypoints>true</IlcExportUnmanagedEntrypoints>
|
<IlcExportUnmanagedEntrypoints>true</IlcExportUnmanagedEntrypoints>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Copy WIT files from LyraApi to lyra-api wit folder -->
|
<!-- Copy WIT files from LyraApi to lyra-api wit folder. -->
|
||||||
<Target Name="CopyFolderOnBuild" BeforeTargets="WitCompile_InvokeTool">
|
<Target Name="CopyFolderOnBuild" BeforeTargets="WitCompile_InvokeTool">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<MyFiles Include="..\LyraApi\wit\**\*.wit" />
|
<MyFiles Include="..\LyraApi\wit\**\*.wit" />
|
||||||
|
@ -22,6 +22,23 @@
|
||||||
<Copy SourceFiles="@(MyFiles)" DestinationFolder="wit\deps\lyraapi\%(RecursiveDir)" />
|
<Copy SourceFiles="@(MyFiles)" DestinationFolder="wit\deps\lyraapi\%(RecursiveDir)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
<!-- Remove bindgen of LyraApi WIT .-->
|
||||||
|
<Target Name="RemoveBindgenLyraApi" AfterTargets="WitCompile_InvokeTool">
|
||||||
|
<ItemGroup>
|
||||||
|
<FilesToDelete Include="obj\Debug\net*\wasi-wasm\wit_bindgen\*.lyra.api.*.cs"/>
|
||||||
|
</ItemGroup>
|
||||||
|
<Delete Files="@(FilesToDelete)" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<!-- Reuse bindgen from LyraApi package instead of using local bindgen. -->
|
||||||
|
<Target Name="UpdateLyraApiReferences" AfterTargets="WitCompile_InvokeTool; RemoveBindgenLyraApi">
|
||||||
|
<Exec Condition="'$(OS)' == 'Unix'" Command="find obj/Debug -type f -wholename '*wit_bindgen/*.cs' -exec sed -i 's/ExampleWorld\.wit\.imports\.lyra\.api/ImportsWorld.wit.imports.lyra.api/g' {} \;" />
|
||||||
|
<Exec Condition="'$(OS)' == 'Windows_NT'" Command="powershell -Command "Get-ChildItem -Path 'obj\Debug' -Recurse -Filter '*.cs' ^
|
||||||
|
| Where-Object { $_.FullName -match 'wit_bindgen' } ^
|
||||||
|
| ForEach-Object { (Get-Content -Path $_.FullName) -replace 'ExampleWorld\.wit\.imports\.lyra\.api', 'ImportsWorld.wit.imports.lyra.api' ^
|
||||||
|
| Set-Content -Path $_.FullName }"" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BytecodeAlliance.Componentize.DotNet.Wasm.SDK" Version="0.4.0-preview00007" />
|
<PackageReference Include="BytecodeAlliance.Componentize.DotNet.Wasm.SDK" Version="0.4.0-preview00007" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -24,7 +24,7 @@ pub(crate) mod lyra_engine {
|
||||||
|
|
||||||
wasmtime::component::bindgen!({
|
wasmtime::component::bindgen!({
|
||||||
world: "example",
|
world: "example",
|
||||||
path: "witguest/wit",
|
path: "guests/rust/witguest/wit",
|
||||||
async: true,
|
async: true,
|
||||||
|
|
||||||
with: {
|
with: {
|
||||||
|
@ -436,7 +436,7 @@ async fn main() -> wasmtime::Result<()> {
|
||||||
|
|
||||||
// Load the component from disk
|
// Load the component from disk
|
||||||
//let bytes = std::fs::read("target/wasm32-wasip1/debug/witguest-component.wasm")?;
|
//let bytes = std::fs::read("target/wasm32-wasip1/debug/witguest-component.wasm")?;
|
||||||
let bytes = std::fs::read("dotnet-guest-test/bin/Debug/net9.0/wasi-wasm/native/dotnet-guest-test.wasm")?;
|
let bytes = std::fs::read("guests/csharp/dotnet-guest-test/bin/Debug/net9.0/wasi-wasm/native/dotnet-guest-test.wasm")?;
|
||||||
let component = wasmtime::component::Component::new(&engine, bytes)?;
|
let component = wasmtime::component::Component::new(&engine, bytes)?;
|
||||||
|
|
||||||
let (script_en, (world_res_a, world_res_b)) = {
|
let (script_en, (world_res_a, world_res_b)) = {
|
||||||
|
|
Loading…
Reference in New Issue