public IBehaviour Setup(Actor target) { INodeInstance[] behaviourTokens = new INodeInstance[Nodes.Length]; int nodeCount = Nodes.Length; // Map and create tokens for (int i = 0; i < nodeCount; i++) { var node = Nodes[i]; behaviourTokens[i] = node.Create(); } var graphInstance = new GraphInstance(this, behaviourTokens); // Connect the token sockets for (int i = 0; i < nodeCount; i++) { Nodes[i].ConnectToken(graphInstance, behaviourTokens[i]); } // Setup tokens for (int i = 0; i < nodeCount; i++) { Nodes[i].Setup(graphInstance, behaviourTokens[i], target); } return(graphInstance); }
private static IVariableProperty <T> ToVariableProperty <T>( InputDataPort port , [NotNull] GraphInstance instance , [NotNull] GraphDefinition definition , [NotNull] Func <IVariableProperty <T> > createGraphVariable ) where T : unmanaged { var inputPortIndex = (int)port.Port.Index; Assert.IsTrue(inputPortIndex < definition.PortInfoTable.Count); var dataIndex = (int)definition.PortInfoTable[inputPortIndex].DataIndex; Assert.IsTrue(dataIndex < definition.DataPortTable.Count); var nodeIndex = (int)definition.DataPortTable[dataIndex].GetIndex(); Assert.IsTrue(nodeIndex < definition.NodeTable.Count); var dataNode = definition.NodeTable[nodeIndex]; if (dataNode is IVisualVariablePropertyNode propertyNode) { return(propertyNode.GetVariableProperty <T>(dataIndex, instance, definition)); } if (dataNode is IVisualVariablePropertyNode <T> genericPropertyNode) { return(genericPropertyNode.GetVariableProperty(instance, definition)); } if (dataNode is IConstantNode) { return(ToConstVariable <T>(instance, port)); } return(createGraphVariable()); }
public void UpdateLogVariable() { GraphBuilder.VariableHandle varIndex = default; SetupTestGraphDefinitionMultipleFrames((b, inputs) => { var constBool = b.AddNode(new ConstantBool { Value = true }); varIndex = b.BindVariableToDataIndex("a"); var onUpdate = b.AddNode(new OnUpdate()); var log = AddLogNode(b); b.CreateEdge(constBool.ValuePort, onUpdate.Enabled); b.CreateEdge(onUpdate.Output, log.Input); b.BindVariableToInput(varIndex, log.Messages.SelectPort(0)); }, (manager, entity, index) => { LogAssert.NoUnexpectedReceived(); GraphInstance instance = GetGraphInstance(entity); instance.WriteValueToDataSlot(varIndex.DataIndex, 42); }, (manager, entity, index) => { LogAssert.Expect(LogType.Log, "42"); }); }
public override IAnimGraphInstance Instantiate(EntityManager entityManager, Entity owner, PlayableGraph graph, Entity animStateOwner) { var instance = new GraphInstance(entityManager, owner, graph, animStateOwner, this); return(instance); }
public void CustomGraphInstanceTest() { GraphType categoryType = GraphContext.Current.GetGraphType <Category>(); GraphInstance instance = categoryType.Create("1"); Assert.IsNotNull(instance); }
/// <summary> /// Creates a new instance of a Graph to be used in avaiable operations. /// </summary> private static void BuildGraphInstance() { string text = System.IO.File.ReadAllText(@"C:\VS-Workspaces\Projects\TW\Trains\TrainsAPI\CityConnections.txt"); GraphInstance graph = GraphInstance.Instance; graph.BuildGraph(text); }
public override string FriendlyString() { if (GraphInstance != null && !GraphInstance.IsNull()) { return(String.Format("{0}/{1}", GraphName, GraphInstance.Name)); } return(String.Empty); }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.SuccessNode>(BuildImpl, null)); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.SuccessNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.RunOnMainThreadNode>(BuildImpl, Children.ToBuilderNode(instance, definition))); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.RunOnMainThreadNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { } }
/// <summary> /// Deletes an instance from the persistence store /// </summary> /// <param name="instance"></param> protected override void DeleteInstance(GraphInstance instance) { ISession session = sessionFactory.GetCurrentSession(); using (ITransaction tx = session.BeginTransaction()) { session.Delete(instance.Instance.GetType().BaseType.ToString(), instance); tx.Commit(); } }
public int GetRouteDistance(string route) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(); } return(graph.Distance(route)); }
public GraphRouteAlgorithmReturn GetShortestRoute(char startNode, char endNode) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(); } return(graph.ShortestRoute(startNode, endNode)); }
public int GetAllRoutesMaxDistance(char startNode, char endNode, int maxDistance) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(); } return(graph.AllRoutesMaxDistance(startNode, endNode, maxDistance)); }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.HasComponentNode>(BuildImpl, null)); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.HasComponentNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { data.StableTypeHash = StableTypeHash; } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.RepeatForeverNode>(BuildImpl, Children.ToBuilderNode(instance, definition))); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.RepeatForeverNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { data.BreakStates = BreakStates; } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.DelayTimerNode>(BuildImpl, null)); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.DelayTimerNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { @this.TimerSeconds.ToVariablePropertyReadWrite <System.Single>(instance, definition).Allocate(ref blobBuilder, ref data.TimerSeconds, self, builders); } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.PrioritySelectorNode>(BuildImpl, Children.ToBuilderNode(instance, definition))); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.PrioritySelectorNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { blobBuilder.AllocateArray(ref data.Weights, Weights); } }
private static unsafe IVariableProperty <T> ToConstVariable <T>([NotNull] GraphInstance instance, InputDataPort port) where T : unmanaged { T data; void *ptr = &data; var value = instance.ReadValue(port); Value.SetPtrToValue(ptr, value.Type, value); return(new CustomVariableProperty <T> { CustomValue = data }); }
public IEnumerable <GraphRouteAlgorithmReturn> GetAllRoutesNumStops(char startNode, char endNode, int numStops) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(); } return(graph.AllRoutesNumStops(startNode, endNode, numStops)); }
public HttpStatusCode PostGraph(string value) { if (value != null) { GraphInstance graph = GraphInstance.Instance; graph.BuildGraph(value); return(HttpStatusCode.Created); } return(HttpStatusCode.NotAcceptable); }
/// <summary> /// Persists an entity to the persistence store /// </summary> /// <param name="graphInstance"></param> protected override void SaveInstance(GraphInstance graphInstance) { ISession session = sessionFactory.GetCurrentSession(); using (ITransaction tx = session.BeginTransaction()) { session.SaveOrUpdate(graphInstance.Instance.GetType().BaseType.ToString(), graphInstance.Instance); tx.Commit(); } this.OnSave(graphInstance); }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.DelayTimerNode>(BuildImpl, null)); unsafe void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.DelayTimerNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { new DataPortReaderAndWriter(@this.IsLinkedTimerSeconds, @this.InputTimerSeconds, @this.OutputTimerSeconds).ToVariantReaderAndWriter <System.Single>(instance, definition).Allocate(ref blobBuilder, ref data.TimerSeconds, self, builders); } } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.ModifyPriorityNode>(BuildImpl, null)); void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.ModifyPriorityNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { data.PrioritySelectorIndex = PrioritySelectorIndex; data.WeightIndex = WeightIndex; data.AddWeight = AddWeight; } }
public int GetDistance(string route) { GraphInstance graph = GraphInstance.Instance; if (graph.IsGraphBuilded()) { return(graph.Distance(route)); } else { throw new GraphNotBuildException(); } }
public IEnumerable <GraphRouteAlgorithmReturn> GetAllRoutes(char startNode, char endNode, int maxStops) { GraphInstance graph = GraphInstance.Instance; if (graph.IsGraphBuilded()) { return(graph.AllRoutes(startNode, endNode, maxStops)); } else { throw new GraphNotBuildException(); } }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <EntitiesBT.Nodes.TimerNode>(BuildImpl, Children.ToBuilderNode(instance, definition))); unsafe void BuildImpl(BlobBuilder blobBuilder, ref EntitiesBT.Nodes.TimerNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { new DataPortReaderAndWriter(@this.IsLinkedCountdownSeconds, @this.InputCountdownSeconds, @this.OutputCountdownSeconds).ToVariantReaderAndWriter <System.Single>(instance, definition).Allocate(ref blobBuilder, ref data.CountdownSeconds, self, builders); data.BreakReturnState = BreakReturnState; } } }
public GraphRouteAlgorithmReturn GetShortestRoute(char startNode, char endNode) { GraphInstance graph = GraphInstance.Instance; if (graph.IsGraphBuilded()) { return(graph.ShortestRoute(startNode, endNode)); } else { throw new GraphNotBuildException(); } }
public int NumberOfTripsMaxStops(string inputRoutes, string route, int maxStops) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(inputRoutes); } var nodes = route.ToCharArray(); var graphResult = graph.AllRoutesMaxStops(nodes[0], nodes[1], maxStops); return(graphResult.Count); }
public int ShortestRoute(string inputRoutes, string route) { GraphInstance graph = GraphInstance.Instance; if (!graph.IsGraphBuilded()) { BuildGraphInstance(inputRoutes); } var nodes = route.ToCharArray(); var graphResult = graph.ShortestRoute(nodes[0], nodes[1]); return(graphResult.Value); }
public INodeDataBuilder GetBuilder(GraphInstance instance, GraphDefinition definition) { var @this = this; return(new VisualBuilder <TimerNode>(BuildImpl, Child.ToBuilderNode(instance, definition))); void BuildImpl(BlobBuilder blobBuilder, ref TimerNode data, INodeDataBuilder self, ITreeNode <INodeDataBuilder>[] builders) { data.BreakReturnState = @this.BreakReturnState; @this.CountdownSeconds.ToVariablePropertyReadWrite <float>(instance, definition) .Allocate(ref blobBuilder, ref data.CountdownSeconds, self, builders) ; } }
public void RaiseOnSave(GraphInstance instance) { base.OnSave(instance); }
public InstanceTracker(object instance) { this.instance = new GraphInstance(instance); }
protected override void SaveInstance(GraphInstance graphInstance) { throw new NotImplementedException(); }