Esempio n. 1
0
        private void CreateHousingWaypoint(int housingID, GameObject objRoot, Vector3 areaSize)
        {
            if (Object.op_Equality((Object)objRoot, (Object)null) || !Singleton <Resources> .IsInstance())
            {
                return;
            }
            LocomotionProfile locomotionProfile = Singleton <Resources> .Instance.LocomotionProfile;

            if (Object.op_Equality((Object)locomotionProfile, (Object)null))
            {
                return;
            }
            List <ValueTuple <Vector3, Waypoint> > waypointList;

            if (!this._housingWaypointCacheTable.TryGetValue(housingID, out waypointList) || waypointList == null)
            {
                this._housingWaypointCacheTable[housingID] = waypointList = new List <ValueTuple <Vector3, Waypoint> >();
                Transform transform = objRoot.get_transform();
                if (Object.op_Equality((Object)transform, (Object)null))
                {
                    return;
                }
                float       installationDistance = locomotionProfile.HousingWaypointSetting.InstallationDistance;
                float       installationHeight   = locomotionProfile.HousingWaypointSetting.InstallationHeight;
                SpiralPoint spiralPoint          = new SpiralPoint(999);
                for (int index = 0; (double)installationHeight * (double)index < areaSize.y; ++index)
                {
                    float num = installationHeight * (float)index;
                    spiralPoint.Clear();
                    spiralPoint.Limit = 999;
                    while (!spiralPoint.End)
                    {
                        Vector3 vector3 = Vector3.op_Multiply(new Vector3((float)((Vector2Int) ref spiralPoint.Current).get_x(), 0.0f, (float)((Vector2Int) ref spiralPoint.Current).get_y()), installationDistance);
                        vector3.y = (__Null)(double)num;
                        if (areaSize.y > vector3.y && vector3.x > -areaSize.x / 2.0 && (areaSize.x / 2.0 > vector3.x && vector3.z > -areaSize.z / 2.0) && areaSize.z / 2.0 > vector3.z)
                        {
                            vector3 = Vector3.op_Addition(transform.get_position(), Quaternion.op_Multiply(transform.get_rotation(), vector3));
                            waypointList.Add(new ValueTuple <Vector3, Waypoint>(vector3, (Waypoint)null));
                            spiralPoint.Next();
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }
            this.RefreshWaypoints(housingID, waypointList);
        }