当前位置: 首页>>代码示例>>C#>>正文


C# VRage.AddNode方法代码示例

本文整理汇总了C#中VRage.AddNode方法的典型用法代码示例。如果您正苦于以下问题:C# VRage.AddNode方法的具体用法?C# VRage.AddNode怎么用?C# VRage.AddNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VRage的用法示例。


在下文中一共展示了VRage.AddNode方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: InitLayerNodes

        // Initialize state machine of one layer.
        private static bool InitLayerNodes(VRage.Animations.MyAnimationStateMachine layer, string stateMachineName, MyAnimationControllerDefinition animControllerDefinition,
            VRage.Animations.MyAnimationController animationController, string currentNodeNamePrefix = "")
        {
            var objBuilderStateMachine = animControllerDefinition.StateMachines.FirstOrDefault(x => x.Name == stateMachineName);
            if (objBuilderStateMachine == null)
            {
                Debug.Fail("Animation state machine " + stateMachineName + " was not found.");
                return false;
            }

            bool result = true;
            // 1st step: generate nodes
            if (objBuilderStateMachine.Nodes != null)
            foreach (var objBuilderNode in objBuilderStateMachine.Nodes)
            {
                string absoluteNodeName = currentNodeNamePrefix + objBuilderNode.Name;
                if (objBuilderNode.StateMachineName != null)
                {
                    // embedded state machine, copy its nodes
                    if (!InitLayerNodes(layer, objBuilderNode.StateMachineName, animControllerDefinition, animationController, absoluteNodeName + "/"))
                        result = false;
                }
                else
                {
                    if (objBuilderNode.AnimationTree == null)
                    {
                        // no animation tree, just skip
                        continue;
                    }

                    var smNode = new VRage.Animations.MyAnimationStateMachineNode(absoluteNodeName);
                    layer.AddNode(smNode);

                    var smNodeAnimTree = InitNodeAnimationTree(objBuilderNode.AnimationTree.Child);
                    smNode.RootAnimationNode = smNodeAnimTree;
                }
            }

            // 2nd step: generate transitions
            if (objBuilderStateMachine.Transitions != null)
            foreach (var objBuilderTransition in objBuilderStateMachine.Transitions)
            {
                int conditionConjunctionIndex = 0;
                do
                {
                    // generate transition for each condition conjunction
                    var transition = layer.AddTransition(objBuilderTransition.From, objBuilderTransition.To,
                        new VRage.Animations.MyAnimationStateMachineTransition()) as
                        VRage.Animations.MyAnimationStateMachineTransition;
                    // if ok, fill in conditions
                    if (transition != null)
                    {
                        transition.Name = MyStringId.GetOrCompute(objBuilderTransition.Name);
                        transition.TransitionTimeInSec = objBuilderTransition.TimeInSec;
                        transition.Sync = objBuilderTransition.Sync;
                        if (objBuilderTransition.Conditions != null &&
                            objBuilderTransition.Conditions[conditionConjunctionIndex] != null)
                        {
                            var conjunctionOfConditions =
                                objBuilderTransition.Conditions[conditionConjunctionIndex].Conditions;
                            foreach (var objBuilderCondition in conjunctionOfConditions)
                            {
                                var condition = ParseOneCondition(animationController, objBuilderCondition);
                                if (condition != null)
                                    transition.Conditions.Add(condition);
                            }
                        }
                    }
                    conditionConjunctionIndex++;
                } while (objBuilderTransition.Conditions != null &&
                         conditionConjunctionIndex < objBuilderTransition.Conditions.Length);
            }

            return result;
        }
开发者ID:stanhebben,项目名称:SpaceEngineers,代码行数:76,代码来源:MyAnimationControllerComponent.LoadFromDef.cs


注:本文中的VRage.AddNode方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。