public static void char_fk_active(Actor chara, ActorData param) { // param = 0/1 flag in tuple (hair, neck, Breast, body, right hand, left hand, skirt) bool[] curFk = chara.get_FK_active(); foreach (var i in Enumerable.Range(0, 7)) { if (param.fkActive[i] != curFk[i]) { chara.set_FK_active(i, param.fkActive[i]); } } }
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); } } }