/// <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(); } }
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); } }
/// <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); }
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); } }
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())); } }
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); } }
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); } }