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]); } } }
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); } } }