// Token: 0x06000B58 RID: 2904 RVA: 0x00051EB0 File Offset: 0x000500B0 private Vector3Int GetTile(Vector3 point, Pathfinding.AgentType agent) { int x = Mathf.FloorToInt((point.x + this.m_tileSize / 2f) / this.m_tileSize); int y = Mathf.FloorToInt((point.z + this.m_tileSize / 2f) / this.m_tileSize); return(new Vector3Int(x, y, (int)agent)); }
// Token: 0x06000B51 RID: 2897 RVA: 0x00051A08 File Offset: 0x0004FC08 private void RebuildLinks(Pathfinding.NavMeshTile tile) { Pathfinding.AgentType z = (Pathfinding.AgentType)tile.m_tile.z; Pathfinding.AgentSettings settings = this.GetSettings(z); float num = this.m_tileSize / 2f; this.ConnectAlongEdge(tile.m_links1, tile.m_center + new Vector3(num, 0f, num), tile.m_center + new Vector3(num, 0f, -num), this.m_linkWidth, settings); this.ConnectAlongEdge(tile.m_links2, tile.m_center + new Vector3(-num, 0f, num), tile.m_center + new Vector3(num, 0f, num), this.m_linkWidth, settings); }
// Token: 0x06000B4C RID: 2892 RVA: 0x000516E0 File Offset: 0x0004F8E0 private void BuildTile(Pathfinding.NavMeshTile tile) { DateTime now = DateTime.Now; List <NavMeshBuildSource> list = new List <NavMeshBuildSource>(); List <NavMeshBuildMarkup> markups = new List <NavMeshBuildMarkup>(); Pathfinding.AgentType z = (Pathfinding.AgentType)tile.m_tile.z; Pathfinding.AgentSettings settings = this.GetSettings(z); Bounds includedWorldBounds = new Bounds(tile.m_center, new Vector3(this.m_tileSize, 6000f, this.m_tileSize)); Bounds localBounds = new Bounds(Vector3.zero, new Vector3(this.m_tileSize, 6000f, this.m_tileSize)); int defaultArea = settings.m_canWalk ? 0 : 1; NavMeshBuilder.CollectSources(includedWorldBounds, this.m_layers.value, NavMeshCollectGeometry.PhysicsColliders, defaultArea, markups, list); if (settings.m_avoidWater) { List <NavMeshBuildSource> list2 = new List <NavMeshBuildSource>(); NavMeshBuilder.CollectSources(includedWorldBounds, this.m_waterLayers.value, NavMeshCollectGeometry.PhysicsColliders, 1, markups, list2); using (List <NavMeshBuildSource> .Enumerator enumerator = list2.GetEnumerator()) { while (enumerator.MoveNext()) { NavMeshBuildSource item = enumerator.Current; item.transform *= Matrix4x4.Translate(Vector3.down * 0.2f); list.Add(item); } goto IL_1AE; } } if (settings.m_canSwim) { List <NavMeshBuildSource> list3 = new List <NavMeshBuildSource>(); NavMeshBuilder.CollectSources(includedWorldBounds, this.m_waterLayers.value, NavMeshCollectGeometry.PhysicsColliders, 3, markups, list3); if (settings.m_swimDepth != 0f) { using (List <NavMeshBuildSource> .Enumerator enumerator = list3.GetEnumerator()) { while (enumerator.MoveNext()) { NavMeshBuildSource item2 = enumerator.Current; item2.transform *= Matrix4x4.Translate(Vector3.down * settings.m_swimDepth); list.Add(item2); } goto IL_1AE; } } list.AddRange(list3); } IL_1AE: if (tile.m_data == null) { tile.m_data = new NavMeshData(); tile.m_data.position = tile.m_center; } this.m_buildOperation = NavMeshBuilder.UpdateNavMeshDataAsync(tile.m_data, settings.m_build, list, localBounds); this.m_buildTile = tile; }
// Token: 0x06000B39 RID: 2873 RVA: 0x00050B44 File Offset: 0x0004ED44 private Pathfinding.AgentSettings AddAgent(Pathfinding.AgentType type, Pathfinding.AgentSettings copy = null) { while (type + 1 > (Pathfinding.AgentType) this.m_agentSettings.Count) { this.m_agentSettings.Add(null); } Pathfinding.AgentSettings agentSettings = new Pathfinding.AgentSettings(type); if (copy != null) { agentSettings.m_build.agentHeight = copy.m_build.agentHeight; agentSettings.m_build.agentClimb = copy.m_build.agentClimb; agentSettings.m_build.agentRadius = copy.m_build.agentRadius; agentSettings.m_build.agentSlope = copy.m_build.agentSlope; } this.m_agentSettings[(int)type] = agentSettings; return(agentSettings); }
// Token: 0x06000B48 RID: 2888 RVA: 0x000515AC File Offset: 0x0004F7AC private void PokeArea(Vector3 point, Pathfinding.AgentType agentType) { Vector3Int tile = this.GetTile(point, agentType); this.PokeTile(tile); for (int i = -1; i <= 1; i++) { for (int j = -1; j <= 1; j++) { if (j != 0 || i != 0) { Vector3Int tileID = new Vector3Int(tile.x + j, tile.y + i, tile.z); this.PokeTile(tileID); } } } }
// Token: 0x06000B42 RID: 2882 RVA: 0x00051000 File Offset: 0x0004F200 public bool FindValidPoint(out Vector3 point, Vector3 center, float range, Pathfinding.AgentType agentType) { this.PokePoint(center, agentType); Pathfinding.AgentSettings settings = this.GetSettings(agentType); NavMeshHit navMeshHit; if (NavMesh.SamplePosition(center, out navMeshHit, range, new NavMeshQueryFilter { agentTypeID = (int)settings.m_agentType, areaMask = settings.m_areaMask })) { point = navMeshHit.position; return(true); } point = center; return(false); }
// Token: 0x06000B43 RID: 2883 RVA: 0x00051064 File Offset: 0x0004F264 public bool GetPath(Vector3 from, Vector3 to, List <Vector3> path, Pathfinding.AgentType agentType, bool requireFullPath = false, bool cleanup = true) { if (path != null) { path.Clear(); } this.PokeArea(from, agentType); this.PokeArea(to, agentType); Pathfinding.AgentSettings settings = this.GetSettings(agentType); if (!this.SnapToNavMesh(ref from, settings)) { return(false); } if (!this.SnapToNavMesh(ref to, settings)) { return(false); } NavMeshQueryFilter filter = new NavMeshQueryFilter { agentTypeID = settings.m_build.agentTypeID, areaMask = settings.m_areaMask }; if (!NavMesh.CalculatePath(from, to, filter, this.m_path)) { return(false); } if (this.m_path.status == NavMeshPathStatus.PathPartial && requireFullPath) { return(false); } if (path != null) { path.AddRange(this.m_path.corners); if (cleanup) { this.CleanPath(path, settings); } } return(true); }
// Token: 0x0600117B RID: 4475 RVA: 0x00078C3C File Offset: 0x00076E3C public AgentSettings(Pathfinding.AgentType type) { this.m_agentType = type; this.m_build = NavMesh.CreateSettings(); }
// Token: 0x06000B56 RID: 2902 RVA: 0x00051E18 File Offset: 0x00050018 private Pathfinding.NavMeshTile GetNavTile(Vector3 point, Pathfinding.AgentType agent) { Vector3Int tile = this.GetTile(point, agent); return(this.GetNavTile(tile)); }
// Token: 0x06000B49 RID: 2889 RVA: 0x00051610 File Offset: 0x0004F810 private void PokePoint(Vector3 point, Pathfinding.AgentType agentType) { Vector3Int tile = this.GetTile(point, agentType); this.PokeTile(tile); }
// Token: 0x06000B41 RID: 2881 RVA: 0x00050FF2 File Offset: 0x0004F1F2 public bool HavePath(Vector3 from, Vector3 to, Pathfinding.AgentType agentType) { return(this.GetPath(from, to, null, agentType, true, false)); }
// Token: 0x06000B3C RID: 2876 RVA: 0x00050ED6 File Offset: 0x0004F0D6 private int GetAgentID(Pathfinding.AgentType agentType) { return(this.GetSettings(agentType).m_build.agentTypeID); }
// Token: 0x06000B3B RID: 2875 RVA: 0x00050EC8 File Offset: 0x0004F0C8 private Pathfinding.AgentSettings GetSettings(Pathfinding.AgentType agentType) { return(this.m_agentSettings[(int)agentType]); }
internal static void LateLoadGroot(GameObject clone) { Character component = (Character)clone.GetComponent <Character>(); BaseAI component2 = (BaseAI)clone.GetComponent <BaseAI>(); component.m_name = "Groot"; Character character1 = component; character1.m_health = 400; Character character2 = component; character2.m_acceleration = (float)(character2.m_acceleration * 0.8); Character character3 = component; character3.m_speed = (float)(character3.m_speed * 0.8); Character character4 = component; character4.m_walkSpeed = (float)(character4.m_walkSpeed * 0.8); Character character5 = component; character5.m_runSpeed = (float)(character5.m_runSpeed * 0.7); Rigidbody rigidbody = clone.GetComponent <Rigidbody>(); rigidbody.mass = 50; Humanoid humanoid = (Humanoid)component; humanoid.m_defaultItems = (GameObject[])new GameObject[2] { Groot.DesignThornAttack(), Groot.DesignPunch(component) }; Character.Faction nFaction = Character.Faction.Players; humanoid.m_faction = nFaction; humanoid.m_randomSets = null; humanoid.m_boss = false; humanoid.m_bossEvent = null; humanoid.m_defeatSetGlobalKey = null; MonsterAI monsterAI = (MonsterAI)clone.GetComponent <BaseAI>(); Pathfinding.AgentType npath = Pathfinding.AgentType.HorseSize; monsterAI.m_pathAgentType = npath; monsterAI.m_viewRange = (int)30; monsterAI.m_spawnMessage = "I am Groot"; monsterAI.m_deathMessage = "Groot sad"; monsterAI.m_enableHuntPlayer = false; Tameable tameable = (Tameable)clone.AddComponent <Tameable>(); GameObject wolfObject = (GameObject)RRRLateLoadPrefabs.Clone("Wolf", "wolfClone", true, true); Tameable wolfTame = (Tameable)wolfObject.GetComponent <Tameable>(); tameable.m_fedDuration = wolfTame.m_fedDuration; tameable.m_tamingTime = wolfTame.m_tamingTime; tameable.m_commandable = true; tameable.m_tamedEffect = new EffectList(); FootStep footStep = (FootStep)clone.GetComponent <FootStep>(); GameObject greyObject = (GameObject)RRRLateLoadPrefabs.Clone("Greydwarf_Elite", "grayClone", true, true); FootStep greyStep = (FootStep)greyObject.GetComponent <FootStep>(); footStep.m_effects = greyStep.m_effects; CharacterDrop characterDrop = (CharacterDrop)clone.GetComponent <CharacterDrop>(); characterDrop.m_drops.Clear(); CharacterDrop.Drop drop = new CharacterDrop.Drop() { m_prefab = ZNetScene.instance.GetPrefab("Wood") }; characterDrop.m_drops.Add(drop); GameObject bruteDeath = RRRLateLoadPrefabs.Clone("sfx_greydwarf_elite_death", "vfx_" + clone.name + "_death", true, false); humanoid.m_deathEffects.m_effectPrefabs[0].m_prefab = bruteDeath; GameObject clone1 = RRRLateLoadPrefabs.Clone("Greydwarf_elite_ragdoll", clone.name + "_ragdoll", true, false); ((EffectList.EffectData)((EffectList)component.m_deathEffects).m_effectPrefabs[1]).m_prefab = (GameObject)clone1; Groot.DesignAppearance(clone); }