public void Execute(CollisionEvent collisionEvent) { if (bulletGroup.HasComponent(collisionEvent.EntityA)) { if (unitGroup.HasComponent(collisionEvent.EntityB)) { HealthData data = unitGroup[collisionEvent.EntityB]; if (data.damageCoolDown <= 0) { data.damageCoolDown = 0.1f; data.health -= 5; unitGroup[collisionEvent.EntityB] = data; BulletTag bullet = bulletGroup[collisionEvent.EntityA]; bullet.destroyTimer = 0; bulletGroup[collisionEvent.EntityA] = bullet; } } } else if (unitGroup.HasComponent(collisionEvent.EntityA)) { if (bulletGroup.HasComponent(collisionEvent.EntityB)) { HealthData data = unitGroup[collisionEvent.EntityA]; if (data.damageCoolDown <= 0) { data.damageCoolDown = 0.1f; data.health -= 5; unitGroup[collisionEvent.EntityB] = data; BulletTag bullet = bulletGroup[collisionEvent.EntityB]; bullet.destroyTimer = 0; bulletGroup[collisionEvent.EntityA] = bullet; } } } }
//BulletTag stuff, somewhat shorter than the last one void BulletTagsGUI() { if (bp.bulletTags == null) { bp.bulletTags = new BulletTag[0]; } var bulletTags = new List <BulletTag>(bp.bulletTags); if (bulletTags.Count != bp.btFoldouts.Count) { bp.btFoldouts = new List <bool>(new bool[bulletTags.Count]); } if (bulletTags.Count != bp.btaFoldouts.Count) { bp.btaFoldouts = new List <ActionFoldouts>(new ActionFoldouts[bulletTags.Count]); if (bp.btaFoldouts.Count > 0) { for (var zz = 0; zz < bp.btaFoldouts.Count; zz++) { bp.btaFoldouts[zz] = new ActionFoldouts(); } } } GUILayout.BeginHorizontal(); bp.btFoldout = EditorGUILayout.Foldout(bp.btFoldout, "BulletTags"); if (GUILayout.Button("Collapse All", GUILayout.Width(150))) { bp.btFoldout = !bp.btFoldout; for (int zz = 0; zz < bp.btFoldouts.Count; zz++) { bp.btFoldouts[zz] = bp.btFoldout; } } GUILayout.EndHorizontal(); if (bp.btFoldout) { EditorGUI.indentLevel++; var removeIndex = -1; var moveIndex = -1; for (var l = 0; l < bulletTags.Count; l++) { EditorGUIUtility.labelWidth = 140; EditorGUIUtility.fieldWidth = 100; GUILayout.BeginHorizontal(); var str = "BulletTag " + (l + 1); bp.btFoldouts[l] = EditorGUILayout.Foldout(bp.btFoldouts[l], str); if (GUILayout.Button("Down", GUILayout.Width(50))) { moveIndex = l; } if (GUILayout.Button("Remove", GUILayout.Width(80))) { removeIndex = l; } GUILayout.EndHorizontal(); EditorGUILayout.Space(); if (bp.btFoldouts[l]) { GUI.changed = false; EditorGUI.indentLevel++; var bt = bulletTags[l]; GUILayout.BeginHorizontal(); if (!bt.randomSpeed) { bt.speed.x = EditorGUILayout.FloatField("Speed", bt.speed.x); } else { bt.speed = EditorGUILayout.Vector2Field("Speed Range", bt.speed); } bt.randomSpeed = EditorGUILayout.Toggle("Randomize", bt.randomSpeed); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); bt.rankSpeed = EditorGUILayout.Toggle("Add Rank", bt.rankSpeed); if (bt.rankSpeed) { bt.speed.z = EditorGUILayout.FloatField("RankSpeed", bt.speed.z); } GUILayout.EndHorizontal(); bt.prefabIndex = EditorGUILayout.IntSlider("PrefabIndex", bt.prefabIndex, 0, bm.bulletPrefab.Length - 1); if (GUI.changed) { SceneView.RepaintAll(); } BulletTagActionsGUI(l); EditorGUI.indentLevel--; EditorGUILayout.Space(); } } if (moveIndex >= 0 && moveIndex != bulletTags.Count - 1) { var temp = bulletTags[moveIndex]; bulletTags[moveIndex] = bulletTags[moveIndex + 1]; bulletTags[moveIndex + 1] = temp; var temp2 = bp.btFoldouts[moveIndex]; bp.btFoldouts[moveIndex] = bp.btFoldouts[moveIndex + 1]; bp.btFoldouts[moveIndex + 1] = temp2; var temp3 = bp.btaFoldouts[moveIndex]; bp.btaFoldouts[moveIndex] = bp.btaFoldouts[moveIndex + 1]; bp.btaFoldouts[moveIndex + 1] = temp3; } if (removeIndex >= 0) { bulletTags.RemoveAt(removeIndex); bp.btFoldouts.RemoveAt(removeIndex); bp.btaFoldouts.RemoveAt(removeIndex); } EditorGUILayout.Space(); GUILayout.BeginHorizontal(); GUILayout.Label(""); if (GUILayout.Button("Add Bullet Tag", GUILayout.Width(100))) { var bt = new BulletTag(); bulletTags.Add(bt); bp.btFoldouts.Add(true); bp.btaFoldouts.Add(new ActionFoldouts()); } GUILayout.EndHorizontal(); bp.bulletTags = bulletTags.ToArray(); } EditorGUILayout.Space(); }
//BulletTag stuff, somewhat shorter than the last one void BulletTagsGUI() { if (bp.bulletTags == null) bp.bulletTags = new BulletTag[0]; var bulletTags = new List<BulletTag>(bp.bulletTags); if (bulletTags.Count != bp.btFoldouts.Count) bp.btFoldouts = new List<bool>(new bool[bulletTags.Count]); if (bulletTags.Count != bp.btaFoldouts.Count) { bp.btaFoldouts = new List<ActionFoldouts>(new ActionFoldouts[bulletTags.Count]); if (bp.btaFoldouts.Count > 0) { for (var zz = 0; zz < bp.btaFoldouts.Count; zz++) { bp.btaFoldouts[zz] = new ActionFoldouts(); } } } GUILayout.BeginHorizontal(); bp.btFoldout = EditorGUILayout.Foldout(bp.btFoldout, "BulletTags"); if (GUILayout.Button("Collapse All", GUILayout.Width(150))) { bp.btFoldout = !bp.btFoldout; for (int zz = 0; zz < bp.btFoldouts.Count; zz++) bp.btFoldouts[zz] = bp.btFoldout; } GUILayout.EndHorizontal(); if (bp.btFoldout) { EditorGUI.indentLevel++; var removeIndex = -1; var moveIndex = -1; for (var l = 0; l < bulletTags.Count; l++) { EditorGUIUtility.labelWidth = 140; EditorGUIUtility.fieldWidth = 100; GUILayout.BeginHorizontal(); var str = "BulletTag " + (l + 1); bp.btFoldouts[l] = EditorGUILayout.Foldout(bp.btFoldouts[l], str); if (GUILayout.Button("Down", GUILayout.Width(50))) moveIndex = l; if (GUILayout.Button("Remove", GUILayout.Width(80))) removeIndex = l; GUILayout.EndHorizontal(); EditorGUILayout.Space(); if (bp.btFoldouts[l]) { GUI.changed = false; EditorGUI.indentLevel++; var bt = bulletTags[l]; GUILayout.BeginHorizontal(); if (!bt.randomSpeed) bt.speed.x = EditorGUILayout.FloatField("Speed", bt.speed.x); else bt.speed = EditorGUILayout.Vector2Field("Speed Range", bt.speed); bt.randomSpeed = EditorGUILayout.Toggle("Randomize", bt.randomSpeed); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); bt.rankSpeed = EditorGUILayout.Toggle("Add Rank", bt.rankSpeed); if (bt.rankSpeed) bt.speed.z = EditorGUILayout.FloatField("RankSpeed", bt.speed.z); GUILayout.EndHorizontal(); bt.prefabIndex = EditorGUILayout.IntSlider("PrefabIndex", bt.prefabIndex, 0, bm.bulletPrefab.Length - 1); if (GUI.changed) SceneView.RepaintAll(); BulletTagActionsGUI(l); EditorGUI.indentLevel--; EditorGUILayout.Space(); } } if (moveIndex >= 0 && moveIndex != bulletTags.Count - 1) { var temp = bulletTags[moveIndex]; bulletTags[moveIndex] = bulletTags[moveIndex + 1]; bulletTags[moveIndex + 1] = temp; var temp2 = bp.btFoldouts[moveIndex]; bp.btFoldouts[moveIndex] = bp.btFoldouts[moveIndex + 1]; bp.btFoldouts[moveIndex + 1] = temp2; var temp3 = bp.btaFoldouts[moveIndex]; bp.btaFoldouts[moveIndex] = bp.btaFoldouts[moveIndex + 1]; bp.btaFoldouts[moveIndex + 1] = temp3; } if (removeIndex >= 0) { bulletTags.RemoveAt(removeIndex); bp.btFoldouts.RemoveAt(removeIndex); bp.btaFoldouts.RemoveAt(removeIndex); } EditorGUILayout.Space(); GUILayout.BeginHorizontal(); GUILayout.Label(""); if (GUILayout.Button("Add Bullet Tag", GUILayout.Width(100))) { var bt = new BulletTag(); bulletTags.Add(bt); bp.btFoldouts.Add(true); bp.btaFoldouts.Add(new ActionFoldouts()); } GUILayout.EndHorizontal(); bp.bulletTags = bulletTags.ToArray(); } EditorGUILayout.Space(); }