public static void DestroyOptimizers() { _characters.Clear(); _playerCharacter = null; _playerObject = null; inHScene = false; }
private static void DynamicBoneOptimize(AIChara.ChaControl character) { if (character == null) { return; } VisibilityMask visibilityMask = VisibilityMask.None; bool bodyVisibleInRange = false; if (character.IsVisibleInCamera) { if (CheckDistance(character.cmpBoneBody.transform.position, _genitalRangeSquared)) { visibilityMask |= VisibilityMask.VaginaMask; } if ((visibilityMask != 0) || CheckDistance(character.cmpBoneBody.transform.position, _hairRangeSquared)) { visibilityMask |= VisibilityMask.HairMask; } if ((visibilityMask != 0) || CheckDistance(character.cmpBoneBody.transform.position, _clothingRangeSquared)) { visibilityMask |= VisibilityMask.ClothingMask; } if (CheckDistance(character.cmpBoneBody.transform.position, _bodyRangeSquared)) { bodyVisibleInRange = true; } } SetStateDynamicBones(character, character.IsVisibleInCamera, visibilityMask, bodyVisibleInRange, true); }
public static void RemoveCharacter(AIChara.ChaControl character) { if (character == null || _characters == null || !_characters.Exists(x => x.chaFile.charaFileName == character.chaFile.charaFileName)) { return; } _characters.Remove(character); }
public static void AddCharacter(AIChara.ChaControl character) { if (character == null || character.isPlayer || (_characters != null && _characters.Exists(x => x.chaFile.charaFileName == character.chaFile.charaFileName))) { return; } _characters.Add(character); UpdateAnimatorCulling(_cullingMode); }
private void MakerAPI_Enter(object sender, RegisterCustomControlsEvent e) { cc = MakerAPI.GetCharacterControl(); blinkFlag = cc.GetEyesBlinkFlag(); //Logger.LogDebug("on enter: " + blinkFlag); sidebarToggle = e.AddSidebarControl(new SidebarToggle("Disable eye blink", true, this)); sidebarToggle.Value = blinkFlag; sidebarToggle.ValueChanged.Subscribe(b => BlinkToggle()); //need to fix so BlinkToggle doesn't get called when control is created }
private static void DynamicBoneForce(AIChara.ChaControl character, bool onState) { if (character == null) { return; } if (onState) { SetStateDynamicBones(character, true, VisibilityMask.AllMask, true, true); } else { SetStateDynamicBones(character, false, VisibilityMask.None, false, true); } }
private static void BuildCharacterList() { _characters = new List <AIChara.ChaControl>(); AIChara.ChaControl[] allCharacters = GameObject.FindObjectsOfType <AIChara.ChaControl>(); foreach (var character in allCharacters) { if (!character.isPlayer) { _characters.Add(character); } else { _playerCharacter = character; } } }
public static void H_Lookat_dan_LateUpdate(H_Lookat_dan __instance, AIChara.ChaControl ___male) { if (loadingCharacter || !inHScene) { return; } int maleNum = 0; if (___male != null && ___male.chaID != 99) { if (!b2MAnimation) { return; } maleNum = 1; } if (!bDansFound[maleNum]) { return; } danPoints[maleNum].danStart.localScale = new Vector3(_dan_girth[maleNum].Value, _dan_girth[maleNum].Value, 1); danPoints[maleNum].danTop.localScale = new Vector3(_dan_sack_size[maleNum].Value, _dan_sack_size[maleNum].Value, _dan_sack_size[maleNum].Value); if (!bHPointsFound[targetF[maleNum]]) { return; } if (_kokan_adjust.Value && adjustFAnimation && !hScene.NowChangeAnim) { AdjustFemaleAnimation(); } if (changingAnimations[maleNum] && !hScene.NowChangeAnim) { SetupNewDanTarget(__instance, maleNum); } SetDanTarget(maleNum); }
public static void H_Lookat_dan_LateUpdate(H_Lookat_dan __instance, AIChara.ChaControl ___male) { if (!inHScene) { return; } int maleNum = 0; if (___male != null && ___male.name.Contains("002")) { if (!b2MAnimation) { return; } maleNum = 1; } if (!bDansFound[maleNum]) { return; } danPoints[maleNum].danStart.localScale = new Vector3(_dan_girth[maleNum].Value, _dan_girth[maleNum].Value, 1); danPoints[maleNum].danTop.localScale = new Vector3(_dan_sack_size[maleNum].Value, _dan_sack_size[maleNum].Value, _dan_sack_size[maleNum].Value); if (!bHPointsFound[targetF[maleNum]]) { return; } if (changingAnimations[maleNum] && !hScene.NowChangeAnim) { SetupNewDanTarget(__instance, maleNum); SetDanTarget(maleNum, false); } else { SetDanTarget(maleNum, true); } }
private static void H_Lookat_dan_ChangeTarget(H_Lookat_dan __instance, System.Text.StringBuilder ___assetName, AIChara.ChaControl ___male) { if (loadingCharacter || !inHScene || __instance == null) { return; } int maleNum = 0; if (___male != null && ___male.chaID != 99) { maleNum = 1; } if (!bDansFound[maleNum]) { return; } b2MAnimation = false; if (___assetName != null && ___assetName.Length != 0 && ___assetName.ToString().Contains("m2f")) { b2MAnimation = true; } if (maleNum == 1 && b2MAnimation == false) { return; } targetF[maleNum] = __instance.numFemale; if (targetF[maleNum] >= constrainPoints.Length) { targetF[maleNum] = 0; } if (!bHPointsFound[targetF[maleNum]]) { return; } SetupNewDanTarget(__instance, maleNum); SetDanTarget(maleNum); }
private static void SetStateDynamicBones(AIChara.ChaControl character, bool isVisible, VisibilityMask visibilityMask, bool isVisibleInBodyRange = false, bool setIllusionColliders = false) { if (AIMainGameOptimizations._IKSolverChecks.Value) { if (character.fullBodyIK.enabled != isVisible) { character.fullBodyIK.enabled = isVisible; } } if (AIMainGameOptimizations._LookControllerChecks.Value) { if (character.neckLookCtrl.enabled != isVisible) { character.neckLookCtrl.enabled = isVisible; } if (character.eyeLookCtrl.enabled != isVisible) { character.eyeLookCtrl.enabled = isVisible; } } foreach (var dynamicBone in character.GetComponentsInChildren <DynamicBone>(true)) { if (!dynamicBone) { continue; } bool bIsVisibleInRange = isVisible; if (dynamicBone.m_Root != null) { if (dynamicBone.m_Root.name.Contains("V****a")) { bIsVisibleInRange = (visibilityMask & VisibilityMask.VaginaMask) == VisibilityMask.VaginaMask; } else if (dynamicBone.m_Root.name.Contains("hair")) { bIsVisibleInRange = (visibilityMask & VisibilityMask.HairMask) == VisibilityMask.HairMask; } else { bIsVisibleInRange = (visibilityMask & VisibilityMask.ClothingMask) == VisibilityMask.ClothingMask; } } if (dynamicBone.enabled != bIsVisibleInRange) { dynamicBone.enabled = bIsVisibleInRange; } } foreach (var dynamicBoneCollider in character.GetComponentsInChildren <DynamicBoneCollider>(true)) { if (!dynamicBoneCollider) { continue; } if (dynamicBoneCollider.enabled != isVisibleInBodyRange) { dynamicBoneCollider.enabled = isVisibleInBodyRange; } } if (!setIllusionColliders) { return; } foreach (var dynamicBoneV2 in character.GetComponentsInChildren <DynamicBone_Ver02>(true)) { if (!dynamicBoneV2) { continue; } if (dynamicBoneV2.enabled != isVisibleInBodyRange) { dynamicBoneV2.enabled = isVisibleInBodyRange; } } }