本文整理汇总了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;
}