示例#1
0
        private void AddKeyState()
        {
            EffectStateRatioSet lastset = manager.Effects[itemindex].Sets.Values[manager.Effects[itemindex].Sets.Count - 1];
            int lastframe = lastset.EndFrame;

            if (lastframe < keyindex)
            {
                var newset = new EffectStateRatioSet
                {
                    StartState = lastset.EndState,
                    StartFrame = lastset.EndFrame,
                    EndState   = (EffectStateStructure)lastset.EndState.Clone(),
                    EndFrame   = keyindex
                };
                foreach (RatioType type in Effect2D.Utility.RatioTypeArray)
                {
                    newset[type] = new ConstantRatioMaker();
                }
                manager.Effects[itemindex].Sets.Add(newset.StartFrame, newset);
                islast = true;
            }
            else
            {
                IEffect effect = manager.Effects[itemindex];
                var     set    = GetSetFromFrameIndex(effect, keyindex);
                setindex         = effect.Sets.IndexOfValue(set);
                previousset      = (EffectStateRatioSet)set.CloneExceptState();
                twoframeinserted = set.StartFrame + 1 != keyindex;
                if (set != null)
                {
                    effect.Update(keyindex - 1, new EffectStateStructure());
                    var temp1 = (EffectStateStructure)effect.CurrentState.Clone();
                    effect.Update(keyindex, new EffectStateStructure());
                    var temp2   = (EffectStateStructure)effect.CurrentState.Clone();
                    var newset1 = new EffectStateRatioSet();
                    var newset2 = new EffectStateRatioSet();
                    foreach (RatioType type in Effect2D.Utility.RatioTypeArray)
                    {
                        if (set[type] is LinearRatioMaker)
                        {
                            newset2[type] = new LinearRatioMaker();
                        }
                        else if (set[type] is ConstantRatioMaker)
                        {
                            newset2[type] = new ConstantRatioMaker();
                        }
                        else if (set[type] is BezierRatioMaker)
                        {
                            var brm = set[type] as BezierRatioMaker;
                            GetDevidedBezierFromX(brm.Analyzer.BCPS, (float)(keyindex - 1 - set.StartFrame) / (set.EndFrame - set.StartFrame), out BezierControlPoint[] bcps1, out BezierControlPoint[] bcps2);
示例#2
0
        /// <summary>
        /// クローンメソッド
        /// </summary>
        /// <returns></returns>
        public object Clone()
        {
            var ret = new LinearRatioMaker();

            return(ret);
        }