// Token: 0x06000DC5 RID: 3525 RVA: 0x0003DD10 File Offset: 0x0003BF10 private void LateUpdate() { if (this.skinnedMeshRenderer) { this.age += Time.deltaTime; for (int i = 0; i < this.bones.Length; i++) { JitterBones.BoneInfo boneInfo = this.bones[i]; if (!boneInfo.isRoot) { float num = this.age * this.perlinNoiseFrequency; float num2 = (float)i; Vector3 vector = new Vector3(Mathf.PerlinNoise(num, num2), Mathf.PerlinNoise(num + 4f, num2 + 3f), Mathf.PerlinNoise(num + 6f, num2 - 7f)); vector = HGMath.Remap(vector, this.perlinNoiseMinimumCutoff, this.perlinNoiseMaximumCutoff, -1f, 1f); vector = HGMath.Clamp(vector, 0f, 1f); vector *= this.perlinNoiseStrength; if (this.headBonusStrength >= 0f && boneInfo.isHead) { vector *= this.headBonusStrength; } boneInfo.transform.rotation *= Quaternion.Euler(vector); } } } }
// Token: 0x06002280 RID: 8832 RVA: 0x000A3594 File Offset: 0x000A1794 private bool FindBestHeadPoint(out Vector3 result, out float approximateRadius) { IEnumerable <Transform> source = from bone in this.boneList where string.Equals(bone.name, "head", StringComparison.OrdinalIgnoreCase) select bone; if (!source.Any <Transform>()) { source = from bone in this.boneList where bone.name.ToLower().Contains("head") select bone; } Vector3[] array = (from bone in source select bone.position).ToArray <Vector3>(); result = HGMath.Average <Vector3[]>(array); approximateRadius = 1f; IEnumerable <float> source2 = from hurtBox in (from bone in source select bone.GetComponentInChildren <HurtBox>() into hurtBox where hurtBox select hurtBox).Distinct <HurtBox>() select Util.SphereVolumeToRadius(hurtBox.volume); if (source2.Any <float>()) { approximateRadius = source2.Max(); } Transform transform = this.boneList.Find((Transform bone) => string.Equals(bone.name, "chest", StringComparison.OrdinalIgnoreCase)); if (transform) { approximateRadius = Mathf.Max(Vector3.Distance(transform.position, result), approximateRadius); result = (result + transform.position) / 2f; } return(array.Length != 0); }
private void RpcDeductLunarCoins(uint count) { if (this.localUser == null) { return; } this.localUser.userProfile.coins = HGMath.UintSafeSubtact(this.localUser.userProfile.coins, count); this.SyncLunarCoinsToServer(); }
private void RpcAwardLunarCoins(uint count) { if (this.localUser == null) { return; } this.localUser.userProfile.coins = HGMath.UintSafeAdd(this.localUser.userProfile.coins, count); this.localUser.userProfile.totalCollectedCoins = HGMath.UintSafeAdd(this.localUser.userProfile.totalCollectedCoins, count); this.SyncLunarCoinsToServer(); }
public void AwardLunarCoins(uint count) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.NetworkUser::AwardLunarCoins(System.UInt32)' called on client"); return; } this.NetworknetLunarCoins = HGMath.UintSafeAdd(this.netLunarCoins, count); this.CallRpcAwardLunarCoins(count); }
// Token: 0x0600235B RID: 9051 RVA: 0x0009A8A0 File Offset: 0x00098AA0 private void CalculateLayoutValues(out ItemInventoryDisplay.LayoutValues v) { Rect rect = this.rectTransform.rect; v.width = rect.width; v.iconSize = this.iconWidth * this.currentIconScale; v.iconsPerRow = Math.Max((int)v.width / (int)v.iconSize, 1); v.rowWidth = (float)v.iconsPerRow * v.iconSize; float num = (v.width - v.rowWidth) * 0.5f; v.rowCount = HGMath.IntDivCeil(this.itemIcons.Count, v.iconsPerRow); v.iconLocalScale = new Vector3(this.currentIconScale, this.currentIconScale, 1f); v.topLeftCorner = new Vector3(rect.xMin + num, rect.yMax); }
private void UpdateClient() { if (!NetworkClient.active) { Debug.LogWarning("[Client] function 'System.Void RoR2.LaserTurbineController::UpdateClient()' called on server"); return; } float num = HGMath.CircleAreaToRadius(this.charge * HGMath.CircleRadiusToArea(1f)); this.chargeIndicator.localScale = new Vector3(num, num, num); Vector3 localEulerAngles = this.spinIndicator.localEulerAngles; localEulerAngles.y += this.spin * Time.deltaTime * this.visualSpinRate; this.spinIndicator.localEulerAngles = localEulerAngles; AkSoundEngine.SetRTPCValue(this.spinRtpc, this.spin * this.spinRtpcScale, base.gameObject); }
// Token: 0x0600227F RID: 8831 RVA: 0x000A34E4 File Offset: 0x000A16E4 private bool FindBestEyePoint(out Vector3 result, out float approximateEyeRadius) { approximateEyeRadius = 1f; IEnumerable <Transform> source = from bone in this.boneList where bone.name.Equals("eye", StringComparison.OrdinalIgnoreCase) || bone.name.Equals("eyeball.1", StringComparison.OrdinalIgnoreCase) select bone; if (!source.Any <Transform>()) { source = from bone in this.boneList where bone.name.ToLower().Contains("eye") select bone; } Vector3[] array = (from bone in source select bone.position).ToArray <Vector3>(); result = HGMath.Average <Vector3[]>(array); return(array.Length != 0); }
// Token: 0x06001EB6 RID: 7862 RVA: 0x00084C08 File Offset: 0x00082E08 protected override void FixedUpdateBehavior() { base.FixedUpdateBehavior(); if (base.rigidbody) { this.returnSpeed += this.returnSpeedAcceleration * Time.fixedDeltaTime; base.rigidbody.velocity = (this.aimOrigin - this.position).normalized * this.returnSpeed; if (NetworkServer.active) { Vector3 endPosition = this.position + base.rigidbody.velocity * Time.fixedDeltaTime; if (HGMath.Overshoots(this.position, endPosition, this.aimOrigin)) { EntityState.Destroy(base.gameObject); return; } } } }
// Token: 0x060023EA RID: 9194 RVA: 0x0009D410 File Offset: 0x0009B610 private bool FindBestEyePoint(out Vector3 result, out float approximateEyeRadius) { approximateEyeRadius = 1f; IEnumerable <Transform> source = this.boneList.Where(new Func <Transform, bool>(ModelPanel.CameraFramingCalculator.< > c.< > 9. < FindBestEyePoint > g__FirstChoice | 10_0)); if (!source.Any <Transform>()) { source = this.boneList.Where(new Func <Transform, bool>(ModelPanel.CameraFramingCalculator.< > c.< > 9. < FindBestEyePoint > g__SecondChoice | 10_1)); } Vector3[] array = (from bone in source select bone.position).ToArray <Vector3>(); result = HGMath.Average <Vector3[]>(array); for (int i = 0; i < array.Length; i++) { float magnitude = (array[i] - result).magnitude; if (magnitude > approximateEyeRadius) { approximateEyeRadius = magnitude; } } return(array.Length != 0); }
// Token: 0x06002358 RID: 9048 RVA: 0x0009A7DC File Offset: 0x000989DC private float CalculateIconScale(int iconCount) { int num = (int)this.rectTransform.rect.width; int num2 = (int)this.maxHeight; int num3 = (int)this.iconWidth; int num4 = num3; int num5 = num3 / 8; int num6 = Math.Max(num / num4, 1); int num7 = HGMath.IntDivCeil(iconCount, num6); while (num4 * num7 > num2) { num6++; num4 = Math.Min(num / num6, num3); num7 = HGMath.IntDivCeil(iconCount, num6); if (num4 <= num5) { num4 = num5; break; } } return((float)num4 / (float)num3); }
// Token: 0x060023F0 RID: 9200 RVA: 0x0009D6F8 File Offset: 0x0009B8F8 private bool TryCalcBoneBounds(Transform bone, float weightThreshold, out Bounds bounds, out float approximateRadius) { SkinnedMeshRenderer[] componentsInChildren = this.modelInstance.GetComponentsInChildren <SkinnedMeshRenderer>(); SkinnedMeshRenderer skinnedMeshRenderer = null; Mesh mesh = null; int num = -1; List <int> list = new List <int>(); foreach (SkinnedMeshRenderer skinnedMeshRenderer in componentsInChildren) { mesh = skinnedMeshRenderer.sharedMesh; if (mesh) { num = ModelPanel.CameraFramingCalculator.FindBoneIndex(skinnedMeshRenderer, bone); if (num != -1) { BoneWeight[] boneWeights = mesh.boneWeights; for (int j = 0; j < boneWeights.Length; j++) { if (ModelPanel.CameraFramingCalculator.GetWeightForBone(ref boneWeights[j], num) > weightThreshold) { list.Add(j); } } if (list.Count == 0) { num = -1; } } if (num != -1) { break; } } } if (num == -1) { bounds = default(Bounds); approximateRadius = 0f; return(false); } Mesh mesh2 = new Mesh(); skinnedMeshRenderer.BakeMesh(mesh2); Vector3[] vertices = mesh2.vertices; UnityEngine.Object.Destroy(mesh2); if (mesh2.vertexCount != mesh.vertexCount) { Debug.LogWarningFormat("Baked mesh vertex count differs from the original mesh vertex count! baked={0} original={1}", new object[] { mesh2.vertexCount, mesh.vertexCount }); vertices = mesh.vertices; } Vector3[] array = new Vector3[list.Count]; Transform transform = skinnedMeshRenderer.transform; Vector3 position = transform.position; Quaternion rotation = transform.rotation; for (int k = 0; k < list.Count; k++) { int num2 = list[k]; Vector3 point = vertices[num2]; Vector3 vector = position + rotation * point; array[k] = vector; } bounds = new Bounds(HGMath.Average <Vector3[]>(array), Vector3.zero); float num3 = 0f; for (int l = 0; l < array.Length; l++) { bounds.Encapsulate(array[l]); float num4 = Vector3.Distance(bounds.center, array[l]); if (num4 > num3) { num3 = num4; } } approximateRadius = num3; return(true); }
// Token: 0x06002B85 RID: 11141 RVA: 0x000B79E4 File Offset: 0x000B5BE4 private void RootPulse() { Vector3 position = base.transform.position; foreach (HurtBox hurtBox in new SphereSearch { origin = position, radius = TreebotFlower2Projectile.radius, mask = LayerIndex.entityPrecise.mask }.RefreshCandidates().FilterCandidatesByHurtBoxTeam(TeamMask.AllExcept(this.teamIndex)).OrderCandidatesByDistance().FilterCandidatesByDistinctHurtBoxEntities().GetHurtBoxes()) { CharacterBody body = hurtBox.healthComponent.body; if (!this.rootedBodies.Contains(body)) { this.rootedBodies.Add(body); body.AddBuff(BuffIndex.Entangle); body.RecalculateStats(); Vector3 a = hurtBox.transform.position - position; float magnitude = a.magnitude; Vector3 a2 = a / magnitude; Rigidbody component = hurtBox.healthComponent.GetComponent <Rigidbody>(); float num = component ? component.mass : 1f; float num2 = magnitude - TreebotFlower2Projectile.yankIdealDistance; float num3 = TreebotFlower2Projectile.yankSuitabilityCurve.Evaluate(num); Vector3 vector = component ? component.velocity : Vector3.zero; if (HGMath.IsVectorNaN(vector)) { vector = Vector3.zero; } Vector3 a3 = -vector; if (num2 > 0f) { a3 = a2 * -Trajectory.CalculateInitialYSpeedForHeight(num2, -body.acceleration); } Vector3 force = a3 * (num * num3); DamageInfo damageInfo = new DamageInfo { attacker = this.owner, inflictor = base.gameObject, crit = this.crit, damage = this.damage, damageColorIndex = DamageColorIndex.Default, damageType = this.damageType, force = force, position = hurtBox.transform.position, procChainMask = this.procChainMask, procCoefficient = this.procCoefficient }; hurtBox.healthComponent.TakeDamage(damageInfo); HurtBox hurtBoxReference = hurtBox; HurtBoxGroup hurtBoxGroup = hurtBox.hurtBoxGroup; int num4 = 0; while ((float)num4 < Mathf.Min(4f, body.radius * 2f)) { EffectData effectData = new EffectData { scale = 1f, origin = position, genericFloat = Mathf.Max(0.2f, TreebotFlower2Projectile.duration - base.fixedAge) }; effectData.SetHurtBoxReference(hurtBoxReference); EffectManager.SpawnEffect(Resources.Load <GameObject>("Prefabs/Effects/OrbEffects/EntangleOrbEffect"), effectData, true); hurtBoxReference = hurtBoxGroup.hurtBoxes[UnityEngine.Random.Range(0, hurtBoxGroup.hurtBoxes.Length)]; num4++; } } } }