示例#1
0
    public MeshColliderBatch CreateBatch()
    {
        MeshColliderBatch meshColliderBatch = this.grid.CreateInstance();

        meshColliderBatch.Setup(this.cell.position, this.key.layer, this.key.material);
        meshColliderBatch.Alloc();
        this.TempBatches.Add(meshColliderBatch);
        return(meshColliderBatch);
    }
示例#2
0
    public MeshColliderBatch CreateBatch()
    {
        MeshColliderBatch instance = this.grid.CreateInstance();

        instance.Setup(this.cell.position, LayerMask.op_Implicit(this.key.layer), this.key.material);
        instance.Alloc();
        this.TempBatches.Add(instance);
        return(instance);
    }
示例#3
0
            void OnTriggerEnter(Collider collider)
            {
                BasePlayer player = collider.GetComponentInParent <BasePlayer>();

                if (player != null)
                {
                    Players.Add(player);

                    if (Definition.Options.ContainsKey("entermsg") && Definition.Options["entermsg"] != null)
                    {
                        player.ChatMessage(Definition.Options["entermsg"]);
                    }

                    Interface.Oxide.CallHook("OnEnterZone", Definition.Id, player);

                    if (Definition.Options.Count != 0)
                    {
                        Interface.Oxide.CallHook("OnEnterZoneWithOptions", Definition.Id, player, Definition.Options);
                    }
                }
                else
                {
                    if (Definition.Options.ContainsKey("nobuildex"))
                    {
                        MeshColliderBatch batch = collider.GetComponent <MeshColliderBatch>();

                        if (batch != null)
                        {
                            FieldInfo info           = batch.GetType().GetField("instances", BindingFlags.NonPublic | BindingFlags.Instance);
                            var       batchColliders = (ListDictionary <Component, ColliderCombineInstance>)info.GetValue(batch);

                            List <ColliderCombineInstance> batchCollidersList = batchColliders.Values;

                            for (int i = 0; i < batchCollidersList.Count; i++)
                            {
                                ColliderCombineInstance instance = batchCollidersList[i];

                                if (this.collider.bounds.Intersects(instance.bounds.ToBounds()))
                                {
                                    instance.collider.GetComponentInParent <BaseCombatEntity>()?.Kill(BaseNetworkable.DestroyMode.Gib);
                                }
                            }
                        }
                    }
                }

                //Debug.Log("OnTriggerEnter: " + player?.userID);
            }
示例#4
0
    public void CreateBatches()
    {
        if (this.TempInstances.Count == 0)
        {
            return;
        }
        MeshColliderBatch meshColliderBatch = this.CreateBatch();

        for (int i = 0; i < this.TempInstances.Count; i++)
        {
            MeshColliderInstance item = this.TempInstances[i];
            if (meshColliderBatch.AvailableVertices < item.mesh.vertexCount)
            {
                meshColliderBatch = this.CreateBatch();
            }
            meshColliderBatch.Add(item);
        }
        this.TempInstances.Clear();
    }
示例#5
0
    public void CreateBatches()
    {
        if (this.TempInstances.Count == 0)
        {
            return;
        }
        MeshColliderBatch batch = this.CreateBatch();

        for (int index = 0; index < this.TempInstances.Count; ++index)
        {
            MeshColliderInstance tempInstance = this.TempInstances[index];
            if (batch.AvailableVertices < tempInstance.mesh.get_vertexCount())
            {
                batch = this.CreateBatch();
            }
            batch.Add(tempInstance);
        }
        this.TempInstances.Clear();
    }
    public static Collider GetCollider(this RaycastHit hit)
    {
        if (((RaycastHit) ref hit).get_triangleIndex() < 0)
        {
            return(((RaycastHit) ref hit).get_collider());
        }
        if (!((Component)((RaycastHit) ref hit).get_transform()).CompareTag("MeshColliderBatch"))
        {
            return(((RaycastHit) ref hit).get_collider());
        }
        MeshColliderBatch component = (MeshColliderBatch)((Component)((RaycastHit) ref hit).get_transform()).GetComponent <MeshColliderBatch>();

        if (!Object.op_Implicit((Object)component))
        {
            return(((RaycastHit) ref hit).get_collider());
        }
        Collider collider = component.LookupCollider(((RaycastHit) ref hit).get_triangleIndex());

        if (!Object.op_Implicit((Object)collider))
        {
            return(((RaycastHit) ref hit).get_collider());
        }
        return(collider);
    }
    public static Rigidbody GetRigidbody(this RaycastHit hit)
    {
        if (((RaycastHit) ref hit).get_triangleIndex() < 0)
        {
            return(((RaycastHit) ref hit).get_rigidbody());
        }
        if (!((Component)((RaycastHit) ref hit).get_transform()).CompareTag("MeshColliderBatch"))
        {
            return(((RaycastHit) ref hit).get_rigidbody());
        }
        MeshColliderBatch component = (MeshColliderBatch)((Component)((RaycastHit) ref hit).get_transform()).GetComponent <MeshColliderBatch>();

        if (!Object.op_Implicit((Object)component))
        {
            return(((RaycastHit) ref hit).get_rigidbody());
        }
        Rigidbody rigidbody = component.LookupRigidbody(((RaycastHit) ref hit).get_triangleIndex());

        if (!Object.op_Implicit((Object)rigidbody))
        {
            return(((RaycastHit) ref hit).get_rigidbody());
        }
        return(rigidbody);
    }
示例#8
0
    public static Transform GetTransform(this RaycastHit hit)
    {
        if (hit.triangleIndex < 0)
        {
            return(hit.transform);
        }
        if (!hit.transform.CompareTag("MeshColliderBatch"))
        {
            return(hit.transform);
        }
        MeshColliderBatch component = hit.transform.GetComponent <MeshColliderBatch>();

        if (!component)
        {
            return(hit.transform);
        }
        Transform transforms = component.LookupTransform(hit.triangleIndex);

        if (transforms)
        {
            return(transforms);
        }
        return(hit.transform);
    }
示例#9
0
    public static Collider GetCollider(this RaycastHit hit)
    {
        if (hit.triangleIndex < 0)
        {
            return(hit.collider);
        }
        if (!hit.transform.CompareTag("MeshColliderBatch"))
        {
            return(hit.collider);
        }
        MeshColliderBatch component = hit.transform.GetComponent <MeshColliderBatch>();

        if (!component)
        {
            return(hit.collider);
        }
        Collider collider = component.LookupCollider(hit.triangleIndex);

        if (collider)
        {
            return(collider);
        }
        return(hit.collider);
    }
示例#10
0
    public static Rigidbody GetRigidbody(this RaycastHit hit)
    {
        if (hit.triangleIndex < 0)
        {
            return(hit.rigidbody);
        }
        if (!hit.transform.CompareTag("MeshColliderBatch"))
        {
            return(hit.rigidbody);
        }
        MeshColliderBatch component = hit.transform.GetComponent <MeshColliderBatch>();

        if (!component)
        {
            return(hit.rigidbody);
        }
        Rigidbody rigidbody = component.LookupRigidbody(hit.triangleIndex);

        if (rigidbody)
        {
            return(rigidbody);
        }
        return(hit.rigidbody);
    }
 public void RecycleInstance(MeshColliderBatch instance)
 {
     GameManager.server.Retire(instance.gameObject);
 }
示例#12
0
 public void RecycleInstance(MeshColliderBatch instance)
 {
     GameManager.server.Retire(((Component)instance).get_gameObject());
 }