View Issue Details

IDProjectCategoryView StatusLast Update
0002512NoesisGUIUnity3Dpublic2023-05-11 09:39
Reporterstonstad Assigned Tosfernandez  
PrioritynormalSeveritycrashReproducibilityalways
Status resolvedResolutionfixed 
Product Version3.1.7 
Target Version3.2Fixed in Version3.2.0 
Summary0002512: Consistent ReloadXaml Crash
DescriptionNoesis appears to be executing events, i.e. OnButtonUnchecked during ReloadXaml().

Asset Pipeline Refresh (id=1c725f063e803cf40883ab381724b9ec): Total: 0.344 seconds - Initiated by RefreshV2(AllowForceSynchronousImport)

Uploading Crash Report
NullReferenceException: Object reference not set to an instance of an object
  at StellarConquest.Presentation.Unity.UI.AssetsScreen.Build (System.Boolean showFactionAssets, System.Boolean showPersonalAssets, System.Boolean showPlanets, System.Boolean showStations, System.Boolean showShips) [0x000b4] in C:\Source\StellarConquest\StellarConquest.Presentation.Unity\Assets\User Interface\Screens\Game\Static\Assets\AssetsScreen.cs:113
  at StellarConquest.Presentation.Unity.UI.AssetsScreen.OnButtonUnchecked (System.Object sender, Noesis.RoutedEventArgs e) [0x0000e] in C:\Source\StellarConquest\StellarConquest.Presentation.Unity\Assets\User Interface\Screens\Game\Static\Assets\AssetsScreen.cs:662
  at Noesis.RoutedEventArgs.InvokeHandler (System.Delegate handler, System.IntPtr sender, System.IntPtr args) [0x00011] in C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Proxies\RoutedEventArgs.cs:50
  at Noesis.EventManager.InvokeHandler (System.IntPtr routedEventPtr, System.Delegate handler, System.IntPtr sender, System.IntPtr args) [0x00026] in C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Core\Events.cs:578
  at Noesis.EventHandlerStore.RaiseRoutedEvent (System.IntPtr cPtrType, System.IntPtr cPtr, System.IntPtr routedEvent, System.IntPtr sender, System.IntPtr e) [0x00084] in C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Core\Events.cs:267
UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
UnityEngine.Logger:LogException(Exception, Object)
UnityEngine.Debug:LogException(Exception)
NoesisUnity:OnUnhandledException(Exception) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\NoesisUnity.cs:374)
Noesis.Error:UnhandledException(Exception) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Core\Error.cs:18)
Noesis.EventHandlerStore:RaiseRoutedEvent(IntPtr, IntPtr, IntPtr, IntPtr, IntPtr) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Core\Events.cs:272)
Noesis.XamlProvider:Noesis_RaiseXamlChanged(HandleRef, String)
Noesis.XamlProvider:RaiseXamlChanged(Uri) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\API\Proxies\XamlProvider.cs:52)
NoesisXamlProvider:ReloadXaml(String) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Runtime\NoesisProviders.cs:70)
NoesisPostprocessor:ReloadXaml(String) (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Editor\NoesisPostprocessor.cs:75)
<>c__DisplayClass1_1:<OnPostprocessAllAssets>b__0() (at C:\Source\StellarConquest\StellarConquest.Utilities\Noesis\3.1.7\Editor\NoesisPostprocessor.cs:41)
Steps To ReproduceEncl. crash logs and dump.
TagsNo tags attached.
PlatformAny

Relationships

has duplicate 0002513 resolvedsfernandez XamlReload Noesis_RaiseTextureChanged Event Crashes 

Activities

stonstad

stonstad

2023-02-16 18:20

reporter  

stonstad

stonstad

2023-02-16 18:21

reporter   ~0008290

I can confirm Preview Enabled is not checked.
stonstad

stonstad

2023-02-28 21:59

reporter   ~0008315

All of these crashes (screenshot) are caused by Noesis. I can't edit a single line of XAML without a crash during XamlPostProcessor import. When crashes occur my Unity scene (.unity) state is corrupt after editor reload and I have additional steps I must go through to restore my work.

What is the status of this critical bug?
image.png (111,347 bytes)   
image.png (111,347 bytes)   
sfernandez

sfernandez

2023-03-01 10:54

manager   ~0008318

I was investigating this issue and all the crash dumps you attached (including the ones in 0002513) point to the same 'Assets/User Interface/UIStateMachine.xaml'. Could you please attach that xaml?

The crash is related to the NameScope that is set in the root of the xaml, are you manually registering elements (using NameScope.RegisterName() or FrameworkElement.RegisterName())?
stonstad

stonstad

2023-03-01 15:06

reporter   ~0008319

Hey Sergio. Yes, I am registering elements. UIStateMachine is the top level XAML element attached to NoesisView.

    <noesis:Xaml.Dependencies>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Input Control/InputControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Transition Control/TransitionControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Radial Range Control/RadialRangeControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Login/LoginScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Character Selection/CharacterSelectionScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Character Creation/CharacterCreationScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Game/GameScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Overlay Layer/OverlayLayer.xaml"/>
    </noesis:Xaml.Dependencies>
UIStateMachine.xaml (3,243 bytes)   
<UserControl
    x:Class="StellarConquest.Presentation.Unity.UI.UIStateMachine"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
    xmlns:noesis="clr-namespace:NoesisGUIExtensions"
    xmlns:local="clr-namespace:StellarConquest.Presentation.Unity.UI"
    x:Name="_UIStateMachine"
    d:DesignWidth="1280" d:DesignHeight="720">
    <noesis:Xaml.Dependencies>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Input Control/InputControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Transition Control/TransitionControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Controls/Radial Range Control/RadialRangeControl.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Login/LoginScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Character Selection/CharacterSelectionScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Character Creation/CharacterCreationScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Game/GameScreen.xaml"/>
        <noesis:Dependency Source="/Assets/User Interface/Screens/Overlay Layer/OverlayLayer.xaml"/>
    </noesis:Xaml.Dependencies>
    <Grid>
        <Grid x:Name="_SplashScreen">
            <Grid.RowDefinitions>
                <RowDefinition Height="4*"/>
                <RowDefinition Height="4*"/>
                <RowDefinition Height="3*"/>
            </Grid.RowDefinitions>
            <Rectangle x:Name="_SplashRectangle" Grid.RowSpan="3"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fill="{StaticResource splash1}"/>

            <Viewbox Grid.Row="2" VerticalAlignment="Top" Margin="200, -50, 100, 200">
                <Grid>
                    <Grid.Effect>
                        <DropShadowEffect BlurRadius="10" ShadowDepth="3" Opacity="1"/>
                    </Grid.Effect>
                    <Image x:Name="_LogoEllipse" Source="{StaticResource ellipse}" Width="550" Stretch="Uniform" Margin="0, 0, 0, 100"/>
                    <TextBlock x:Name="_LogoText" HorizontalAlignment="Center" FontFamily="{StaticResource Agency}" FontSize="95" VerticalAlignment="Bottom" Margin="0, 0, 0, 0" Foreground="White" Opacity="0.9" noesis:Text.CharacterSpacing="350" Text="STELLAR CONQUEST"/>
                </Grid>
            </Viewbox>
        </Grid>

        <Grid x:Name="_BaseLayer"/>
        <Rectangle x:Name="_ConnectionRectangle" Height="128" Width="128" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="9" Fill="{StaticResource connection}" IsHitTestVisible="False" Visibility="Collapsed">
            <Rectangle.Effect>
                <DropShadowEffect BlurRadius="15" ShadowDepth="0" Opacity="1"/>
            </Rectangle.Effect>
        </Rectangle>
        <local:OverlayLayer x:Name="_OverlayLayer"/>
        <local:TransitionControl x:Name="_TransitionLayer"/>
    </Grid>
</UserControl>
UIStateMachine.xaml (3,243 bytes)   
UIStateMachine.cs (16,782 bytes)   
using Noesis;
using System;
using System.Collections.Generic;
using UnityEngine;
using Grid = Noesis.Grid;
using GUI = Noesis.GUI;
using NoesisEventArgs = Noesis.EventArgs;

namespace StellarConquest.Presentation.Unity.UI
{
    public partial class UIStateMachine : UserControl
    {
        public static UIStateMachine Instance;
        public GameScreen GameScreen { get; private set; }
        public Grid BaseLayer { get; private set; }
        public OverlayLayer OverlayLayer { get; private set; }
        public TransitionControl TransitionLayer { get; private set; }
        public IGameScreenInputProvider CurrentScreen { get; private set; }
        public NoesisView NoesisView { get; private set; }
        public Camera Camera { get; private set; }

        private FrameworkElement _Root;
        private Rectangle _ConnectionRectangle;
        private Rectangle _SplashRectangle;
        private Grid _SplashScreen;
        private bool _SplashShown = false;

        private List<IGameScreenInputProvider> _InputProviders = new List<IGameScreenInputProvider>();

        private BlurEffect _BlurEffect = new BlurEffect() { Radius = 25 };

        public UIStateMachine()
        {
            if (!Application.isPlaying)
                return;

            Initialized += OnInitialized;
            InitializeComponent();
        }

        private void InitializeComponent()
        {
            Instance = this;

            GUI.LoadComponent(this, "Assets/User Interface/UIStateMachine.xaml");
            _Root = Content as FrameworkElement;
            BaseLayer = _Root.FindName("_BaseLayer") as Grid;
            _ConnectionRectangle = _Root.FindName("_ConnectionRectangle") as Rectangle;
            _SplashRectangle = _Root.FindName("_SplashRectangle") as Rectangle;
            _SplashScreen = _Root.FindName("_SplashScreen") as Grid;

            TransitionLayer = _Root.FindName("_TransitionLayer") as TransitionControl;
            OverlayLayer = _Root.FindName("_OverlayLayer") as OverlayLayer;
            NoesisView = GameState.Instance.UserInterfaceGameObject.GetComponentInChildren<NoesisView>();
            Camera = GameState.Instance.UserInterfaceGameObject.GetComponentInChildren<Camera>();
        }

        private void OnInitialized(object sender, NoesisEventArgs args)
        {
        }

        public void ShowTitleScreen(bool fadePrevious = false)
        {
            _InputProviders.Clear();

            SetConnectionIssue(false);
            TransitionLayer.CutToTransparent();

            if (BaseLayer.Children.Count > 0 && BaseLayer.Children[0] is LoginScreen)
                return;

            if (!fadePrevious)
                BaseLayer.Children.Clear();

            if (!_SplashShown)
            {
                _SplashShown = true;

                LoginScreen loginScreen = new LoginScreen();
                loginScreen.Opacity = 0;

                CurrentScreen = loginScreen;
                BaseLayer.Children.Add(loginScreen);

                float splashScreenDuration = 1.5f;
                if (RuntimeSettings.Instance.IsDemoMode)
                    splashScreenDuration = 5.0f;

                UnityDispatcher.Instance.Invoke(TimeSpan.FromSeconds(splashScreenDuration), () =>
                {
                    Soundtrack.Instance.Play(ScoreType.Login, true);
                    _SplashScreen.FadeOut(this, TimeSpan.FromSeconds(3), () =>
                    {
                        _SplashScreen.Children.Clear(); // clear memory
                        loginScreen.Opacity = 1;
                        loginScreen.FadeIn(this, TimeSpan.FromMilliseconds(700));
                    });
                });
            }
            else
            {
                ScreenTransition(() =>
                {
                    Soundtrack.Instance.Play(ScoreType.Login, true);

                    LoginScreen loginScreen = new LoginScreen();
                    loginScreen.Opacity = 1;

                    CurrentScreen = loginScreen;
                    BaseLayer.Children.Add(loginScreen);

                    loginScreen.FadeIn(this, TimeSpan.FromMilliseconds(700));
                });
            }
        }

        public void ShowCharacterSelectionScreen()
        {
            TransitionLayer.CutToTransparent();

            if (BaseLayer.Children.Count > 0 && BaseLayer.Children[0] is CharacterSelectionScreen)
                return;

            ScreenTransition(() =>
            {
                CharacterSelectionScreen characterSelectionScreen = new CharacterSelectionScreen();
                CurrentScreen = characterSelectionScreen;
                characterSelectionScreen.SetPlayers(SessionState.Instance.AuthenticatedPlayers);
                BaseLayer.Children.Add(characterSelectionScreen);
            });

        }

        public void ShowCharacterCreationScreen()
        {
            TransitionLayer.CutToTransparent();

            if (BaseLayer.Children.Count > 0 && BaseLayer.Children[0] is CharacterCreationScreen)
                return;

            ScreenTransition(() =>
            {
                CharacterCreationScreen characterCreationScreen = new CharacterCreationScreen();
                CurrentScreen = characterCreationScreen;
                BaseLayer.Children.Add(characterCreationScreen);
            });
        }

        public void LoadGameScreen()
        {
            if (BaseLayer.Children.Count > 0 && BaseLayer.Children[0] is CharacterCreationScreen)
                return;

            GameScreen = new GameScreen();
            CurrentScreen = GameScreen;
            GameScreen.Visibility = Visibility.Collapsed;
            BaseLayer.Children.Add(GameScreen);
        }

        public void ShowGameScreen()
        {
            TransitionLayer.FadeFromBlack();
            GameScreen.Visibility = Visibility.Visible;
            GameScreen.FadeIn(this, FrameworkElementExtensionMethods.ScreenSlowFadeTime);
            Soundtrack.Instance.StaticAudioListener.enabled = false;
            Soundtrack.Instance.PlayContextual(SessionState.Instance.Player, SessionState.Instance.StarSystem);
        }

        /// <summary>
        /// Fades out the previous screen, if one exists.
        /// </summary>
        /// <param name="createScreenAction"></param>
        public void ScreenTransition(Action createScreenAction, Action completed = null)
        {
            ScreenTransition(FrameworkElementExtensionMethods.ScreenSlowFadeTime, FrameworkElementExtensionMethods.ScreenFastFadeTime, createScreenAction, completed);
        }

        public void ScreenTransition(TimeSpan fadeInDuration, TimeSpan fadeOutDuration, Action createScreenAction, Action completed = null)
        {
            FrameworkElement screen;

            if (BaseLayer.Children.Count == 0) // no existing screen
            {
                if (createScreenAction != null)
                    createScreenAction.Invoke(); // create screen
                screen = BaseLayer.Children[0] as FrameworkElement;
                screen.FadeIn(this, fadeInDuration, completed);
            }
            else // screen exists
            {
                screen = BaseLayer.Children[0] as FrameworkElement;
                screen.FadeOut(this, fadeOutDuration, new Action(() =>
                {
                    BaseLayer.Children.Clear();
                    if (createScreenAction != null)
                        createScreenAction.Invoke(); // create screen
                    if (BaseLayer.Children.Count > 0)
                    {
                        screen = BaseLayer.Children[0] as FrameworkElement;
                        screen.FadeIn(this, fadeInDuration, completed);
                    }
                }));
            }
        }

        public bool CursorVisible
        {
            get
            {
                return UnityEngine.Cursor.visible && UnityEngine.Cursor.lockState == CursorLockMode.None;
            }
            set
            {
                if (!Input.mousePresent)
                    return;

                if (value)
                {
                    if (!UnityEngine.Cursor.visible)
                        UpdateCursor(CursorType.Arrow);
                    UnityEngine.Cursor.visible = true;
                    UnityEngine.Cursor.lockState = CursorLockMode.None;  
                }
                else
                {
                    UnityEngine.Cursor.lockState = CursorLockMode.Locked;
                    UnityEngine.Cursor.visible = false;
                }
            }
        }

        public void SetConnectionIssue(bool value)
        {
            if (value)
            {
                _ConnectionRectangle.Visibility = Visibility.Visible;
                _ConnectionRectangle.FadeIn(this, TimeSpan.FromSeconds(1));
            }
            else
                _ConnectionRectangle.FadeOutScreen(this, () => _ConnectionRectangle.Visibility = Visibility.Collapsed);
        }

        public void AddInputProvider(IGameScreenInputProvider inputProvider)
        {
            _InputProviders.Add(inputProvider);
        }

        public void RemoveInputProvider(IGameScreenInputProvider inputProvider)
        {
            _InputProviders.Remove(inputProvider);
        }

        public void UpdateInput()
        {
            // show logo transition screen
            if (RuntimeSettings.Instance.DeveloperMode)
                if (Input.GetKeyDown(KeyCode.ScrollLock))
                {
                    if (!TransitionLayer.Opaque)
                    {
                        TransitionLayer.LogoImageEnabled = true;
                        TransitionLayer.LoadingImageEnabled = false;
                        TransitionLayer.FadeToBlack(TimeSpan.FromSeconds(1.5f));
                    }
                    else
                    {
                        TransitionLayer.LogoImageEnabled = true;
                        TransitionLayer.LoadingImageEnabled = false;
                        TransitionLayer.FadeFromBlack(TimeSpan.FromSeconds(0.5f));
                    }
                }

            // update screeen UI
            if (CurrentScreen != null && !OverlayLayer.IsOverlayActive)
                CurrentScreen.UpdateInput();

            // update overlay UI
            for (int i = 0; i < _InputProviders.Count; i++)
                _InputProviders[i].UpdateInput();
        }

        public void SetBlur(bool? isUIBlurEnabled, bool? isCameraBlurEnabled)
        {
            if (isUIBlurEnabled.HasValue)
            {
                if (isUIBlurEnabled.Value)
                    BaseLayer.Blur(this, 25, TimeSpan.FromMilliseconds(200));
                else
                    BaseLayer.Unblur(this, TimeSpan.FromMilliseconds(200));
            }

            if (isCameraBlurEnabled.HasValue)
                PostProcessingManager.Instance.SetBlur(isCameraBlurEnabled.Value, TimeSpan.FromMilliseconds(200));
        }

        public static void UpdateCursor(CursorType cursor)
        {
            NoesisSettings settings = NoesisSettings.Get();

            switch (cursor)
            {
                case CursorType.AppStarting:
                    UnityEngine.Cursor.SetCursor(settings.AppStarting.Texture, settings.AppStarting.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Arrow:
                    UnityEngine.Cursor.SetCursor(settings.Arrow.Texture, settings.Arrow.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ArrowCD:
                    UnityEngine.Cursor.SetCursor(settings.ArrowCD.Texture, settings.ArrowCD.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Cross:
                    UnityEngine.Cursor.SetCursor(settings.Cross.Texture, settings.Cross.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Hand:
                    UnityEngine.Cursor.SetCursor(settings.Hand.Texture, settings.Hand.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Help:
                    UnityEngine.Cursor.SetCursor(settings.Help.Texture, settings.Help.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.IBeam:
                    UnityEngine.Cursor.SetCursor(settings.IBeam.Texture, settings.IBeam.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.No:
                    UnityEngine.Cursor.SetCursor(settings.No.Texture, settings.No.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.None:
                    UnityEngine.Cursor.SetCursor(settings.None.Texture, settings.None.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Pen:
                    UnityEngine.Cursor.SetCursor(settings.Pen.Texture, settings.Pen.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollAll:
                    UnityEngine.Cursor.SetCursor(settings.ScrollAll.Texture, settings.ScrollAll.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollE:
                    UnityEngine.Cursor.SetCursor(settings.ScrollE.Texture, settings.ScrollE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollN:
                    UnityEngine.Cursor.SetCursor(settings.ScrollN.Texture, settings.ScrollN.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollNE:
                    UnityEngine.Cursor.SetCursor(settings.ScrollNE.Texture, settings.ScrollNE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollNS:
                    UnityEngine.Cursor.SetCursor(settings.ScrollNS.Texture, settings.ScrollNS.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollNW:
                    UnityEngine.Cursor.SetCursor(settings.ScrollNW.Texture, settings.ScrollNW.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollS:
                    UnityEngine.Cursor.SetCursor(settings.ScrollS.Texture, settings.ScrollS.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollSE:
                    UnityEngine.Cursor.SetCursor(settings.ScrollSE.Texture, settings.ScrollSE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollSW:
                    UnityEngine.Cursor.SetCursor(settings.ScrollSW.Texture, settings.ScrollSW.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollW:
                    UnityEngine.Cursor.SetCursor(settings.ScrollW.Texture, settings.ScrollW.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.ScrollWE:
                    UnityEngine.Cursor.SetCursor(settings.ScrollWE.Texture, settings.ScrollWE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.SizeAll:
                    UnityEngine.Cursor.SetCursor(settings.SizeAll.Texture, settings.SizeAll.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.SizeNESW:
                    UnityEngine.Cursor.SetCursor(settings.SizeNESW.Texture, settings.SizeNESW.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.SizeNS:
                    UnityEngine.Cursor.SetCursor(settings.SizeNS.Texture, settings.SizeNS.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.SizeNWSE:
                    UnityEngine.Cursor.SetCursor(settings.SizeNWSE.Texture, settings.SizeNWSE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.SizeWE:
                    UnityEngine.Cursor.SetCursor(settings.SizeWE.Texture, settings.SizeWE.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.UpArrow:
                    UnityEngine.Cursor.SetCursor(settings.UpArrow.Texture, settings.UpArrow.HotSpot, CursorMode.Auto);
                    break;
                case CursorType.Wait:
                    UnityEngine.Cursor.SetCursor(settings.Wait.Texture, settings.Wait.HotSpot, CursorMode.Auto);
                    break;
            }
        }
    }
}
UIStateMachine.cs (16,782 bytes)   
sfernandez

sfernandez

2023-03-09 19:38

manager   ~0008337

I have prepared a debug library with some extra logging to help me find the root of the problem:
https://drive.google.com/file/d/1RBBqswKsQQap7Vd_72CfmIamdLtSED_w/view?usp=share_link

Could you please try with that and send me another crash dump + logs?
stonstad

stonstad

2023-03-14 16:04

reporter   ~0008345

Yes. I'm downloading and installing now. Thank you.
stonstad

stonstad

2023-03-14 17:18

reporter   ~0008346

stonstad

stonstad

2023-03-24 19:41

reporter   ~0008352

Was this crash dump helpful?
sfernandez

sfernandez

2023-03-27 19:36

manager   ~0008363

I'm very sorry for the late reply, we've been busy with GDC the past two weeks and couldn't take a look at this earlier.

The latest crash was not related to the original problem, just an assert in other part of the code.
So I think the best way to solve this is if I can get access to your project (or a reduced version of your project) to reproduce the issue myself, would that be possible?
This way I can make local changes and debug to iterate faster.
stonstad

stonstad

2023-04-12 23:19

reporter   ~0008420

I'm not sure that I am ready to prepare a reproduction project at this time given the effort required to do this for my game. I can confirm that I am using the debug library you shared in https://www.noesisengine.com/bugs/view.php?id=2512#c8337. Is that the cause of the assert?
sfernandez

sfernandez

2023-04-13 10:26

manager   ~0008422

Maybe you can just provide temporal access to your repository and indicate a branch I can test?

Yes, the latest crash dump is just an assert breakpoint, not related to the reload xaml crash. Having access to your project will help me identify the source of that assert that is for sure a different issue.
stonstad

stonstad

2023-04-13 17:41

reporter   ~0008430

Likely related. See video + crash dump here: https://www.noesisengine.com/bugs/view.php?id=2530

Issue History

Date Modified Username Field Change
2023-02-16 18:20 stonstad New Issue
2023-02-16 18:20 stonstad File Added: Crash_2023-02-16_171135646.zip
2023-02-16 18:21 stonstad Note Added: 0008290
2023-02-17 10:43 jsantos Assigned To => sfernandez
2023-02-17 10:43 jsantos Status new => assigned
2023-02-17 10:43 jsantos Target Version => 3.1.8
2023-02-28 21:59 stonstad Note Added: 0008315
2023-02-28 21:59 stonstad File Added: image.png
2023-03-01 10:49 sfernandez Relationship added has duplicate 0002513
2023-03-01 10:54 sfernandez Status assigned => feedback
2023-03-01 10:54 sfernandez Note Added: 0008318
2023-03-01 15:06 stonstad Note Added: 0008319
2023-03-01 15:06 stonstad File Added: UIStateMachine.xaml
2023-03-01 15:06 stonstad File Added: UIStateMachine.cs
2023-03-01 15:06 stonstad Status feedback => assigned
2023-03-09 19:38 sfernandez Status assigned => feedback
2023-03-09 19:38 sfernandez Note Added: 0008337
2023-03-14 16:04 stonstad Note Added: 0008345
2023-03-14 16:04 stonstad Status feedback => assigned
2023-03-14 17:18 stonstad Note Added: 0008346
2023-03-14 17:18 stonstad File Added: Crash_2023-03-14_161734595.zip
2023-03-24 19:41 stonstad Note Added: 0008352
2023-03-27 19:36 sfernandez Status assigned => feedback
2023-03-27 19:36 sfernandez Note Added: 0008363
2023-04-12 23:19 stonstad Note Added: 0008420
2023-04-12 23:19 stonstad Status feedback => assigned
2023-04-13 10:26 sfernandez Status assigned => feedback
2023-04-13 10:26 sfernandez Note Added: 0008422
2023-04-13 17:41 stonstad Note Added: 0008430
2023-04-13 17:41 stonstad Status feedback => assigned
2023-05-11 09:34 admin Status assigned => resolved
2023-05-11 09:34 admin Resolution open => fixed
2023-05-11 09:34 admin Fixed in Version => 3.2.0
2023-05-11 09:39 jsantos Target Version 3.1.8 => 3.2