Esempio n. 1
0
            public void UpdateLowHz(NewDummyPolyManager manager)
            {
                var curBladePos = GetCurrentBladePos(manager);

                curBladePos.Opacity = Opacity;



                if (Keyframes.Count > 0)
                {
                    //var posLowHzToLive = (CurrentPosLive.End - CurrentPos.End);
                    //var rotLowHzToLive = Matrix.CreateFromQuaternion(XnaExtensions.GetQuatOfBladePosDelta(CurrentPos, CurrentPosLive));
                    //var sampledFrames = GetPosFrames(rotLowHzToLive, posLowHzToLive, addTheShit: false);



                    PushCurrentFrame();

                    //BakeKeyframesToLiveMod(sampledFrames);

                    CurrentPos = curBladePos;
                }
                else
                {
                    CurrentPos = curBladePos;

                    PushCurrentFrame();
                }
            }
Esempio n. 2
0
            public void UpdateLive(NewDummyPolyManager manager)
            {
                IsAlive = CheckIfAliveFunc?.Invoke() ?? true;

                var curBladePos = GetCurrentBladePos(manager);

                curBladePos.Opacity = Opacity;

                CurrentPosLive = curBladePos;
            }
Esempio n. 3
0
            private void BakeKeyframesToLiveMod(List <DummyPolyBladePos> positions)
            {
                var posLowHzToLive = (CurrentPosLive.End - CurrentPos.End);
                var rotLowHzToLive = Matrix.CreateFromQuaternion(XnaExtensions.GetQuatOfBladePosDelta(CurrentPos, CurrentPosLive));

                var asList = Keyframes.ToList();

                for (int i = 0; i < asList.Count - 1; i++)
                {
                    DummyPolyBladePos bakedPos = new DummyPolyBladePos();

                    if (positions.Count < asList.Count)
                    {
                        bakedPos = positions[i];
                    }
                    else
                    {
                        if (i < positions.Count - 1)
                        {
                            bakedPos = positions[i + 1];
                        }
                        else
                        {
                            bakedPos = CurrentPos;
                        }
                    }

                    var mod        = KeyframeMods[i + 1];
                    var finalEnd   = bakedPos.End;
                    var finalStart = bakedPos.Start;


                    //var dir = Vector3.Transform(asList[i].Start - asList[i].End, rotLowHzToLive);
                    //var finalEnd = asList[i].End + posLowHzToLive;
                    //var finalStart = finalEnd + (dir);

                    //UN - constrict
                    (finalStart, finalEnd) = UndoConstrict(finalStart, finalEnd, mod.Constrict);

                    //UN - Lerp
                    finalStart = XnaExtensions.GetLerpValARequiredForResult(CurrentPos.Start, finalStart, mod.DistanceLerp);
                    finalEnd   = XnaExtensions.GetLerpValARequiredForResult(CurrentPos.End, finalEnd, mod.DistanceLerp);



                    asList[i] = new DummyPolyBladePos()
                    {
                        Start   = finalStart,
                        End     = finalEnd,
                        Opacity = Opacity * asList[i].Opacity,
                    };
                }
                Keyframes = new Queue <DummyPolyBladePos>(asList);
            }