Example #1
0
        public void ConvertToMap(Chunk world, TerrainCell.SetValuesFunction SetValues, float temperatureMin, float temperatureRange, SeededRandom rnd)
        {
            Element element = ElementLoader.FindElementByName(base.backgroundElement);

            Sim.PhysicsData defaultValues = element.defaultValues;
            Element         element2      = ElementLoader.FindElementByName(base.element);

            Sim.PhysicsData defaultValues2 = element2.defaultValues;
            defaultValues2.temperature = base.temperature;
            Sim.DiseaseCell invalid = Sim.DiseaseCell.Invalid;
            for (int i = 0; i < pathElements.Count; i++)
            {
                Segment         segment    = pathElements[i];
                Vector2         vector     = segment.e1 - segment.e0;
                Vector2         normalized = new Vector2(0f - vector.y, vector.x).normalized;
                List <Vector2I> line       = ProcGen.Util.GetLine(segment.e0, segment.e1);
                for (int j = 0; j < line.Count; j++)
                {
                    for (float num = 0.5f; num <= base.widthCenter; num += 1f)
                    {
                        Vector2 vector2 = (Vector2)line[j] + normalized * num;
                        int     num2    = Grid.XYToCell((int)vector2.x, (int)vector2.y);
                        if (Grid.IsValidCell(num2))
                        {
                            SetValues(num2, element2, defaultValues2, invalid);
                        }
                        Vector2 vector3 = (Vector2)line[j] - normalized * num;
                        num2 = Grid.XYToCell((int)vector3.x, (int)vector3.y);
                        if (Grid.IsValidCell(num2))
                        {
                            SetValues(num2, element2, defaultValues2, invalid);
                        }
                    }
                    for (float num3 = 0.5f; num3 <= base.widthBorder; num3 += 1f)
                    {
                        Vector2 vector4 = (Vector2)line[j] + normalized * (base.widthCenter + num3);
                        int     num4    = Grid.XYToCell((int)vector4.x, (int)vector4.y);
                        if (Grid.IsValidCell(num4))
                        {
                            defaultValues.temperature = temperatureMin + world.heatOffset[num4] * temperatureRange;
                            SetValues(num4, element, defaultValues, invalid);
                        }
                        Vector2 vector5 = (Vector2)line[j] - normalized * (base.widthCenter + num3);
                        num4 = Grid.XYToCell((int)vector5.x, (int)vector5.y);
                        if (Grid.IsValidCell(num4))
                        {
                            defaultValues.temperature = temperatureMin + world.heatOffset[num4] * temperatureRange;
                            SetValues(num4, element, defaultValues, invalid);
                        }
                    }
                }
            }
        }
Example #2
0
 public void ConvertToMap(Chunk world, TerrainCell.SetValuesFunction SetValues, float temperatureMin, float temperatureRange, SeededRandom rnd)
 {
     Sim.DiseaseCell invalid = Sim.DiseaseCell.Invalid;
     for (int i = 0; i < pathElements.Count; i++)
     {
         Segment         segment    = pathElements[i];
         Vector2         e          = segment.e1;
         Segment         segment2   = pathElements[i];
         Vector2         vector     = e - segment2.e0;
         Vector2         normalized = new Vector2(0f - vector.y, vector.x).normalized;
         Segment         segment3   = pathElements[i];
         Vector2         e2         = segment3.e0;
         Segment         segment4   = pathElements[i];
         List <Vector2I> line       = ProcGen.Util.GetLine(e2, segment4.e1);
         for (int j = 0; j < line.Count; j++)
         {
             Vector2I vector2I  = line[j];
             int      x         = vector2I.x;
             Vector2I vector2I2 = line[j];
             int      num       = Grid.XYToCell(x, vector2I2.y);
             if (Grid.IsValidCell(num))
             {
                 Element         element       = ElementLoader.FindElementByName(WeightedRandom.Choose(this.element, rnd).element);
                 Sim.PhysicsData defaultValues = element.defaultValues;
                 defaultValues.temperature = temperatureMin + world.heatOffset[num] * temperatureRange;
                 SetValues(num, element, defaultValues, invalid);
             }
             for (float num2 = 0.5f; num2 <= width; num2 += 1f)
             {
                 Vector2 vector2 = (Vector2)line[j] + normalized * num2;
                 num = Grid.XYToCell((int)vector2.x, (int)vector2.y);
                 if (Grid.IsValidCell(num))
                 {
                     Element         element2       = ElementLoader.FindElementByName(WeightedRandom.Choose(this.element, rnd).element);
                     Sim.PhysicsData defaultValues2 = element2.defaultValues;
                     defaultValues2.temperature = temperatureMin + world.heatOffset[num] * temperatureRange;
                     SetValues(num, element2, defaultValues2, invalid);
                 }
                 Vector2 vector3 = (Vector2)line[j] - normalized * num2;
                 num = Grid.XYToCell((int)vector3.x, (int)vector3.y);
                 if (Grid.IsValidCell(num))
                 {
                     Element         element3       = ElementLoader.FindElementByName(WeightedRandom.Choose(this.element, rnd).element);
                     Sim.PhysicsData defaultValues3 = element3.defaultValues;
                     defaultValues3.temperature = temperatureMin + world.heatOffset[num] * temperatureRange;
                     SetValues(num, element3, defaultValues3, invalid);
                 }
             }
         }
     }
 }
Example #3
0
        public static void ProcessRivers(Chunk world, List <River> rivers, Sim.Cell[] cells, Sim.DiseaseCell[] dcs)
        {
            TerrainCell.SetValuesFunction setValues = delegate(int index, object elem, Sim.PhysicsData pd, Sim.DiseaseCell dc)
            {
                if (Grid.IsValidCell(index))
                {
                    cells[index].SetValues(elem as Element, pd, ElementLoader.elements);
                    dcs[index] = dc;
                }
                else
                {
                    Debug.LogError("Process::SetValuesFunction Index [" + index + "] is not valid. cells.Length [" + cells.Length + "]");
                }
            };
            float temperatureMin   = 265f;
            float temperatureRange = 30f;

            for (int i = 0; i < rivers.Count; i++)
            {
                rivers[i].ConvertToMap(world, setValues, temperatureMin, temperatureRange, null);
            }
        }