예제 #1
0
        public static Option <T> FindAnimationNode <T>(this IAnimationGraph graph, string name)
            where T : AnimationNode
        {
            Ensure.That(graph, nameof(graph)).IsNotNull();

            return(graph.FindAnimationNode(name).OfType <T>().HeadOrNone());
        }
예제 #2
0
        public Option <IAnimationGraph> TryCreate(
            string name, IAnimationGraph parent, AnimationGraphContext context)
        {
            Ensure.That(parent, nameof(parent)).IsNotNull();

            return(parent.FindAnimationNode <AnimationRootNode>(name).Bind(node =>
            {
                var path = string.IsNullOrEmpty(parent.Key) ? name : string.Join("/", parent.Key, name);

                return TryCreate(path, node, context);
            }));
        }
예제 #3
0
파일: Trigger.cs 프로젝트: kitfka/AlleyCat
        public new static Option <Trigger> TryCreate(
            string name, IAnimationGraph parent, AnimationGraphContext context)
        {
            Ensure.That(parent, nameof(parent)).IsNotNull();

            //TODO Resolve in an automatic fashion when it becomes possible to manipulate node connections from code.
            var animationNodeKey = name + " Animation";

            return((
                       from oneShot in parent.FindAnimationNode <AnimationNodeOneShot>(name)
                       from animation in parent.FindAnimationNode <AnimationNodeAnimation>(animationNodeKey)
                       select(oneShot, animation)).Map(t =>
            {
                var key = string.Join(":", parent.Key, name);
                var parameter = string.Join("/",
                                            new[] { "parameters", parent.Key, name, "scale" }.Where(v => v.Length > 0));

                return new Trigger(key, parameter, t.oneShot, t.animation, context);
            }));
        }
예제 #4
0
 public Option <AnimationNode> FindAnimationNode(string name) => _graph.FindAnimationNode(name);