private void LateUpdate() { this.BlinkCtrl.CalcBlink(); float blinkRate; if (this.BlinkCtrl.GetFixedFlags() == (byte)0) { blinkRate = this.BlinkCtrl.GetOpenRate(); if (Object.op_Implicit((Object)this.EyeLookController)) { float angleHrate = this.EyeLookController.eyeLookScript.GetAngleHRate(EYE_LR.EYE_L); float angleVrate = this.EyeLookController.eyeLookScript.GetAngleVRate(); float num1 = -Mathf.Max(this.EyeLookDownCorrect, this.EyeLookSideCorrect); float num2 = 1f - this.EyeLookUpCorrect; if ((double)num2 > (double)this.EyesCtrl.OpenMax) { num2 = this.EyesCtrl.OpenMax; } float num3 = Mathf.Clamp(((double)angleVrate <= 0.0 ? -MathfEx.LerpAccel(0.0f, this.EyeLookDownCorrect, -angleVrate) : MathfEx.LerpAccel(0.0f, this.EyeLookUpCorrect, angleVrate)) - MathfEx.LerpAccel(0.0f, this.EyeLookSideCorrect, angleHrate), num1, this.EyeLookUpCorrect) * (float)(1.0 - (1.0 - (double)this.EyesCtrl.OpenMax)); this.EyesCtrl.SetCorrectOpenMax(num2 + num3); } } else { blinkRate = -1f; } this.EyebrowCtrl.CalcBlend(blinkRate); this.EyesCtrl.CalcBlend(blinkRate); this.MouthCtrl.CalcBlend(this.voiceValue); }
private void GenerateHole() { //Find the last point var lastPoint = points.Last(); //Choose n random points around this point var samplePoints = new List<Vector3>(); //Find offset point var offset = MathfEx.OffsetPointByAngleXZ(Vector3.zero, Random.value * 360f, options.offsetRadius * lastPoint.radius, transform.rotation); for(int i = 0; i < options.holeSampleCount; i++) { //Choose angle and distance float randAngle = Random.Range(0f, Mathf.PI * 2); float randDistance = Random.Range(0f, options.holeScaleFactor * (lastPoint.radius / 2f)); //Add this point samplePoints.Add(MathfEx.OffsetPointByAngleXZ(offset + lastPoint.position, randAngle, randDistance, transform.rotation, true)); } //Find the convex hull of these points holeHull = new Hull(samplePoints); //Spawn the flag this.SpawnFlag(); //Generate player position playerPosition = this.GeneratePlayerPosition(); }
internal static void MakerSettingChangePreview(ChaControl chaCtrl, AccTriggerInfo Part) { AccStateSyncController pluginCtrl = GetController(chaCtrl); if (MathfEx.RangeEqualOn(0, Part.Kind, 7)) { int state = chaCtrl.fileStatus.clothesState[Part.Kind]; bool vis = Part.State[state]; Part.Group = ""; chaCtrl.SetAccessoryState(Part.Slot, vis); } else if (Part.Kind >= 9) { if (Part.Kind == 9) { List <ChaFileAccessory.PartsInfo> PartsInfo = MoreAccessories_Support.GetAccessoriesInfos(chaCtrl); Part.Group = PartsInfo[Part.Slot].parentKey; } else { Part.Group = "custom_" + (Part.Kind - 9).ToString(); } bool vis = true; if (pluginCtrl.VirtualGroupStates.ContainsKey(Part.Group)) { vis = pluginCtrl.VirtualGroupStates[Part.Group] ? Part.State[0] : Part.State[3]; } chaCtrl.SetAccessoryState(Part.Slot, vis); } }
// Use this for initialization void Start() { this.Dissolve(); button.OnCommand = () => { if (!lampsAreOn) { for (int i = 0; i < lamps.Count; i++) { lamps[i].material.color = lampColors[MathfEx.Repeat(i, lamps.Count)]; } lampsAreOn = true; } else { for (int i = 0; i < lamps.Count; i++) { lamps[i].material.color = Color.white; } lampsAreOn = false; } }; lamps[0].AddComponent <MyComponent>().Dissolve((GameObject go) => Debug.Log(string.Format("*** {0} is dissolved.", go.name))); lamps[1].AddComponent <MyComponent>(_.a((GameObject go) => Debug.Log(string.Format("*** {0} is dissolved.", go.name)))); }
private void SetPage(int _page) { StudioNode studioNode = (StudioNode)null; if (this.dicPage.TryGetValue(SceneLoadScene.page, out studioNode)) { studioNode.select = false; } _page = Mathf.Clamp(_page, 0, this.pageNum - 1); int num = 12 * _page; for (int index = 0; index < 12; ++index) { int n = num + index; if (!MathfEx.RangeEqualOn <int>(0, n, this.thumbnailNum - 1)) { this.buttonThumbnail[index].interactable = false; } else { this.buttonThumbnail[index].texture = (Texture)PngAssist.LoadTexture(this.listPath[n]); this.buttonThumbnail[index].interactable = true; } } SceneLoadScene.page = _page; if (this.dicPage.TryGetValue(SceneLoadScene.page, out studioNode)) { studioNode.select = true; } Resources.UnloadUnusedAssets(); GC.Collect(); }
public override void Do() { base.Do(); int num1 = 1; string[] args1 = this.args; int index1 = num1; int num2 = index1 + 1; float shape = float.Parse(args1[index1]); Dictionary <string, Vector3> v3Dic = this.scenario.commandController.V3Dic; Dictionary <string, Vector3> dictionary1 = v3Dic; string[] args2 = this.args; int index2 = num2; int num3 = index2 + 1; string index3 = args2[index2]; Vector3 min = dictionary1[index3]; Dictionary <string, Vector3> dictionary2 = v3Dic; string[] args3 = this.args; int index4 = num3; int num4 = index4 + 1; string index5 = args3[index4]; Vector3 max = dictionary2[index5]; v3Dic[this.answer] = MathfEx.GetShapeLerpPositionValue(shape, min, max); }
public Hull(List <Vector3> points) { //Make a new convex hull this.points = ConvexHull.Compute(points, true); this.points = MathfEx.smoothPolygon(this.points); }
public void GenerateSandtraps() { //How many do we need to spawn? var amountToSpawn = Random.Range(sandtrapOptions.minSandtrapCount, sandtrapOptions.maxSandtrapCount); //Choose the smallest -- either the number of fairways or the number of //possible points which they can be spawned at.. this prevents infinite while loops amountToSpawn = Mathf.Min(amountToSpawn, fairway.points.Count - 1); //The chosen points var chosenIdxs = new int[amountToSpawn]; //Number of tries, number of successful tries int tries = 0, spawned = 0; while (spawned < amountToSpawn) { //Choose a random node in the fairway which isnt: // a) the green // b) the tee // c) chosen from an existing fairway point //This is taking a long time.. so stop it if (++tries > (amountToSpawn * 10)) { break; } //Compute random index int idx = Random.Range(1, fairway.points.Count); //Already contains it? try again.. if (chosenIdxs.Contains(idx)) { continue; } //Add the index chosenIdxs[spawned] = idx; //Choose a random node var randomNode = fairway.points[idx]; //Calculate dist var dist = (randomNode.radius * Random.Range(sandtrapOptions.minRadiusDist, 1f)); //Find offset var offset = randomNode.position + MathfEx.Polar2CartXZ(Random.value * 360f, dist, Quaternion.identity); //Calculate position var pos = offset; //Make a sandtrap here sandtraps.Add(new Sandtrap(pos, transform, sandtrapOptions)); //Increment the count spawned++; } }
public void SetColor(Color _color, int _idx) { if (MathfEx.RangeEqualOn <int>(0, _idx, 3)) { this.itemInfo.colors[_idx].mainColor = _color; } this.UpdateColor(); }
public void SetMetallic(int _idx, float _value) { if (MathfEx.RangeEqualOn <int>(0, _idx, 3)) { this.itemInfo.colors[_idx].metallic = _value; } this.UpdateColor(); }
public void SetGlossiness(int _idx, float _value) { if (MathfEx.RangeEqualOn <int>(0, _idx, 3)) { this.itemInfo.colors[_idx].glossiness = _value; } this.UpdateColor(); }
internal void SetReferralIndex(int _index) { DebugMsg(LogLevel.Warning, $"[SetReferralIndex][{ChaControl.GetFullname()}][_index: {_index}]"); if (ReferralIndex != _index) { ReferralIndex = MathfEx.RangeEqualOn(0, _index, RefMax) ? _index : RefMax; } }
private void OnClickSelect(VoicePlayNode _vpn) { if (MathfEx.RangeEqualOn <int>(0, this.select, this.listNode.Count)) { this.listNode[this.select].select = false; } this.select = this.listNode.FindIndex((Predicate <VoicePlayNode>)(v => Object.op_Equality((Object)v, (Object)_vpn))); this.listNode[this.select].select = true; }
private bool CalcAutoRotation( FakeTransform _ftransBlend, FakeTransform _ftransBase, Transform _transRef, CSwayParamDetail _Detail) { Quaternion.get_identity(); float num1 = 1f; float num2 = 1f; double num3; float num4 = (float)(num3 = 1.0); float num5 = 0.0f; num4 = 0.0f; float num6 = Vector3.Dot(Vector3.get_up(), _transRef.get_up()); float num7 = Vector3.Dot(Vector3.get_up(), _transRef.get_forward()); float num8 = Vector3.Dot(Vector3.get_up(), _transRef.get_right()); float num9 = Mathf.Abs(num6); if ((double)num7 > 0.0) { num1 = -1f; } float num10 = Mathf.Abs(num7); if ((double)num8 > 0.0) { num2 = -1f; } float num11 = Mathf.Abs(num8); float num12 = Mathf.InverseLerp(1f, 0.0f, num9) * Mathf.InverseLerp(0.0f, 1f, num11); float fAutoRot1 = _Detail.fAutoRot; if ((double)num2 < 0.0) { fAutoRot1 *= -1f; } float num13 = Mathf.Lerp(0.0f, fAutoRot1, num12); if (!_Detail.bAutoRotUp || (double)num1 > 0.0) { float num14 = Mathf.InverseLerp(1f, 0.0f, num9) * Mathf.InverseLerp(0.0f, 1f, num10); float fAutoRot2 = _Detail.fAutoRot; if (!((double)num1 <= 0.0 ? !this.m_bLR : this.m_bLR)) { fAutoRot2 *= -1f; } num5 = Mathf.Lerp(0.0f, fAutoRot2, num14); } Quaternion quaternion = Quaternion.AngleAxis(MathfEx.ToDegree(num5 + num13), Vector3.get_up()); _ftransBlend.Rot = Quaternion.op_Multiply(_ftransBase.Rot, quaternion); _ftransBlend.Pos = _ftransBase.Pos; _ftransBlend.Scale = _ftransBase.Scale; return(true); }
// Start is called before the first frame update void Start() { for (int i = 0; i < 25; i++) { points.Add(centre.position + MathfEx.Polar2CartXZ(Random.value * 360, Random.value * 2f, Quaternion.identity)); } hull = new Hull(points); // smoothHull = MathfEx.smoothPolygon(hull.points); }
public Hull(List <Vector3> pointsA, List <Vector3> pointsB) { //Union the two together -- not the best approach but its 2am List <Vector3> allPoints = pointsA.Union(pointsB).ToList(); //Compute the hull and save it this.points = ConvexHull.Compute(allPoints, true); this.points = MathfEx.smoothPolygon(this.points); }
// Token: 0x06008697 RID: 34455 RVA: 0x0034AC84 File Offset: 0x00349084 private void OnLateUpdate() { BlinkCtrl.CalcBlink(); var fbsblinkControl = BlinkCtrl; if (BlinkCtrlEx != null) { fbsblinkControl = BlinkCtrlEx; } float blinkRate; if (fbsblinkControl.GetFixedFlags() == 0) { blinkRate = fbsblinkControl.GetOpenRate(); if (EyeLookController) { var angleHRate = EyeLookController.eyeLookScript.GetAngleHRate(EYE_LR.EYE_L); var angleVRate = EyeLookController.eyeLookScript.GetAngleVRate(); var min = -Mathf.Max(EyeLookDownCorrect, EyeLookSideCorrect); var num = 1f - EyeLookUpCorrect; if (num > EyesCtrl.OpenMax) { num = EyesCtrl.OpenMax; } float num2; if (angleVRate > 0f) { num2 = MathfEx.LerpAccel(0f, EyeLookUpCorrect, angleVRate); } else { num2 = -MathfEx.LerpAccel(0f, EyeLookDownCorrect, -angleVRate); } if (angleHRate > 0f) { num2 -= MathfEx.LerpAccel(0f, EyeLookSideCorrect, angleHRate); } else { num2 -= MathfEx.LerpAccel(0f, EyeLookSideCorrect, -angleHRate); } num2 = Mathf.Clamp(num2, min, EyeLookUpCorrect); num2 *= 1f - (1f - EyesCtrl.OpenMax); EyesCtrl.SetCorrectOpenMax(num + num2); } } else { blinkRate = -1f; } EyebrowCtrl.CalcBlend(blinkRate); EyesCtrl.CalcBlend(blinkRate); MouthCtrl.CalcBlend(voiceValue); }
public int CheckNewIndex() { for (int n = -1; MathfEx.RangeEqualOn <int>(0, n, int.MaxValue); ++n) { if (!this.hashIndex.Contains(n)) { return(n); } } return(-1); }
// Token: 0x06008697 RID: 34455 RVA: 0x0034AC84 File Offset: 0x00349084 private void OnLateUpdate() { this.BlinkCtrl.CalcBlink(); FBSBlinkControl fbsblinkControl = this.BlinkCtrl; if (this.BlinkCtrlEx != null) { fbsblinkControl = this.BlinkCtrlEx; } float blinkRate; if (fbsblinkControl.GetFixedFlags() == 0) { blinkRate = fbsblinkControl.GetOpenRate(); if (this.EyeLookController) { float angleHRate = this.EyeLookController.eyeLookScript.GetAngleHRate(EYE_LR.EYE_L); float angleVRate = this.EyeLookController.eyeLookScript.GetAngleVRate(); float min = -Mathf.Max(this.EyeLookDownCorrect, this.EyeLookSideCorrect); float num = 1f - this.EyeLookUpCorrect; if (num > this.EyesCtrl.OpenMax) { num = this.EyesCtrl.OpenMax; } float num2; if (angleVRate > 0f) { num2 = MathfEx.LerpAccel(0f, this.EyeLookUpCorrect, angleVRate); } else { num2 = -MathfEx.LerpAccel(0f, this.EyeLookDownCorrect, -angleVRate); } if (angleHRate > 0f) { num2 -= MathfEx.LerpAccel(0f, this.EyeLookSideCorrect, angleHRate); } else { num2 -= MathfEx.LerpAccel(0f, this.EyeLookSideCorrect, -angleHRate); } num2 = Mathf.Clamp(num2, min, this.EyeLookUpCorrect); num2 *= 1f - (1f - this.EyesCtrl.OpenMax); this.EyesCtrl.SetCorrectOpenMax(num + num2); } } else { blinkRate = -1f; } this.EyebrowCtrl.CalcBlend(blinkRate); this.EyesCtrl.CalcBlend(blinkRate); this.MouthCtrl.CalcBlend(this.voiceValue); }
public void SetOptionVisible(int _idx, bool _visible) { if (MathfEx.RangeEqualOn <int>(0, _idx, this.itemInfo.option.Count - 1)) { this.itemInfo.option[_idx] = _visible; } if (this.itemComponent == null) { return; } this.itemComponent.SetOptionVisible(_idx, _visible); }
public int GetNewIndex() { for (int n = 0; MathfEx.RangeEqualOn <int>(0, n, int.MaxValue); ++n) { if (!this.hashIndex.Contains(n)) { this.hashIndex.Add(n); return(n); } } return(-1); }
public static void Migrate(int _coordinate, OutfitTriggerInfo _outfitTriggerInfo, Dictionary <string, VirtualGroupInfo> _outfitVirtualGroupInfo, ref List <TriggerProperty> _outputTriggerProperty, ref List <TriggerGroup> _outputTriggerGroup) { if (_outfitTriggerInfo == null) { return; } if (_outfitVirtualGroupInfo == null) { _outfitVirtualGroupInfo = new Dictionary <string, VirtualGroupInfo>(); } Dictionary <string, int> _mapping = new Dictionary <string, int>(); int _refBase = 9; List <AccTriggerInfo> _parts = _outfitTriggerInfo.Parts.Values.OrderBy(x => x.Kind).ThenBy(x => x.Group).ThenBy(x => x.Slot).ToList(); foreach (AccTriggerInfo _part in _parts) { if (MathfEx.RangeEqualOn(0, _part.Kind, 8)) { for (int i = 0; i < 4; i++) { _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _part.Kind, i, _part.State[i], 0)); } } else if (_part.Kind >= 9) { if (!_mapping.ContainsKey(_part.Group)) { _mapping[_part.Group] = _refBase; _refBase++; } _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _mapping[_part.Group], 0, _part.State[0], 0)); _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _mapping[_part.Group], 1, _part.State[3], 0)); } } foreach (KeyValuePair <string, int> x in _mapping) { if (!_outfitVirtualGroupInfo.ContainsKey(x.Key)) { string _label = _accessoryParentNames.ContainsKey(x.Key) ? _accessoryParentNames[x.Key] : x.Key; _outputTriggerGroup.Add(new TriggerGroup(_coordinate, x.Value, _label)); } else { VirtualGroupInfo _group = _outfitVirtualGroupInfo[x.Key]; _outputTriggerGroup.Add(new TriggerGroup(_coordinate, x.Value, _group.Label, (_group.State ? 0 : 1), 0, (_group.Secondary ? 1 : -1))); } } }
public bool Calculate(IEnumerable <CharaData> datas, out Vector3 pos, out Vector3 ang) { if (datas == null || !datas.Any <CharaData>()) { pos = Vector3.get_zero(); ang = Vector3.get_zero(); return(false); } float shape = datas.Average <CharaData>((Func <CharaData, float>)(item => item.chaCtrl.GetShapeBodyValue(0))); pos = MathfEx.GetShapeLerpPositionValue(shape, this.pos.min, this.pos.max); ang = MathfEx.GetShapeLerpAngleValue(shape, this.ang.min, this.ang.max); return(true); }
public bool this[int _idx] { get { return(this._enable.SafeGet <bool>(_idx)); } set { if (!MathfEx.RangeEqualOn <int>(0, _idx, this._enable.Length - 1)) { return; } this._enable[_idx] = value; } }
private void GenerateFairwayHulls() { for (int i = 1; i < points.Count; i++) { FairwayPoint prev = points[i - 1]; FairwayPoint next = points[i]; var prevPoints = MathfEx.CircleCoordinatesXZ(prev.position, prev.radius, transform.rotation, options.circleFidelity); var nextPoints = MathfEx.CircleCoordinatesXZ(next.position, next.radius, transform.rotation, options.circleFidelity); hulls.Add(new Hull(prevPoints, nextPoints)); } this.GenerateFairwayOuterHulls(); }
// Token: 0x060032D5 RID: 13013 RVA: 0x0012C8D4 File Offset: 0x0012ACD4 public static string GetBloodTypeStr(int bloodType) { string[] array = new string[] { "A型", "B型", "O型", "AB型" }; if (MathfEx.RangeEqualOn <int>(0, bloodType, array.Length - 1)) { return(array[bloodType]); } return("不明"); }
internal void ToggleByClothesState(ChaControl chaCtrl, int kind, int state) { if (TriggerEnabled) { if (!MathfEx.RangeEqualOn(0, kind, 7)) { return; } List <AccTriggerInfo> Parts = CurOutfitTriggerInfo.Parts.Where(x => x.Kind == kind).ToList(); foreach (AccTriggerInfo Part in Parts) { chaCtrl.SetAccessoryState(Part.Slot, Part.State[state]); } } }
public static Vector2[] GetOffsets(int amountOfPositions, float facingDirection, float spreadAngle) { var offsets = new Vector2[amountOfPositions]; float originAngle = facingDirection + (spreadAngle / 2f); float increment = (amountOfPositions != 1) ? (spreadAngle / (amountOfPositions - 1)) : 0; for (int i = 0; i < amountOfPositions; i++) { float angle = originAngle - (increment * i); var vector = MathfEx.AngleToVector2(angle); offsets[i] = vector; } return(offsets); }
private void GenerateFairwayOuterHulls() { for (int i = 1; i < points.Count; i++) { FairwayPoint prev = points[i - 1]; FairwayPoint next = points[i]; //Calculate outer hull radii float pR = prev.radius + (prev.radius * options.outerHullOffset); float nR = next.radius + (prev.radius * options.outerHullOffset); var prevPoints = MathfEx.CircleCoordinatesXZ(prev.position, pR, transform.rotation, options.circleFidelity); var nextPoints = MathfEx.CircleCoordinatesXZ(next.position, nR, transform.rotation, options.circleFidelity); outerHulls.Add(new Hull(prevPoints, nextPoints)); } }
private void SelectMultipleLoop(TreeNodeObject _source, float _min, float _max) { if (Object.op_Equality((Object)_source, (Object)null)) { return; } if (MathfEx.RangeEqualOff <float>(_min, (float)((Transform)_source.rectNode).get_position().y, _max)) { this.AddSelectNode(_source, true); } if (_source.treeState == TreeNodeObject.TreeState.Close) { return; } foreach (TreeNodeObject _source1 in _source.child) { this.SelectMultipleLoop(_source1, _min, _max); } }