Exemplo n.º 1
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            Type   targetType   = InputPins[0].SourceNode == null ? ((CKlaxScriptTypeInfo)InputPins[0].Literal).Type : ((CKlaxScriptTypeInfo)inParameters[0]).Type;
            object targetObject = inParameters[1];

            if (targetObject == null)
            {
                outReturn.Add(null);
                outReturn.Add(false);
                return(null);
            }

            if (targetType.IsInstanceOfType(targetObject))
            {
                outReturn.Add(targetObject);
                //outReturn.Add(Convert.ChangeType(targetObject, targetType));
                outReturn.Add(true);
                return(null);
            }
            else
            {
                outReturn.Add(null);
                outReturn.Add(false);
                return(null);
            }
        }
Exemplo n.º 2
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            object newValue = InputPins[0].SourceNode != null ? inParameters[0] : InputPins[0].Literal;

            SourceVariable.Value = newValue;
            outReturn.Add(newValue);

            return(OutExecutionPins[0]);
        }
Exemplo n.º 3
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            if (context.calledPin == null)
            {
                //Advance loop
                m_currentIndex++;
                if (m_currentIndex >= m_currentList.Count)
                {
                    //Loop finished
                    m_currentIndex = -1;
                    m_currentList  = null;
                    outReturn.Add(-1);
                    outReturn.Add(OutputPins[1].Type.GetDefaultValue());
                    return(OutExecutionPins[1]);
                }
                else
                {
                    //Loop continues
                    context.graph.AddReturnPointNode(this);
                    outReturn.Add(m_currentIndex);
                    outReturn.Add(m_currentList[m_currentIndex]);
                    return(OutExecutionPins[0]);
                }
            }
            else
            {
                if (context.calledPin == InExecutionPins[0])
                {
                    //Start new loop
                    m_currentIndex = 0;
                    m_currentList  = inParameters[0] != null ? (IList)inParameters[0] : (IList)InputPins[0].Literal;

                    context.graph.AddReturnPointNode(this);

                    outReturn.Add(m_currentIndex);
                    outReturn.Add(m_currentList[m_currentIndex]);
                    return(OutExecutionPins[0]);
                }
                else if (m_currentIndex != -1)
                {
                    //Break loop
                    m_currentIndex = -1;
                    m_currentList  = null;

                    context.graph.RemoveReturnPointNode(this);

                    outReturn.Add(-1);
                    outReturn.Add(OutputPins[1].Type.GetDefaultValue());
                    return(OutExecutionPins[1]);
                }
            }

            return(null);
        }
Exemplo n.º 4
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            if (context.graph.ScriptableObject.Outer is CEntity entity)
            {
                outReturn.Add(entity);
            }
            else
            {
                outReturn.Add(null);
            }

            return(null);
        }
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            for (int i = 0; i < InputPins.Count; i++)
            {
                if (InputPins[i].SourceNode == null)
                {
                    inParameters[i] = InputPins[i].Literal;
                }
            }

            if (inParameters[0] == null)
            {
                LogUtility.Log("Interface function not executed target was null");
                return(OutExecutionPins[0]);
            }

            CEntity targetEntity = inParameters[0] as CEntity;

            if (targetEntity == null)
            {
                LogUtility.Log("Interface function not executed target is not an entity");
                return(OutExecutionPins[0]);
            }

            CInterfaceFunctionGraph targetGraph = null;

            foreach (var interfaceGraph in targetEntity.KlaxScriptObject.InterfaceGraphs)
            {
                if (interfaceGraph.InterfaceFunctionGuid == TargetFunctionGuid)
                {
                    targetGraph = interfaceGraph;
                    break;
                }
            }

            if (targetGraph == null)
            {
                LogUtility.Log("Interface function not executed target does not implemented the interface function. Target was {0}", targetEntity.Name);
                return(OutExecutionPins[0]);
            }

            List <object> functionParameters = new List <object>(inParameters.Count - 1);

            for (int i = 1; i < inParameters.Count; i++)
            {
                functionParameters.Add(inParameters[i]);
            }

            targetGraph.Execute(functionParameters, outReturn);
            return(OutExecutionPins[0]);
        }
Exemplo n.º 6
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            if (inParameters.Count != OutputPins.Count)
            {
                throw new Exception($"Function entry parameters had a different size than expected. Size was {inParameters.Count} expected was {OutputPins.Count}");
            }

            foreach (object inParameter in inParameters)
            {
                outReturn.Add(inParameter);
            }

            return(OutExecutionPins[0]);
        }
Exemplo n.º 7
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            object instance = inParameters[1] ?? InputPins[1].Literal;

            if (instance != null)
            {
                for (int i = 1, count = OutExecutionPins.Count; i < count; i++)
                {
                    CSwitchExecutionPin pin = (CSwitchExecutionPin)OutExecutionPins[i];
                    if (instance.Equals(pin.Value))
                    {
                        return(OutExecutionPins[i]);
                    }
                }
            }

            return(OutExecutionPins[0]);
        }
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            if (m_targetFunction == null)
            {
                LogUtility.Log("Function {0} not executed as the target function was null, make sure to resolve the function reference before", Name);
                return(OutExecutionPins[0]);
            }

            for (int i = 0; i < InputPins.Count; i++)
            {
                if (InputPins[i].SourceNode == null)
                {
                    inParameters[i] = InputPins[i].Literal;
                }
            }

            m_targetFunction.Execute(inParameters, outReturn);
            return(OutExecutionPins[0]);
        }
Exemplo n.º 9
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            // Validate that the parameters are correct
            if (inParameters.Count != OutputPins.Count)
            {
                throw new Exception("Incoming parameters of event node do not match outgoing");
            }

            for (var i = 0; i < inParameters.Count; i++)
            {
                object inParameter = inParameters[i];
                if (inParameter.GetType() != OutputPins[i].Type)
                {
                    throw new Exception("Incoming parameters of event node do not match outgoing");
                }
                outReturn.Add(inParameter);
            }

            return(OutExecutionPins[0]);
        }
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            if (context.graph.ScriptableObject.Outer is CEntity entity)
            {
                CEntityComponent outComponent = entity.GetComponentByGuid(ComponentTargetGuid);
#if DEBUG
                if (outComponent == null || outComponent.GetType() != OutputPins[0].Type)
                {
                    LogUtility.Log("Receive component node failed. The given component did not exist or was of a different type than expected");
                    outReturn.Add(null);
                    return(null);
                }
#endif
                outReturn.Add(outComponent);
            }
            else
            {
                outReturn.Add(null);
            }

            return(null);
        }
Exemplo n.º 11
0
 public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
 {
     outReturn.Add(SourceVariable.Value);
     return(null);
 }
Exemplo n.º 12
0
        public override CExecutionPin Execute(CNodeExecutionContext context, List <object> inParameters, List <object> outReturn)
        {
            bool bCondition = InputPins[0].SourceNode == null ? (bool)InputPins[0].Literal : (bool)inParameters[0];

            return(bCondition ? OutExecutionPins[0] : OutExecutionPins[1]);
        }