Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
134 stars 2 forks source link

Exception when casting a value input to an object conditional #766

Open Ralage86 opened 10 months ago

Ralage86 commented 10 months ago

Describe the bug?

When I try to grab a connector slot to create a ribbon and drag it to a connector slot on a different ProtoFlux node, the ribbon sticks to the tool I'm using (both the ProtoFlux tool and the Redprint tool) and does not release when I click while hovering over either nothing or the connector slot on other node. I have to unequip and delete the tool to get the ribbon to go away.

To Reproduce

Pull out an avatar with ProtoFluX in it, open the FluX on it with RedPrint, sync the color from the cloud by selecting the color tab and then clicking "Read" (I don't know whether this is part of it or not, but I thought it would be worth mentioning), spawn a new FluX node (in my case, Conditional ?:), slap it on the Redprint, and try to connect it to something.

Expected behavior

The ribbon should create a link between the two nodes upon releasing the mouse while hovering the ribbon over the connector slot on the opposite node.

Screenshots

https://github.com/Yellow-Dog-Man/Resonite-Issues/assets/151798763/8f25bc6b-1c09-476d-acb5-17dff7f77c48

Resonite Version Number

2023.11.18.1263

What Platforms does this occur on?

Linux

What headset if any do you use?

Desktop

Log Files

LINUX-PIG-RIG - 2023.11.18.1263 - 2023-11-22 19_21_46.log

Additional Context

I tried deploying Redprint and, pulled out a Conditional(?:) node in the "Resonite Cloud Home" (the default cloud home which I had made some modifications to, mostly just adding platforms and removing some shrubbery). I pointed Redprint to the ProtoFluX setup in the avatar and unpacked it.

Running the Windows build of Resonite via Proton 8. Using Redprint version 1.3.2, but I think I was also able to reproduce this with Redprint 1.2 as well. This bug was tested several times last week as well as this week just before this report was made, and was reproducible both times.

Reporters

As far as I know, I am the only one to have come across this bug.

TisFoolish commented 10 months ago

I've seen this on Windows as well, but was never able to consistently reproduce it to make a bug report or record it.

jae1911 commented 10 months ago

Can also reproduce it with conditionals:

  1. Devtip
  2. Create new -> Empty object
  3. Attach component -> Cloud -> Indicators -> OnlineStatistics
  4. Switch to ProtoFlux tool
  5. Source any value, for instance PublicSessions
  6. Add a Operators -> Add
  7. Try to connect the Source to the Add
  8. Ribbon is now stuck
JackTheFoxOtter commented 10 months ago

This happens when an exception occurs while you're trying to connect a node I'm pretty sure. Usually it's indicative on something that you're doing wrong, for example using the wrong kind of node (value type vs object type).

5H4D0W-X commented 10 months ago

I've found that a specific way to break it is to try multiplying a float3 with a float starting with a ValueMulMulti, as it can't overload to support multiple different value types simultaneously, and doesn't overload to the non-multi version when the input count is reduced to 2

Banane9 commented 10 months ago

This happens when an exception occurs while you're trying to connect a node I'm pretty sure.

Have definitely experienced that when messing up while developing mods affecting the wires 😅

I think I found the relevant exception in the log too (among tons of SignalR ones). Judging from the video I suspect the problem is trying to connect a float value to a conditional expecting a float object. Though the system should of course be smart enough to change the node, or fail gracefully at least.

7:48:26 PM.442 ( 50 FPS)    Exception Updating ActiveToolTip: Element: IDBB08200, Type: FrooxEngine.ToolMultiplexer, World: Ralage86 Home, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: IDBB07700, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Uki's Redprint tip V2.3.2, T: [-0.02872656; 0.001845979; 0.1860718], R: [0.2556742; 0.04527443; -0.2146986; 0.9415336], S: [1.165279; 1.165279; 1.16528], ActiveSelf: True, IsDestroyed: False
Element: IDAE30C00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Tooltip Holder, T: [0.06295536; -0.07512179; -0.1607618], R: [-0.2556742; -0.04527443; 0.2146986; 0.9415336], S: [0.9999973; 0.9999973; 0.9999973], ActiveSelf: True, IsDestroyed: False
Element: IDAE0A300, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Tooltip Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB923E00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Tooltip Anchor, T: [0.03488788; 0.2010545; 0.01255805], R: [-0.204085; -0.639519; -0.689829; 0.2711103], S: [0.8861509; 0.8861509; 0.8861509], ActiveSelf: True, IsDestroyed: False
Element: IDB90F600, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: hand.R, T: [-3.657712E-07; 0.2295866; -2.557581E-07], R: [0.1643516; 0.9170026; -0.03409414; -0.3618457], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB90E000, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: forearm.R, T: [-4.858807E-07; 0.2712904; -1.147369E-06], R: [0.7889975; -0.3997838; -0.2450325; 0.3970074], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB90CA00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: upper_arm.R, T: [4.484662E-09; 0.08044421; -1.581372E-07], R: [-0.3353392; 0.9301394; -0.1494628; -0.007025178], S: [0.9999999; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB90BF00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: shoulder.R, T: [0.08796709; 0.1907465; -0.002741659], R: [0.7351928; 0.6739472; -0.0134985; -0.07144573], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB845B00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Chest, T: [1.33942E-10; 0.1821367; -3.801322E-08], R: [0.02897131; 0.004524131; 0.02977047; 0.9991267], S: [0.9999999; 1; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: IDB845000, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Spine, T: [-1.146075E-10; 0.1040817; 2.275021E-08], R: [-0.001617579; -0.001026523; -0.002012895; 0.9999962], S: [0.9999999; 0.9999999; 0.9999999], ActiveSelf: True, IsDestroyed: False
Element: IDB843A00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Hips, T: [-0.003643953; 0.07066703; 0.9051774], R: [0.6994354; 0.01616824; 0.0139343; 0.7143772], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB842F00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Armature, T: [0; 0; 0], R: [-0.7071069; 0; 0; 0.7071068], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB842400, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: RootNode, T: [1.66759E-07; 1.367622E-08; -0.02892406], R: [0; 1.101659E-15; 0; 1], S: [1.8; 1.8; 1.8], ActiveSelf: True, IsDestroyed: False
Element: IDB840E00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: CenteredRoot, T: [-0.09895715; 8.096613E-10; 0.07228862], R: [-2.263837E-07; 0.5445135; 1.834113E-08; -0.8387521], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: IDB780F00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Winterpaw's Masculine Canine + Clothes, T: [0; 0; 0], R: [0; 0; 0; 1], S: [0.5451589; 0.5451589; 0.5451589], ActiveSelf: True, IsDestroyed: False
Element: IDAD8E800, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: User <noparse=8>Ralage86 (ID2F00), T: [-12.53136; -0.0002816939; -7.340573], R: [-8.429418E-08; -0.1056913; 1.053777E-08; 0.994399], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID6B05C00, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Spawn - User Holder, T: [0; 0.005; 0], R: [0; 1; 0; 1.216796E-08], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2400, Type: FrooxEngine.Slot, World: Ralage86 Home, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: Ralage86 Home, IsRemoved: False
.

System.ArgumentException: Object of type 'ProtoFlux.Runtimes.Execution.Nodes.ExternalValueInput`2[FrooxEngine.ProtoFlux.FrooxEngineContext,System.Single]' cannot be converted to type 'ProtoFlux.Core.IObjectOutput`1[System.Single]'.
  at System.RuntimeType.CheckValue (System.Object value, System.Reflection.Binder binder, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) [0x00071] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Reflection.MonoMethod.ConvertValues (System.Reflection.Binder binder, System.Object[] args, System.Reflection.ParameterInfo[] pinfo, System.Globalization.CultureInfo culture, System.Reflection.BindingFlags invokeAttr) [0x00069] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00011] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Reflection.MonoProperty.SetValue (System.Object obj, System.Object value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] index, System.Globalization.CultureInfo culture) [0x0005d] in <9577ac7a62ef43179789031239ba8798>:0 
  at System.Reflection.PropertyInfo.SetValue (System.Object obj, System.Object value) [0x00000] in <9577ac7a62ef43179789031239ba8798>:0 
  at ProtoFlux.Core.Node.SetInputSource (System.Int32 index, ProtoFlux.Core.IOutput source) [0x00048] in <f9731d1dd27e4ff7bf744a035902d2bc>:0 
  at ProtoFlux.Core.Node.SetInputSource (ProtoFlux.Core.ElementRef input, ProtoFlux.Core.IOutput source) [0x00035] in <f9731d1dd27e4ff7bf744a035902d2bc>:0 
  at ProtoFlux.Core.NodeRuntime`1[N].ConnectInput (ProtoFlux.Core.INode node, ProtoFlux.Core.ElementRef input, ProtoFlux.Core.IOutput source, System.Boolean overload, System.Boolean explicitCast, System.Boolean allowMergingGroups) [0x001c2] in <f9731d1dd27e4ff7bf744a035902d2bc>:0 
  at FrooxEngine.ProtoFlux.ProtoFluxNodeGroup.TryConnectInput (FrooxEngine.ProtoFlux.ProtoFluxNode node, FrooxEngine.ISyncRef input, FrooxEngine.ProtoFlux.INodeOutput output, System.Boolean allowExplicitCast, System.Boolean undoable) [0x00040] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.ProtoFlux.ProtoFluxNode.TryConnectInput (FrooxEngine.ISyncRef input, FrooxEngine.ProtoFlux.INodeOutput output, System.Boolean allowExplicitCast, System.Boolean undoable) [0x00053] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.ProtoFlux.ProtoFluxTool.TryConnect (FrooxEngine.ProtoFlux.ProtoFluxNode node, FrooxEngine.ISyncRef input, FrooxEngine.ProtoFlux.INodeOutput output) [0x00022] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.ProtoFlux.ProtoFluxTool.TryConnect (FrooxEngine.ProtoFlux.ProtoFluxInputProxy input, FrooxEngine.ProtoFlux.ProtoFluxOutputProxy output) [0x00022] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.ProtoFlux.ProtoFluxTool.OnPrimaryRelease () [0x0015d] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.ToolMultiplexer.OnPrimaryRelease () [0x0001a] in <110d8baae6e34f95b7484b0d1bb5190d>:0 
  at FrooxEngine.InteractionHandler.RunToolRelease () [0x00015] in <110d8baae6e34f95b7484b0d1bb5190d>:0 

(also, the time formatting with PM between hh:mm:ss and milliseconds in the log looks funky)

Ralage86 commented 10 months ago

I didn't know there was a significant difference between a float value and a float object. I'll try using the other one and see if it still sticks.

Ralage86 commented 10 months ago

Wow... turns out I was trying to connect a object node to a value node! I didn't know! Thank you guys so much for helping, it works now!

5H4D0W-X commented 10 months ago

I think you should reopen this issue, the wires getting stuck is not fixed yet after all

Banane9 commented 10 months ago

Yea, that was only intended to help you avoid the issue for now, as well as helping the team locating the problem.

That the ribbons are getting stuck / the node doesn't change type / even allows float object are still issues to be fixed.

Ralage86 commented 9 months ago

Yea, that was only intended to help you avoid the issue for now, as well as helping the team locating the problem.

That the ribbons are getting stuck / the node doesn't change type / even allows float object are still issues to be fixed.

Oh, okay then.

shiftyscales commented 7 months ago

As mentioned in #788:

The ribbon getting stuck is intended- when exceptions are thrown- components are disabled so they do not continue to throw exceptions. This also serves as a good visual indicator for when an issue has occurred.

As such I am updating the issue of this title to be more indicative of the underlying issue (attempting to cast a value input to an object conditional).