Archive 17/01/2023.

navMesh.FindPath(jack1.Position, pathPos); crash in android

tianlv777

NavigationMesh navMesh = scene.GetComponent();
Vector3 pathPos = navMesh.FindNearestPoint(hitPos, new Vector3(1.0f, 1.0f, 1.0f));
Node jack1 = scene.GetChild(“jack”, false);
var result = navMesh.FindPath(jack1.Position, pathPos);

note:navMesh.FindPath(jack1.Position, pathPos);//this will crash every running this

android crash.
i use xamarin android and nuget.
I have no test it by urho.net. I guess it will crashed too.

tianlv777

urho.net is ok…seem
var result = navMesh.FindPath(jackGroup.Position, pathPos);

tianlv777

so nuget is problem?

elix22

Yep , in Urho.net was fixed by @dertom
fixing NavigationMesh.FindPath using parameter-ref in binding-call by dertom95 · Pull Request #71 · elix22/Urho3D · GitHub

Nerrik

In my project i updated the complete old recast nav. thats used by urho3d with GitHub - recastnavigation/recastnavigation: Navigation-mesh Toolset for Games because of many crashes (segfaults) with complicated large navmeshes (large terrain with objects). There are many bugs that causes crashes fixed in this further developed version and a crash never happend again after the update.

tianlv777

Uploading: QQ图片20220325155932.png…
QQ图片20220325160118
why plane has different color.
Node planeNode = scene.CreateChild(“Plane”);
planeNode.Scale = new Vector3(100.0f, 1.0f, 100.0f);
StaticModel planeObject = planeNode.CreateComponent();
planeObject.Model = (ResourceCache.GetModel(“Models/Plane.mdl”));
planeObject.SetMaterial(ResourceCache.GetMaterial(“Materials/StoneTiled.xml”));

<technique name="Techniques/DiffNormal.xml" quality="1" />

<technique name="Techniques/Diff.xml" quality="0" />

<texture unit="diffuse" name="Textures/StoneDiffuse.dds" />

<texture unit="normal" name="Textures/StoneNormal.dds" />

<shader psdefines="PACKEDNORMAL" />

<parameter name="MatSpecColor" value="0.3 0.3 0.3 16" />

<parameter name="UOffset" value="4 0 0 0" />

<parameter name="VOffset" value="0 4 0 0" />

the TerrainDetail2.dds how to add?or how to edit dds?
I remove resource Textures/StoneDiffuse.dds from asset folder.But urho.net run As usual.
I can’t get the right logic to edit TerrainDetail or how to add it.

tianlv777

elix22

During first run , the Assets folder is copied into the Bin folder (i.e. bin/Debug/netcoreapp3.1)
Every time you modify the content of some files in the Assets folder , before the next run only the modified files are copied to the Bin folder.

During the runtime , the application is reading from the generated Bin folder not the Assets folder.

If you delete a file in the Assets folder the file is not deleted from the Bin folder (I guess it might be considered a bug , but I didn’t find an optimized solution for that)

Currently you have 2 options

  • Delete the file manually from the Bin folder
  • make a clean build

Regarding DDS , you can read more about it in

tianlv777

THANKS very much!!!THANKS very much!!!

tianlv777

My main game target platform is Android, so I can’t accept Urho Net cannot debug Android programs in real time
So there’s any way to make Urho Net can debug Android programs in real time.
I have two choices now.
1、 Using Urho net that it could debug android program real time. And I find way to migrate V8 and Android WebView to Urho net. Because my android game is using v8 engine and webview.
2、find a way to let urho. net could be packed nuget. So I can use the latest Urho.Net function in xamarin.android at visual sutdio 2022.the findpath function is ok.The Jint is cool to create many maps.

What about your suggestion?

elix22

Currently the Android mono debugger is not supported , it might be supported in 2022/Q4 once my Net.6 Game Editor Will be released.
You can use Urho.IO.Log.Info , Urho.IO.Log.Debug , Urho.IO.Log.Error , (supported on all platforms)

Urho.net can not run with Xamarin.Android , I don’t plan to support it .
On mobile devices Urho.Net interacts directly with the Mono runtime (not using Xamarin) , this is one of the reasons it’s so blazing fast (fast as C++)

Javascript interacts/runs nicely with Urho.net on all platforms , I guess you played with the Javascript Sample , It’s not my cup of tea but I understand people that are using it.
Samples/JavaScriptSample at main · Urho-Net/Samples · GitHub

I have written a small Wiki page for Android

tianlv777

outline is not ok at android.but ok at pc.
void SetupViewport()
{
var cache = ResourceCache;

        var g = Graphics;
        var renderer = Renderer;

        var viewport = new Viewport(Context, scene, CameraNode.GetComponent<Camera>());
        renderer.SetViewport(0, viewport);
        RenderPath effectRenderPath = viewport.RenderPath.Clone();
        effectRenderPath.Append(cache.GetXmlFile("PostProcess/Outline.xml"));
        effectRenderPath.Append(cache.GetXmlFile("PostProcess/FXAA3.xml"));
        viewport.RenderPath = effectRenderPath;

        int w = g.Width;
        int h = g.Height;
        var renderTexture = new Urho.Urho2D.Texture2D(Context);
        renderTexture.SetSize(w, h, Graphics.RGBFormat, TextureUsage.Rendertarget);
        renderTexture.FilterMode = TextureFilterMode.Nearest;
        renderTexture.Name = "OutlineMask";
        cache.AddManualResource(renderTexture);

        var surface = renderTexture.RenderSurface;
        surface.UpdateMode = RenderSurfaceUpdateMode.Updatealways;
        var outlineViewport = new Viewport(Context, outlineScene, outlineCameraNode.GetComponent<Camera>());
        surface.SetViewport(0, outlineViewport);


    }

I guess Outline.glsl can’t use at android…

tianlv777

tianlv777
elix22

Remove this line , will show outline on mobile iOS/Android.