Example #1
0
        /// <summary>
        /// Appends a tag trait constraint to the existing tag trait expression.
        /// </summary>
        /// <remarks>
        /// An "and" clause matches all intervals from the motion library
        /// that contain the trait passed as argument and any constraint
        /// that has been previously specified as part of the tag trait expression.
        /// <example>
        /// <code>
        /// synthesizer.Query.Where(
        ///     Locomotion.Default).And(Idle.Default));
        /// </code>
        /// </example>
        /// </remarks>
        /// <seealso cref="MotionSynthesizer.Query"/>
        public QueryTraitExpression And <T>(T value) where T : struct
        {
            var traitIndex = binary.Ref.GetTraitIndex(value);

            Insert(Constraint.Create(traitIndex));

            return(this);
        }
Example #2
0
        /// <summary>
        /// Introduces a marker trait expression that selects based on an "at" clause.
        /// </summary>
        /// <remarks>
        /// An "at" clause matches all single poses from the motion library
        /// that contain the marker type passed as argument.
        /// <example>
        /// <code>
        /// synthesizer.Query.At<Loop>();
        /// </code>
        /// </example>
        /// </remarks>
        /// <seealso cref="MotionSynthesizer.Query"/>
        public QueryMarkerExpression At <T>() where T : struct
        {
            constraints.Add(
                Constraint.Create(
                    GetTypeIndex <T>(), Type.At));

            return(this);
        }