Skip to content

Commit

Permalink
Merge pull request #15 from LeCloutPanda/main
Browse files Browse the repository at this point in the history
 IsUserInSeatedMode.cs
  • Loading branch information
Xlinka authored Apr 3, 2024
2 parents dc23727 + ccdc82c commit 8b82a0e
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
61 changes: 61 additions & 0 deletions Bindings/User/IsUserInSeatedMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
using System;
using Elements.Core;
using FrooxEngine;
using FrooxEngine.ProtoFlux;
using ProtoFlux.Core;
using ProtoFlux.Runtimes.Execution;
using FrooxEngine.ProtoFlux.Locomotion;

[Category(new string[] { "ProtoFlux/Runtimes/Execution/Nodes/Obsidian/Locomotion" })]
public class IsUserInSeatedMode : FrooxEngine.ProtoFlux.Runtimes.Execution.ValueFunctionNode<ExecutionContext, bool>
{
public readonly SyncRef<INodeObjectOutput<User>> User;

public override Type NodeType => typeof(IsUserInSeatedModeNode);

public IsUserInSeatedModeNode TypedNodeInstance { get; private set; }

public override INode NodeInstance => TypedNodeInstance;

public override int NodeInputCount => base.NodeInputCount + 1;

public override N Instantiate<N>()
{
if (TypedNodeInstance != null)
{
throw new InvalidOperationException("Node has already been instantiated");
}
IsUserInSeatedModeNode isUserInSeatedModeNodeInstance = (TypedNodeInstance = new IsUserInSeatedModeNode());
return isUserInSeatedModeNodeInstance as N;
}

protected override void AssociateInstanceInternal(INode node)
{
if (node is IsUserInSeatedModeNode typedNodeInstance)
{
TypedNodeInstance = typedNodeInstance;
return;
}
throw new ArgumentException("Node instance is not of type " + typeof(IsUserInSeatedModeNode));
}

public override void ClearInstance()
{
TypedNodeInstance = null;
}

protected override ISyncRef GetInputInternal(ref int index)
{
ISyncRef inputInternal = base.GetInputInternal(ref index);
if (inputInternal != null)
{
return inputInternal;
}
if (index == 0)
{
return User;
}
index -= 1;
return null;
}
}
19 changes: 19 additions & 0 deletions ProtoFlux/Users/Status/IsUserInSeatedMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using FrooxEngine;
using ProtoFlux.Core;
using ProtoFlux.Runtimes.Execution;

namespace FrooxEngine.ProtoFlux.Locomotion
{
[ContinuouslyChanging]
[NodeCategory("ProtoFlux/Obsidian/Locomotion")]
public class IsUserInSeatedModeNode : ValueFunctionNode<ExecutionContext, bool>
{
public readonly ObjectInput<User> User;

protected override bool Compute(ExecutionContext context)
{
User user = User.Evaluate(context);
return user == null ? false : user.InputInterface.SeatedMode;
}
}
}

0 comments on commit 8b82a0e

Please sign in to comment.