Exemple #1
0
    // 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));
    }
Exemple #2
0
    // 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);
    }
Exemple #3
0
    // 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;
    }
Exemple #4
0
 // 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);
 }
Exemple #5
0
    // 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);
                }
            }
        }
    }
Exemple #6
0
    // 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);
    }
Exemple #7
0
    // 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);
    }
Exemple #8
0
 // Token: 0x0600117B RID: 4475 RVA: 0x00078C3C File Offset: 0x00076E3C
 public AgentSettings(Pathfinding.AgentType type)
 {
     this.m_agentType = type;
     this.m_build     = NavMesh.CreateSettings();
 }
Exemple #9
0
    // 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));
    }
Exemple #10
0
    // 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);
    }
Exemple #11
0
 // 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));
 }
Exemple #12
0
 // Token: 0x06000B3C RID: 2876 RVA: 0x00050ED6 File Offset: 0x0004F0D6
 private int GetAgentID(Pathfinding.AgentType agentType)
 {
     return(this.GetSettings(agentType).m_build.agentTypeID);
 }
Exemple #13
0
 // Token: 0x06000B3B RID: 2875 RVA: 0x00050EC8 File Offset: 0x0004F0C8
 private Pathfinding.AgentSettings GetSettings(Pathfinding.AgentType agentType)
 {
     return(this.m_agentSettings[(int)agentType]);
 }
Exemple #14
0
        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);
        }