Beispiel #1
0
        public static void char_ik_active(Actor chara, ActorData param)
        {
            // param = 0/1 flag in tuple (body, right leg, left leg, right arm, left arm)
            var curIk = chara.get_IK_active();

            foreach (var i in Enumerable.Range(0, 5))
            {
                if (param.ikActive[i] != curIk[i])
                {
                    chara.set_IK_active(i, param.ikActive[i]);
                }
            }
        }
Beispiel #2
0
        public NEOActorData(Actor a)
        {
            visible = a.Visible;
            if (visible)
            {
                position     = a.Position;
                rotation     = a.Rotation;
                scale        = a.Scale;
                animeSpeed   = a.AnimeSpeed;
                animePattern = a.AnimePattern;

                forceLoop = a.AnimationForceLoop;

                accessoryStatus = a.Accessories;

                faceRedness = a.FaceRedness;
                son         = a.Son;

                anim = a.Animation;

                animeOption = new AnimeOption_s {
                    height = a.Height, breast = a.Breast
                };

                cloth = a.Clothes;

                juice          = a.Juice;
                nippleHardness = a.NippleStand;

                simple      = a.Simple;
                simpleColor = a.SimpleColor;

                eyeLookPattern = a.Gaze;
                eyeLookPos     = a.GazeTarget;
                neckPattern    = a.LookNeckPattern;

                neck           = a.LookNeckFull2;
                eyebrowPattern = a.EyebrowPattern;
                eyePattern     = a.EyePattern;
                eyesOpen       = a.EyesOpenLevel;
                eyeAngles      = a.EyeAngles;
                blinking       = a.EyesBlink;
                mouthPattern   = a.MouthPattern;
                mouthOpen      = a.MouthOpenLevel;
                lipSync        = a.LipSync;
                handMotions    = a.HandPattern;
                kinematicType  = a.Kinematic;
                fkActive       = a.get_FK_active();
                ikActive       = a.get_IK_active();

                if (kinematicType == KinematicMode.FK || kinematicType == KinematicMode.IKFK)
                {
                    fk = a.export_fk_bone_info();
                }
                if (kinematicType == KinematicMode.IK || kinematicType == KinematicMode.IKFK)
                {
                    ik = a.export_ik_target_info();
                }

                voiceList   = a.VoiceList;
                voiceRepeat = a.VoiceRepeat;

                // External plugin data
                try
                {
                    if (kinematicType == KinematicMode.IK)
                    {
                        advIKData = new AdvIKData(a);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }