Exemplo n.º 1
0
 /// <summary>Restores the array of objects from the configuration.</summary>
 /// <?/>
 /// <param name="conf">the configuration to use</param>
 /// <param name="keyName">the name of the key to use</param>
 /// <param name="itemClass">the class of the item</param>
 /// <returns>restored object</returns>
 /// <exception cref="System.IO.IOException">
 /// : forwards Exceptions from the underlying
 /// <see cref="Org.Apache.Hadoop.IO.Serializer.Serialization{T}"/>
 /// classes.
 /// </exception>
 public static K[] LoadArray <K>(Configuration conf, string keyName)
 {
     System.Type itemClass = typeof(K);
     Org.Apache.Hadoop.IO.DefaultStringifier <K> stringifier = new Org.Apache.Hadoop.IO.DefaultStringifier
                                                               <K>(conf, itemClass);
     try
     {
         string    itemStr = conf.Get(keyName);
         AList <K> list    = new AList <K>();
         string[]  parts   = itemStr.Split(Separator);
         foreach (string part in parts)
         {
             if (!part.IsEmpty())
             {
                 list.AddItem(stringifier.FromString(part));
             }
         }
         return(GenericsUtil.ToArray(itemClass, list));
     }
     finally
     {
         stringifier.Close();
     }
 }
Exemplo n.º 2
0
    public override void Process(uint seed)
    {
        int priority;

        if ((ulong)World.Size < (long)this.MinSize)
        {
            return;
        }
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;

        Prefab <MonumentInfo>[] prefabArray = Prefab.Load <MonumentInfo>(string.Concat("assets/bundled/prefabs/autospawn/", this.ResourceFolder), null, null, true);
        if (prefabArray == null || prefabArray.Length == 0)
        {
            return;
        }
        prefabArray.Shuffle <Prefab <MonumentInfo> >(seed);
        prefabArray.BubbleSort <Prefab <MonumentInfo> >();
        Vector3 position = TerrainMeta.Position;
        Vector3 size     = TerrainMeta.Size;
        float   single   = position.x;
        float   single1  = position.z;
        float   single2  = position.x + size.x;
        float   single3  = position.z + size.z;
        int     num      = 0;
        List <PlaceMonuments.SpawnInfo> spawnInfos = new List <PlaceMonuments.SpawnInfo>();
        int num1 = 0;
        List <PlaceMonuments.SpawnInfo> spawnInfos1 = new List <PlaceMonuments.SpawnInfo>();

        for (int i = 0; i < 10; i++)
        {
            num = 0;
            spawnInfos.Clear();
            Prefab <MonumentInfo>[] prefabArray1 = prefabArray;
            for (int j = 0; j < (int)prefabArray1.Length; j++)
            {
                Prefab <MonumentInfo> prefab = prefabArray1[j];
                if (prefab.Parameters)
                {
                    priority = (int)prefab.Parameters.Priority + (int)PrefabPriority.Low;
                }
                else
                {
                    priority = 1;
                }
                int num2 = priority;
                int num3 = num2 * num2 * num2 * num2;
                for (int k = 0; k < 10000; k++)
                {
                    float single4 = SeedRandom.Range(ref seed, single, single2);
                    float single5 = SeedRandom.Range(ref seed, single1, single3);
                    float single6 = TerrainMeta.NormalizeX(single4);
                    float single7 = TerrainMeta.NormalizeZ(single5);
                    float single8 = SeedRandom.Value(ref seed);
                    float factor  = this.Filter.GetFactor(single6, single7);
                    if (factor * factor >= single8)
                    {
                        float      height  = heightMap.GetHeight(single6, single7);
                        Vector3    vector3 = new Vector3(single4, height, single5);
                        Quaternion obj     = prefab.Object.transform.localRotation;
                        Vector3    obj1    = prefab.Object.transform.localScale;
                        if (!this.CheckRadius(spawnInfos, vector3, (float)this.Distance))
                        {
                            prefab.ApplyDecorComponents(ref vector3, ref obj, ref obj1);
                            if ((!prefab.Component || prefab.Component.CheckPlacement(vector3, obj, obj1)) && prefab.ApplyTerrainAnchors(ref vector3, obj, obj1, this.Filter) && prefab.ApplyTerrainChecks(vector3, obj, obj1, this.Filter) && prefab.ApplyTerrainFilters(vector3, obj, obj1, null) && prefab.ApplyWaterChecks(vector3, obj, obj1) && !prefab.CheckEnvironmentVolumes(vector3, obj, obj1, EnvironmentType.Underground))
                            {
                                PlaceMonuments.SpawnInfo spawnInfo = new PlaceMonuments.SpawnInfo()
                                {
                                    prefab   = prefab,
                                    position = vector3,
                                    rotation = obj,
                                    scale    = obj1
                                };
                                spawnInfos.Add(spawnInfo);
                                num += num3;
                                break;
                            }
                        }
                    }
                }
            }
            if (num > num1)
            {
                num1 = num;
                GenericsUtil.Swap <List <PlaceMonuments.SpawnInfo> >(ref spawnInfos, ref spawnInfos1);
            }
        }
        foreach (PlaceMonuments.SpawnInfo spawnInfo1 in spawnInfos1)
        {
            Prefab     prefab1    = spawnInfo1.prefab;
            Vector3    vector31   = spawnInfo1.position;
            Quaternion quaternion = spawnInfo1.rotation;
            Vector3    vector32   = spawnInfo1.scale;
            prefab1.ApplyTerrainPlacements(vector31, quaternion, vector32);
            prefab1.ApplyTerrainModifiers(vector31, quaternion, vector32);
            World.AddPrefab("Monument", prefab1.ID, vector31, quaternion, vector32);
        }
    }
Exemplo n.º 3
0
            /// <exception cref="System.IO.IOException"/>
            private E MakeCopyForPassByValue <E>(Serialization <E> serialization, E obj)
            {
                Org.Apache.Hadoop.IO.Serializer.Serializer <E> ser = serialization.GetSerializer(GenericsUtil
                                                                                                 .GetClass(obj));
                Deserializer <E> deser = serialization.GetDeserializer(GenericsUtil.GetClass(obj));
                DataOutputBuffer dof   = this._enclosing.threadLocalDataOutputBuffer.Get();

                dof.Reset();
                ser.Open(dof);
                ser.Serialize(obj);
                ser.Close();
                obj = ReflectionUtils.NewInstance(GenericsUtil.GetClass(obj), this._enclosing.GetChainJobConf
                                                      ());
                ByteArrayInputStream bais = new ByteArrayInputStream(dof.GetData(), 0, dof.GetLength
                                                                         ());

                deser.Open(bais);
                deser.Deserialize(obj);
                deser.Close();
                return(obj);
            }
Exemplo n.º 4
0
    public override void Process(uint seed)
    {
        int priority;

        if ((ulong)World.Size < (long)this.MinSize)
        {
            return;
        }
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;

        Prefab <MonumentInfo>[] prefabArray = Prefab.Load <MonumentInfo>(string.Concat("assets/bundled/prefabs/autospawn/", this.ResourceFolder), null, null, true);
        if (prefabArray == null || prefabArray.Length == 0)
        {
            return;
        }
        prefabArray.Shuffle <Prefab <MonumentInfo> >(seed);
        prefabArray.BubbleSort <Prefab <MonumentInfo> >();
        Vector3 position = TerrainMeta.Position;
        Vector3 size     = TerrainMeta.Size;
        float   maxDistanceFromTerrain = position.x - (float)this.MaxDistanceFromTerrain;
        float   minDistanceFromTerrain = position.x - (float)this.MinDistanceFromTerrain;
        float   single = position.x + size.x + (float)this.MinDistanceFromTerrain;
        float   maxDistanceFromTerrain1 = position.x + size.x + (float)this.MaxDistanceFromTerrain;
        float   single1 = position.z - (float)this.MaxDistanceFromTerrain;
        int     num     = this.MinDistanceFromTerrain;
        float   minDistanceFromTerrain1 = position.z + size.z + (float)this.MinDistanceFromTerrain;
        float   maxDistanceFromTerrain2 = position.z + size.z + (float)this.MaxDistanceFromTerrain;
        int     num1 = 0;
        List <PlaceMonumentsOffshore.SpawnInfo> spawnInfos = new List <PlaceMonumentsOffshore.SpawnInfo>();
        int num2 = 0;
        List <PlaceMonumentsOffshore.SpawnInfo> spawnInfos1 = new List <PlaceMonumentsOffshore.SpawnInfo>();

        for (int i = 0; i < 10; i++)
        {
            num1 = 0;
            spawnInfos.Clear();
            Prefab <MonumentInfo>[] prefabArray1 = prefabArray;
            for (int j = 0; j < (int)prefabArray1.Length; j++)
            {
                Prefab <MonumentInfo> prefab = prefabArray1[j];
                if (prefab.Parameters)
                {
                    priority = (int)prefab.Parameters.Priority + (int)PrefabPriority.Low;
                }
                else
                {
                    priority = 1;
                }
                int num3 = priority;
                int num4 = num3 * num3 * num3 * num3;
                for (int k = 0; k < 10000; k++)
                {
                    float single2 = 0f;
                    float single3 = 0f;
                    switch (seed % 4)
                    {
                    case 0:
                    {
                        single2 = SeedRandom.Range(ref seed, maxDistanceFromTerrain, minDistanceFromTerrain);
                        single3 = SeedRandom.Range(ref seed, single1, maxDistanceFromTerrain2);
                        break;
                    }

                    case 1:
                    {
                        single2 = SeedRandom.Range(ref seed, single, maxDistanceFromTerrain1);
                        single3 = SeedRandom.Range(ref seed, single1, maxDistanceFromTerrain2);
                        break;
                    }

                    case 2:
                    {
                        single2 = SeedRandom.Range(ref seed, maxDistanceFromTerrain, maxDistanceFromTerrain1);
                        single3 = SeedRandom.Range(ref seed, single1, single1);
                        break;
                    }

                    case 3:
                    {
                        single2 = SeedRandom.Range(ref seed, maxDistanceFromTerrain, maxDistanceFromTerrain1);
                        single3 = SeedRandom.Range(ref seed, minDistanceFromTerrain1, maxDistanceFromTerrain2);
                        break;
                    }
                    }
                    float      single4 = TerrainMeta.NormalizeX(single2);
                    float      height  = heightMap.GetHeight(single4, TerrainMeta.NormalizeZ(single3));
                    Vector3    vector3 = new Vector3(single2, height, single3);
                    Quaternion obj     = prefab.Object.transform.localRotation;
                    Vector3    obj1    = prefab.Object.transform.localScale;
                    if (!this.CheckRadius(spawnInfos, vector3, (float)this.DistanceBetweenMonuments))
                    {
                        prefab.ApplyDecorComponents(ref vector3, ref obj, ref obj1);
                        if ((!prefab.Component || prefab.Component.CheckPlacement(vector3, obj, obj1)) && !prefab.CheckEnvironmentVolumes(vector3, obj, obj1, EnvironmentType.Underground))
                        {
                            PlaceMonumentsOffshore.SpawnInfo spawnInfo = new PlaceMonumentsOffshore.SpawnInfo()
                            {
                                prefab   = prefab,
                                position = vector3,
                                rotation = obj,
                                scale    = obj1
                            };
                            spawnInfos.Add(spawnInfo);
                            num1 += num4;
                            break;
                        }
                    }
                }
            }
            if (num1 > num2)
            {
                num2 = num1;
                GenericsUtil.Swap <List <PlaceMonumentsOffshore.SpawnInfo> >(ref spawnInfos, ref spawnInfos1);
            }
        }
        foreach (PlaceMonumentsOffshore.SpawnInfo spawnInfo1 in spawnInfos1)
        {
            Prefab     prefab1    = spawnInfo1.prefab;
            Vector3    vector31   = spawnInfo1.position;
            Quaternion quaternion = spawnInfo1.rotation;
            Vector3    vector32   = spawnInfo1.scale;
            prefab1.ApplyTerrainPlacements(vector31, quaternion, vector32);
            prefab1.ApplyTerrainModifiers(vector31, quaternion, vector32);
            World.AddPrefab("Monument", prefab1.ID, vector31, quaternion, vector32);
        }
    }
Exemplo n.º 5
0
 public static void WriteObject <T>(this Write write, T obj)
 {
     if (typeof(T) == typeof(Vector3))
     {
         write.Vector3(GenericsUtil.Cast <T, Vector3>(obj));
     }
     else if (typeof(T) == typeof(Ray))
     {
         write.Ray(GenericsUtil.Cast <T, Ray>(obj));
     }
     else if (typeof(T) == typeof(float))
     {
         write.Float(GenericsUtil.Cast <T, float>(obj));
     }
     else if (typeof(T) == typeof(short))
     {
         write.Int16(GenericsUtil.Cast <T, short>(obj));
     }
     else if (typeof(T) == typeof(ushort))
     {
         write.UInt16(GenericsUtil.Cast <T, ushort>(obj));
     }
     else if (typeof(T) == typeof(int))
     {
         write.Int32(GenericsUtil.Cast <T, int>(obj));
     }
     else if (typeof(T) == typeof(uint))
     {
         write.UInt32(GenericsUtil.Cast <T, uint>(obj));
     }
     else if (typeof(T) == typeof(byte[]))
     {
         write.Bytes(GenericsUtil.Cast <T, byte[]>(obj));
     }
     else if (typeof(T) == typeof(long))
     {
         write.Int64(GenericsUtil.Cast <T, long>(obj));
     }
     else if (typeof(T) == typeof(ulong))
     {
         write.UInt64(GenericsUtil.Cast <T, ulong>(obj));
     }
     else if (typeof(T) == typeof(string))
     {
         write.String(GenericsUtil.Cast <T, string>(obj));
     }
     else if (typeof(T) == typeof(sbyte))
     {
         write.Int8(GenericsUtil.Cast <T, sbyte>(obj));
     }
     else if (typeof(T) == typeof(byte))
     {
         write.UInt8(GenericsUtil.Cast <T, byte>(obj));
     }
     else if (typeof(T) == typeof(bool))
     {
         write.Bool(GenericsUtil.Cast <T, bool>(obj));
     }
     else if ((object)obj is IProto)
     {
         ((IProto)(object)obj).WriteToStream((Stream)write);
     }
     else
     {
         Debug.LogError((object)("NetworkData.Write - no handler to write " + (object)obj + " -> " + (object)obj.GetType()));
     }
 }
Exemplo n.º 6
0
    public override void Process(uint seed)
    {
        if ((long)World.Size < (long)this.MinSize)
        {
            return;
        }
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;

        Prefab <MonumentInfo>[] array = Prefab.Load <MonumentInfo>("assets/bundled/prefabs/autospawn/" + this.ResourceFolder, (GameManager)null, (PrefabAttribute.Library)null, true);
        if (array == null || array.Length == 0)
        {
            return;
        }
        array.Shuffle <Prefab <MonumentInfo> >(seed);
        array.BubbleSort <Prefab <MonumentInfo> >();
        Vector3 position1 = TerrainMeta.Position;
        Vector3 size      = TerrainMeta.Size;
        float   x1        = (float)position1.x;
        float   z1        = (float)position1.z;
        float   num1      = (float)(position1.x + size.x);
        float   num2      = (float)(position1.z + size.z);
        List <PlaceMonuments.SpawnInfo> a = new List <PlaceMonuments.SpawnInfo>();
        int num3 = 0;
        List <PlaceMonuments.SpawnInfo> b = new List <PlaceMonuments.SpawnInfo>();

        for (int index1 = 0; index1 < 10; ++index1)
        {
            int num4 = 0;
            a.Clear();
            foreach (Prefab <MonumentInfo> prefab in array)
            {
                int num5 = Object.op_Implicit((Object)prefab.Parameters) ? (int)(prefab.Parameters.Priority + 1) : 1;
                int num6 = num5 * num5 * num5 * num5;
                for (int index2 = 0; index2 < 10000; ++index2)
                {
                    float  x2     = SeedRandom.Range(ref seed, x1, num1);
                    float  z2     = SeedRandom.Range(ref seed, z1, num2);
                    float  normX  = TerrainMeta.NormalizeX(x2);
                    float  normZ  = TerrainMeta.NormalizeZ(z2);
                    float  num7   = SeedRandom.Value(ref seed);
                    double factor = (double)this.Filter.GetFactor(normX, normZ);
                    if (factor * factor >= (double)num7)
                    {
                        float   height = heightMap.GetHeight(normX, normZ);
                        Vector3 pos;
                        ((Vector3) ref pos).\u002Ector(x2, height, z2);
                        Quaternion localRotation = prefab.Object.get_transform().get_localRotation();
                        Vector3    localScale    = prefab.Object.get_transform().get_localScale();
                        if (!this.CheckRadius(a, pos, (float)this.Distance))
                        {
                            prefab.ApplyDecorComponents(ref pos, ref localRotation, ref localScale);
                            if ((!Object.op_Implicit((Object)prefab.Component) || prefab.Component.CheckPlacement(pos, localRotation, localScale)) && (prefab.ApplyTerrainAnchors(ref pos, localRotation, localScale, this.Filter) && prefab.ApplyTerrainChecks(pos, localRotation, localScale, this.Filter)) && (prefab.ApplyTerrainFilters(pos, localRotation, localScale, (SpawnFilter)null) && prefab.ApplyWaterChecks(pos, localRotation, localScale) && !prefab.CheckEnvironmentVolumes(pos, localRotation, localScale, EnvironmentType.Underground)))
                            {
                                a.Add(new PlaceMonuments.SpawnInfo()
                                {
                                    prefab   = (Prefab)prefab,
                                    position = pos,
                                    rotation = localRotation,
                                    scale    = localScale
                                });
                                num4 += num6;
                                break;
                            }
                        }
                    }
                }
            }
            if (num4 > num3)
            {
                num3 = num4;
                GenericsUtil.Swap <List <PlaceMonuments.SpawnInfo> >(ref a, ref b);
            }
        }
        foreach (PlaceMonuments.SpawnInfo spawnInfo in b)
        {
            Prefab     prefab    = spawnInfo.prefab;
            Vector3    position2 = spawnInfo.position;
            Quaternion rotation  = spawnInfo.rotation;
            Vector3    scale     = spawnInfo.scale;
            prefab.ApplyTerrainPlacements(position2, rotation, scale);
            prefab.ApplyTerrainModifiers(position2, rotation, scale);
            World.AddPrefab("Monument", prefab.ID, position2, rotation, scale);
        }
    }
Exemplo n.º 7
0
    public override void Process(uint seed)
    {
        if ((long)World.Size < (long)this.MinSize)
        {
            return;
        }
        TerrainHeightMap heightMap = TerrainMeta.HeightMap;

        Prefab <MonumentInfo>[] array = Prefab.Load <MonumentInfo>("assets/bundled/prefabs/autospawn/" + this.ResourceFolder, (GameManager)null, (PrefabAttribute.Library)null, true);
        if (array == null || array.Length == 0)
        {
            return;
        }
        array.Shuffle <Prefab <MonumentInfo> >(seed);
        array.BubbleSort <Prefab <MonumentInfo> >();
        Vector3 position1           = TerrainMeta.Position;
        Vector3 size                = TerrainMeta.Size;
        float   num1                = (float)position1.x - (float)this.MaxDistanceFromTerrain;
        float   num2                = (float)position1.x - (float)this.MinDistanceFromTerrain;
        float   num3                = (float)(position1.x + size.x) + (float)this.MinDistanceFromTerrain;
        float   num4                = (float)(position1.x + size.x) + (float)this.MaxDistanceFromTerrain;
        float   num5                = (float)position1.z - (float)this.MaxDistanceFromTerrain;
        int     distanceFromTerrain = this.MinDistanceFromTerrain;
        float   num6                = (float)(position1.z + size.z) + (float)this.MinDistanceFromTerrain;
        float   num7                = (float)(position1.z + size.z) + (float)this.MaxDistanceFromTerrain;
        List <PlaceMonumentsOffshore.SpawnInfo> a = new List <PlaceMonumentsOffshore.SpawnInfo>();
        int num8 = 0;
        List <PlaceMonumentsOffshore.SpawnInfo> b = new List <PlaceMonumentsOffshore.SpawnInfo>();

        for (int index1 = 0; index1 < 10; ++index1)
        {
            int num9 = 0;
            a.Clear();
            foreach (Prefab <MonumentInfo> prefab in array)
            {
                int num10 = Object.op_Implicit((Object)prefab.Parameters) ? (int)(prefab.Parameters.Priority + 1) : 1;
                int num11 = num10 * num10 * num10 * num10;
                for (int index2 = 0; index2 < 10000; ++index2)
                {
                    float x = 0.0f;
                    float z = 0.0f;
                    switch (seed % 4U)
                    {
                    case 0:
                        x = SeedRandom.Range(ref seed, num1, num2);
                        z = SeedRandom.Range(ref seed, num5, num7);
                        break;

                    case 1:
                        x = SeedRandom.Range(ref seed, num3, num4);
                        z = SeedRandom.Range(ref seed, num5, num7);
                        break;

                    case 2:
                        x = SeedRandom.Range(ref seed, num1, num4);
                        z = SeedRandom.Range(ref seed, num5, num5);
                        break;

                    case 3:
                        x = SeedRandom.Range(ref seed, num1, num4);
                        z = SeedRandom.Range(ref seed, num6, num7);
                        break;
                    }
                    float   normX  = TerrainMeta.NormalizeX(x);
                    float   normZ  = TerrainMeta.NormalizeZ(z);
                    float   height = heightMap.GetHeight(normX, normZ);
                    Vector3 pos;
                    ((Vector3) ref pos).\u002Ector(x, height, z);
                    Quaternion localRotation = prefab.Object.get_transform().get_localRotation();
                    Vector3    localScale    = prefab.Object.get_transform().get_localScale();
                    if (!this.CheckRadius(a, pos, (float)this.DistanceBetweenMonuments))
                    {
                        prefab.ApplyDecorComponents(ref pos, ref localRotation, ref localScale);
                        if ((!Object.op_Implicit((Object)prefab.Component) || prefab.Component.CheckPlacement(pos, localRotation, localScale)) && !prefab.CheckEnvironmentVolumes(pos, localRotation, localScale, EnvironmentType.Underground))
                        {
                            a.Add(new PlaceMonumentsOffshore.SpawnInfo()
                            {
                                prefab   = (Prefab)prefab,
                                position = pos,
                                rotation = localRotation,
                                scale    = localScale
                            });
                            num9 += num11;
                            break;
                        }
                    }
                }
            }
            if (num9 > num8)
            {
                num8 = num9;
                GenericsUtil.Swap <List <PlaceMonumentsOffshore.SpawnInfo> >(ref a, ref b);
            }
        }
        foreach (PlaceMonumentsOffshore.SpawnInfo spawnInfo in b)
        {
            Prefab     prefab    = spawnInfo.prefab;
            Vector3    position2 = spawnInfo.position;
            Quaternion rotation  = spawnInfo.rotation;
            Vector3    scale     = spawnInfo.scale;
            prefab.ApplyTerrainPlacements(position2, rotation, scale);
            prefab.ApplyTerrainModifiers(position2, rotation, scale);
            World.AddPrefab("Monument", prefab.ID, position2, rotation, scale);
        }
    }