public static float Add(GameObject go) { if(instance == null){ GameObject aux = new GameObject("BulletMarkManager"); instance = aux.AddComponent("BulletMarkManager") as BulletMarkManager; instance.maxMarks = 60; } GameObject auxGO; Transform auxT; Transform currentT = go.transform; Vector3 currentPos = currentT.position; float radius = (currentT.localScale.x * currentT.localScale.x * 0.25f) + (currentT.localScale.y * currentT.localScale.y * 0.25f) + (currentT.localScale.z * currentT.localScale.z * 0.25f); radius = Mathf.Sqrt(radius); float realRadius = radius * 2f; radius *= 0.2f; float distance; if(instance.marks.Count == instance.maxMarks){ auxGO = (GameObject)instance.marks[0]; Destroy(auxGO); instance.marks.RemoveAt(0); instance.pushDistances.RemoveAt(0); } float pushDistance = 0.0001f; int length = instance.marks.Count; // int sideMarks = 0; for(int i= 0; i < length; i++){ auxGO = instance.marks[i] as GameObject; if(auxGO != null){ auxT = auxGO.transform; distance = (auxT.position - currentPos).magnitude; if(distance < radius){ Destroy(auxGO); instance.marks.RemoveAt(i); instance.pushDistances.RemoveAt(i); i--; length--; } else if(distance < realRadius){ float cDist = (float)instance.pushDistances[i]; pushDistance = Mathf.Max(pushDistance, cDist); } } else { instance.marks.RemoveAt(i); instance.pushDistances.RemoveAt(i); i--; length--; } } pushDistance += 0.0005f; instance.marks.Add(go); instance.pushDistances.Add(pushDistance); return pushDistance; }
void Start() { if(instance == null){ instance = this; } }
private void DrawWeaponBase() { EditorGUILayout.Space(); EditorGUILayout.BeginVertical("Window"); EditorGUI.BeginChangeCheck(); int weaponId = EditorGUILayout.IntField("Weapon ID", m_Target.weaponId); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Weapon ID"); m_Target.weaponId = weaponId; } EditorGUI.BeginChangeCheck(); string weaponName = EditorGUILayout.TextField("Weapon Name", m_Target.weaponName); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Weapon Name"); m_Target.weaponName = weaponName; } if (m_Target.weaponName.Length > 0) { m_Target.gameObject.name = m_Target.weaponName; } else { m_Target.gameObject.name = "Weapon Name"; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Weapon Icon"); EditorGUI.BeginChangeCheck(); Texture2D weaponIcon = (Texture2D)EditorGUILayout.ObjectField(m_Target.weaponIcon, typeof(Texture2D), false); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Weapon Icon"); m_Target.weaponIcon = weaponIcon; } EditorGUILayout.EndHorizontal(); EditorGUI.BeginChangeCheck(); GameObject droppablePrefab = (GameObject)EditorGUILayout.ObjectField("Droppable Prefab", m_Target.droppablePrefab, typeof(GameObject), false); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Droppable Prefab"); m_Target.droppablePrefab = droppablePrefab; } EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); float weight = EditorGUILayout.Slider("Weapon Weight", m_Target.weight, 0, 2.5f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Weapon Weight"); m_Target.weight = weight; } EditorGUI.BeginChangeCheck(); CrosshairStyle crosshairStyle = (CrosshairStyle)EditorGUILayout.EnumPopup("Crosshair Style", m_Target.crosshairStyle); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Crosshair Style"); m_Target.crosshairStyle = crosshairStyle; } EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); bool melee = EditorGUILayout.Toggle("Melee Attack", m_Target.melee); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Disabe/Enable Melee Attack"); m_Target.melee = melee; } EditorGUILayout.Space(); EditorGUI.BeginChangeCheck(); Camera mainCamera = (Camera)EditorGUILayout.ObjectField("Main Camera", m_Target.mainCamera, typeof(Camera), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Main Camera"); m_Target.mainCamera = mainCamera; } EditorGUI.BeginChangeCheck(); MoveController controller = (MoveController)EditorGUILayout.ObjectField("Player", m_Target.controller, typeof(MoveController), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Player"); m_Target.controller = controller; } EditorGUI.BeginChangeCheck(); CameraAnimations cameraAnimations = (CameraAnimations)EditorGUILayout.ObjectField("Camera Animations", m_Target.cameraAnimations, typeof(CameraAnimations), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Camera Animations"); m_Target.cameraAnimations = cameraAnimations; } EditorGUI.BeginChangeCheck(); PlayerUI ui = (PlayerUI)EditorGUILayout.ObjectField("UI", m_Target.UI, typeof(PlayerUI), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed UI"); m_Target.UI = ui; } EditorGUI.BeginChangeCheck(); BulletMarkManager bulletMark = (BulletMarkManager)EditorGUILayout.ObjectField("Bullet Marks Manager", m_Target.bulletMark, typeof(BulletMarkManager), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Bullet Marks Manager"); m_Target.bulletMark = bulletMark; } EditorGUI.BeginChangeCheck(); WeaponsManager weaponManager = (WeaponsManager)EditorGUILayout.ObjectField("Weapons Manager", m_Target.weaponManager, typeof(WeaponsManager), true); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Bullet Weapons Manager"); m_Target.weaponManager = weaponManager; } EditorGUILayout.Space(); if (GUILayout.Button("Enable / Disabe")) { if (hide) { hide = false; } else { hide = true; } m_Target.DisableRenders(hide); } EditorGUILayout.EndVertical(); }