public void Test_01_Array_AddItem_Extension() { Vector2[] newArray = null; Vector2[] testArray = null; try { // ReSharper disable once ExpressionIsAlwaysNull // We know the array is null and is initialized // in the extension method we're testing newArray = testArray.AddItem(Vector2.zero); } catch { // ignored } Assert.IsNotNull(newArray); testArray = new Vector2[5]; newArray = testArray.AddItem(Vector2.one); Assert.IsTrue(newArray[newArray.Length - 1] == Vector2.one); Assert.IsTrue(newArray.Length > testArray.Length); Assert.IsTrue(newArray.Length - testArray.Length == 1); }
IEnumerable <object[]> GetIndexesForPrefix(TSource source, object[] previousIndex) { if (previousIndex.Length == m_indexCount) { yield return(previousIndex); yield break; } var lastIndexes = m_indexes(source, previousIndex); if (lastIndexes == null) { yield break; } foreach (var tIt in lastIndexes) { var newIndexes = previousIndex.AddItem(tIt).ToArray(); foreach (var t in GetIndexesForPrefix(source, newIndexes)) { yield return(t); } } }
public static void Postfix(EditorUserFlagAttribute __instance, string displayName, params Type[] allowedTypes) { if (displayName.Equals("Right Pole") || displayName.Equals("Left Pole")) { FieldInfo allowedTypesFieldInfo = typeof(EditorUserFlagAttribute).GetField("m_AllowedTypes", BindingFlags.Instance | BindingFlags.NonPublic); Type[] value = (Type[])allowedTypesFieldInfo.GetValue(__instance); value = value.AddItem(typeof(TrolleybusTrailerAI)).ToArray(); allowedTypesFieldInfo.SetValue(__instance, value); } }
/// <summary> /// Faz a união de dois arrays /// </summary> /// <param name="secondArray">Array a ser feito a união</param> /// <returns>Novo array contendo a união dos dois objetos</returns> public static T[] UnionWith <T>(this T[] array, T[] secondArray) { //Atribui todos os itens do array atual para o novo array T[] newArray = array; //Para todos os itens do segundo array, verifica se já está no novo array, //Caso não estiver, adiciona no novo array for (int i = 0; i < secondArray.Length; i++) { if (!newArray.ContainsValue(secondArray[i])) { newArray = newArray.AddItem(secondArray[i]); } } return(newArray); }
public static T[] InsertItem <T>(this T[] array, int index, T value) { if (array.Length < index || index < 0) { throw new ArgumentOutOfRangeException(); } var isLast = array.Length == index; if (isLast) { return(array.AddItem(value)); } var newArray = new T[array.Length + 1]; Array.Copy(array, newArray, index); newArray[index] = value; Array.Copy(array, index + 1, newArray, index + 1, array.Length - index); return(newArray); }
internal static int GetWindows() { GameObject[] rObjs = ALUtils.GetRootObjects().ToArray(); int wCount = 0; foreach (GameObject rootObj in rObjs) { Renderer childRenderer = rootObj.GetComponent <Renderer>(); Renderer[] allRenderers = rootObj.GetComponentsInChildren <Renderer>(); //allRenderers.Add(childRenderer); allRenderers.AddItem(childRenderer); foreach (Renderer renderer in allRenderers) { if (!renderer.gameObject.name.Contains("_XPZ_Window")) { foreach (Material mat in renderer.materials) { if (mat.name.ToLower().Contains("glow") && !renderer.gameObject.name.ToLower().Contains("truck") && !renderer.gameObject.name.ToLower().Contains("car") && !renderer.gameObject.name.ToLower().Contains("lamp")) { gameWindows.Add(renderer); renderer.gameObject.name += "_XPZ_Window"; WindowsCastShadow(renderer.gameObject); renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; renderer.receiveShadows = false; wCount++; break; } } } } } return(wCount); }
private static void Postfix(ref CarePackageInfo[] ___carePackages) { ___carePackages = ___carePackages.AddItem(new CarePackageInfo(GlomConfig.ID, 1f, null)).ToArray(); }
private static void Postfix(GorillaLocomotion.Player __instance) { try { if (fetched) { Vector3 plyPos = __instance.bodyCollider.transform.position; // Get player position. if (!ranOnce) { audio = Resources.FindObjectsOfTypeAll <AudioListener>()[0]; // Get audio listener. audioReverb = audio.gameObject.AddComponent <AudioReverbFilter>(); audioLowPass = audio.gameObject.AddComponent <AudioLowPassFilter>(); audioReverb.enabled = true; audioLowPass.enabled = false; triggers = Resources.FindObjectsOfTypeAll <GorillaTriggerBox>(); for (int i = 0; i < ambienceAudio.Length; i++) // Create audio sources. { if (i != 7 || i != 8) // Is this actually working? { AudioSource source = GorillaLocomotion.Player.Instance.gameObject.AddComponent <AudioSource>(); sources.Add(source); } } int cnt = 0; foreach (AudioSource source in sources) // Set up audio sources. { source.volume = 0f; source.loop = true; source.clip = ambienceAudio[cnt]; source.Play(); cnt++; } foreach (GorillaTriggerBox trig in triggers) // Set up triggers. { if (triggerList.Contains <string>(trig.name)) { boundList.AddItem <Bounds>(trig.GetComponent <Collider>().bounds); } } triggerSides[(int)Areas.None] = false; // How could I do this better? Actually I know, I'll do it later! Or will I? triggerSides[(int)Areas.Forest] = false; triggerSides[(int)Areas.Cosmetics] = false; triggerSides[(int)Areas.Cave] = false; triggerSides[(int)Areas.Canyon] = false; ranOnce = true; sources[5].volume = volume; GameObject.Destroy(sources[5], ambienceAudio[5].length); // Destroy startup sound game object. timeSinceLoad = Time.time; //Inserting computer ambience here. Computer ambience is 3D sound for now. pcSource = GorillaComputer.instance.gameObject.AddComponent <AudioSource>(); pcSource.volume = volume / 8; pcSource.spatialBlend = 1f; pcSource.maxDistance = 1f; pcSource.clip = ambienceAudio[6]; pcSource.loop = true; pcSource.Play(); Console.WriteLine(Application.streamingAssetsPath); Console.WriteLine("Ambient Sounds is ready!"); } if (Time.frameCount % 5 == 0) // OpTiMiZaTiOnS!?!? { Task t1 = new Task(() => // Run in new thread. Multi-threading for the win! { foreach (GorillaTriggerBox trigger in triggers) // Cycle through all triggers, maybe a better way? { string name = trigger.name; Bounds bounds = trigger.GetComponent <Collider>().bounds; Vector3 closest = bounds.ClosestPoint(plyPos); Vector3 center = bounds.center; bool hit = bounds.Intersects(__instance.bodyCollider.bounds); float dist = (plyPos - closest).magnitude / 6; AudioSource source = new AudioSource(); float tmpVolume = -0f; Areas side = Areas.None; bool sideBool = false; switch (name) // Ignore everything in this switch statement, it's all a mess! AHHHHH!! { case "JoinPublicRoom (tree exit)": if (hit) { side = Areas.Forest; if (plyPos.z > center.z - 1) { sideBool = true; curReverbPreset = UserReverbPresets.Forest; pcSource.volume = 0f; } else if (plyPos.x < center.x + 2 && plyPos.x > center.x - 3) { sideBool = false; curReverbPreset = UserReverbPresets.Room; pcSource.volume = volume / 8; } } source = sources[(int)Tracks.Forest - 1]; if (!triggerSides[(int)Areas.Forest]) { if (!triggerSides[(int)Areas.Cosmetics]) { tmpVolume = (1 - dist) * volume; } Vector3 dir = (__instance.headCollider.transform.position - closest).normalized; source.panStereo = Vector3.Dot(-__instance.headCollider.transform.right, dir) / Mathf.Clamp(2 - dist, 0, 2); } else { source.panStereo = 0f; } break; case "JoinPublicRoom (cave entrance)": if (hit) { side = Areas.Cave; if (plyPos.z < center.z) { curReverbPreset = UserReverbPresets.Cave; sideBool = true; } else { curReverbPreset = UserReverbPresets.Hallway; sideBool = false; } } source = sources[(int)Tracks.Cave - 1]; if (triggerSides[(int)Areas.Cave]) { tmpVolume = Mathf.Clamp(dist, 0, 1) * volume; } else { tmpVolume = 0; if (triggerSides[(int)Areas.Cave]) { if (plyPos.y < 20) { Console.WriteLine("1"); curReverbPreset = UserReverbPresets.Forest; } else { curReverbPreset = UserReverbPresets.Cave; } } } break; case "LeavingCaveGeo": if (hit) { if (plyPos.y < center.y) { curReverbPreset = UserReverbPresets.Hallway; } else { curReverbPreset = UserReverbPresets.Room; } } break; case "EnteringCosmetics": if (hit) { side = Areas.Cosmetics; if (plyPos.x < center.x) { sideBool = true; pcSource.volume = 0f; } else { sideBool = false; pcSource.volume = volume / 8; } } source = sources[(int)Tracks.Cosmetics - 1]; if (triggerSides[(int)Areas.Cosmetics]) { tmpVolume = Mathf.Clamp(dist * 2, 0, 1) * volume; } else { tmpVolume = 0; } break; /* * if (!triggerSides[(int)Areas.Cosmetics] && !triggerSides[(int)Areas.Forest]) * { * tmpVolume = (1 - dist * 3) * volume; * Vector3 dir = (__instance.headCollider.transform.position - closest).normalized; * source.panStereo = Vector3.Dot(-__instance.headCollider.transform.right, dir) / Mathf.Clamp(2 - dist, 0, 2); * } * else * { * Vector3 dir = (__instance.headCollider.transform.position - closest).normalized; * source.panStereo = Vector3.Dot(-__instance.headCollider.transform.right, dir) / Mathf.Clamp(2 - dist, 0, 2); * if (triggerSides[(int)Areas.Forest]) * tmpVolume = 0; * } */ break; case "JoinPublicRoom (canyon)": if (hit) { side = Areas.Canyon; if (plyPos.z < center.z) { sideBool = true; curReverbPreset = UserReverbPresets.City; } else if (plyPos.x < center.x + 2 && plyPos.x > center.x - 3) { sideBool = false; curReverbPreset = UserReverbPresets.Room; } } source = sources[(int)Tracks.Canyon - 1]; if (!triggerSides[(int)Areas.Canyon] && !triggerSides[(int)Areas.Forest]) { tmpVolume = (1 - dist) * volume; Vector3 dir = (__instance.headCollider.transform.position - closest).normalized; source.panStereo = Vector3.Dot(-__instance.headCollider.transform.right, dir) / Mathf.Clamp(2 - dist, 0, 2); } else { source.panStereo = 0f; if (triggerSides[(int)Areas.Forest]) { tmpVolume = 0; } if (triggerSides[(int)Areas.Canyon]) { if (plyPos.y < 5) { curReverbPreset = UserReverbPresets.Hallway; } else { curReverbPreset = UserReverbPresets.City; } } } break; case "QuitBox": source = sources[(int)Tracks.Void - 1]; tmpVolume = (1 - Mathf.Clamp((float)Math.Log(dist / 2.5f), 0, 1)) * volume * 2; //tmpVolume = (1 - dist / 25) * volume; break; } if (tmpVolume != -0f) // Weird crap here. { source.volume = tmpVolume; } if (side != Areas.None) // Why do I have Areas.None?? { triggerSides[(int)side] = sideBool; } } // Falling and reverb. AudioSource falling = sources[(int)Tracks.Falling - 1]; float vel = __instance.GetComponent <Rigidbody>().velocity.magnitude; falling.pitch = Mathf.Clamp((float)Math.Log(vel / 5), 0, 3); falling.volume = (float)Math.Log(vel / 10) * volume * 12; SetReverbPreset(); }); t1.Start(); } float time = Time.time - timeSinceLoad; // Startup sound. OpTiMiZe! if (time < 1) { AudioListener.volume = time; } } } catch (Exception err) { Console.WriteLine("AmbientSounds Error! : " + err); } }
public static void RegisterReferences(Type t) { References.AddItem(MetadataReference.CreateFromFile(t.Assembly.Location)); }
private static void Postfix(ref CarePackageInfo[] ___carePackages) { var core = new CarePackageInfo(ID, 1, () => Condition(ID)); ___carePackages = ___carePackages.AddItem(core).ToArray(); }
/****** SCENE *****/ internal static void PrepareSceneShadows() { GameObject[] rObjs = ALUtils.GetRootObjects().ToArray(); foreach (GameObject rootObj in rObjs) { MeshRenderer childRenderer = rootObj.GetComponent <MeshRenderer>(); MeshRenderer[] allRenderers = rootObj.GetComponentsInChildren <MeshRenderer>(); //allRenderers.Add(childRenderer); allRenderers.AddItem(childRenderer); foreach (MeshRenderer renderer in allRenderers) { //Remove glass from sun layer Material[] mats = renderer.materials; foreach (Material mat in mats) { if (mat.name.ToLower().Contains("glass")) { renderer.gameObject.layer = 7; continue; } } //Ignore if (renderer == null || renderer.gameObject.name.Contains("XPZ_Wall") || renderer.gameObject.name.Contains("XPZ_BaseWindow") || (renderer.gameObject.name.StartsWith("OBJ_") && !renderer.gameObject.name.ToLower().Contains("door") && !renderer.gameObject.name.ToLower().Contains("curtain") && !renderer.gameObject.name.ToLower().Contains("car")) || renderer.gameObject.name.StartsWith("GEAR_") || renderer.gameObject.name.StartsWith("FX_") || renderer.gameObject.name.StartsWith("CONTAINER_") || renderer.gameObject.name.StartsWith("INTERACTIVE_") ) { continue; } //Hide if (renderer.gameObject.name.ToLower().Contains("shadow_caster") || (renderer.gameObject.name.ToLower().Contains("cylinder") && !renderer.material.name.StartsWith("FX_")) || renderer.gameObject.name.ToLower().Contains("sphere") ) { renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; renderer.gameObject.SetActive(false); continue; } //Glass-Glow if ((renderer.gameObject.name.ToLower().Contains("glass") || renderer.gameObject.name.ToLower().Contains("glow")) && (!renderer.gameObject.name.ToLower().Contains("shadow") && !renderer.gameObject.name.ToLower().Contains("truck") && !renderer.gameObject.name.ToLower().Contains("car") && !renderer.gameObject.name.ToLower().Contains("xpz_window"))) { renderer.gameObject.name += "_XPZ_BaseWindow"; renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; continue; } else if (renderer.gameObject.name.ToLower().Contains("glow") && renderer.gameObject.name.ToLower().Contains("shadow")) { renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; renderer.gameObject.SetActive(false); continue; } if (renderer.gameObject.name.ToLower().Contains("decal")) { renderer.receiveShadows = true; qd_Decal decalInst = renderer.GetComponent <qd_Decal>(); vp_Layer.Set(renderer.gameObject, 7, false); continue; } //Rest - Cast shadows if not transparent if (renderer.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.Off || renderer.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.On) { //Material[] mats = renderer.materials; renderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.TwoSided; /*foreach (Material mat in mats) * { * if (mat.name.ToLower().Contains("glass")) * { * renderer.gameObject.layer = 7; * continue; * } * }*/ } else if (renderer.shadowCastingMode == UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly) { FlipMesh(renderer.gameObject); } } } }