Ejemplo n.º 1
0
        public static void ActivateColliders(Vector3 center)
        {
            NearColliderLogic nearCdLogic = GameMain.data.mainPlayer.controller.actionBuild.nearcdLogic;

            nearCdLogic.activeColHashCount = 0;
            nearCdLogic.MarkActivePos(center);

            const float sqrAreaRadius = 4f * 4f;

            for (int i = 0; i < nearCdLogic.activeColHashCount; i++)
            {
                int            hash         = nearCdLogic.activeColHashes[i];
                ColliderData[] colliderPool = nearCdLogic.colChunks[hash].colliderPool;

                for (int j = 1; j < nearCdLogic.colChunks[hash].cursor; j++)
                {
                    var collider = colliderPool[j];
                    if (collider.idType != 0 &&
                        (collider.pos - center).sqrMagnitude <= sqrAreaRadius + collider.ext.sqrMagnitude &&
                        (collider.usage != EColliderUsage.Physics || collider.objType != EObjectType.Entity))
                    {
                        int colliderObjId = hash << 20 | j;
                        if (nearCdLogic.colliderObjs.ContainsKey(colliderObjId))
                        {
                            nearCdLogic.colliderObjs[colliderObjId].live = true;
                        }
                        else
                        {
                            nearCdLogic.colliderObjs[colliderObjId] = new ColliderObject(colliderObjId, collider);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public static void ActivateColliders(ref NearColliderLogic nearCdLogic, List <Vector3> snaps)
        {
            for (int s = 0; s < snaps.Count; s++)
            {
                nearCdLogic.activeColHashCount = 0;
                var center = snaps[s];

                Vector3 vector  = Vector3.Cross(center, center - GameMain.mainPlayer.position).normalized *(5f);
                Vector3 vector2 = Vector3.Cross(vector, center).normalized *(5f);

                nearCdLogic.MarkActivePos(center);
                nearCdLogic.MarkActivePos(center + vector);
                nearCdLogic.MarkActivePos(center - vector);
                nearCdLogic.MarkActivePos(center + vector2);
                nearCdLogic.MarkActivePos(center - vector2);
                nearCdLogic.MarkActivePos(center + vector + vector2);
                nearCdLogic.MarkActivePos(center - vector + vector2);
                nearCdLogic.MarkActivePos(center + vector - vector2);
                nearCdLogic.MarkActivePos(center - vector - vector2);

                if (nearCdLogic.activeColHashCount > 0)
                {
                    for (int i = 0; i < nearCdLogic.activeColHashCount; i++)
                    {
                        int            num2         = nearCdLogic.activeColHashes[i];
                        ColliderData[] colliderPool = nearCdLogic.colChunks[num2].colliderPool;
                        for (int j = 1; j < nearCdLogic.colChunks[num2].cursor; j++)
                        {
                            if (colliderPool[j].idType != 0)
                            {
                                if ((colliderPool[j].pos - center).sqrMagnitude <= 25f * 4f + colliderPool[j].ext.sqrMagnitude)
                                {
                                    if (colliderPool[j].usage != EColliderUsage.Physics || colliderPool[j].objType != EObjectType.Entity)
                                    {
                                        int num3 = num2 << 20 | j;
                                        if (nearCdLogic.colliderObjs.ContainsKey(num3))
                                        {
                                            nearCdLogic.colliderObjs[num3].live = true;
                                        }
                                        else
                                        {
                                            nearCdLogic.colliderObjs[num3] = new ColliderObject(num3, colliderPool[j]);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }