public override void OnInspectorGUI() { ItemDefinition item = (ItemDefinition)target; base.OnInspectorGUI(); if (item.useCustomCenterOfMass) { if (GUILayout.Button("Move Center of Mass " + showCenterOfMassHandle)) { showCenterOfMassHandle = !showCenterOfMassHandle; } } if (item.itemId == "") { EditorGUILayout.HelpBox("Do not forget to assign a valid Item ID.", MessageType.Error); } foreach (MeshCollider col in item.gameObject.GetComponentsInChildren <MeshCollider>()) { if (!col.convex) { EditorGUILayout.HelpBox("The mesh collider " + col.name + " has to be set to convex.", MessageType.Error); } } if (!item.GetComponentInChildren <Collider>()) { EditorGUILayout.HelpBox("There are no colliders assigned to this object. It will fall through the ground.", MessageType.Error); } GameObject[] collObj = new GameObject[item.GetComponentsInChildren <Collider>().Length]; List <GameObject> hasRepeatedColliders = new List <GameObject>(item.GetComponentsInChildren <Collider>().Length); for (int i = 0; i < item.GetComponentsInChildren <Collider>().Length; i++) { bool isRepeated = false; foreach (GameObject ExistingCol in collObj) { if (item.GetComponentsInChildren <Collider>()[i] && item.GetComponentsInChildren <Collider>()[i].gameObject == ExistingCol) { isRepeated = true; hasRepeatedColliders.Add(item.GetComponentsInChildren <Collider>()[i].gameObject); } } if (!isRepeated && collObj[i] == null) { collObj[i] = item.GetComponentsInChildren <Collider>()[i].gameObject; } } foreach (GameObject col in collObj) { if (col) { if (hasRepeatedColliders.Contains(col)) { EditorGUILayout.HelpBox("Collider object " + col.name + " has more than one collider script.", MessageType.Error); } } } foreach (Collider collider in item.GetComponentsInChildren <Collider>()) { if (!collider.sharedMaterial && collider != item.customInertiaTensorCollider) { EditorGUILayout.HelpBox("Collider " + collider.name + " is missing a physics material and will not make sounds nor decals on impact.", MessageType.Warning); } if (!collider.GetComponentInParent <ColliderGroup>() && collider != item.customInertiaTensorCollider) { EditorGUILayout.HelpBox("Collider " + collider.name + " do not have any Collider Group on parent.", MessageType.Warning); } } if (item.holderPoint == null) { EditorGUILayout.HelpBox("There is no holder point assigned to this object. It will not be able to be holstered.", MessageType.Warning); } if (item.parryPoint == null) { EditorGUILayout.HelpBox("There is no parry point assigned to this object. Enemies will not know how to weild it.", MessageType.Warning); } if (item.transform.lossyScale != Vector3.one) { EditorGUILayout.HelpBox("The scale of the Item definition object should set to 1. Sercale the Mesh object instead.", MessageType.Warning); } if (!item.mainHandleLeft || !item.mainHandleRight) { EditorGUILayout.HelpBox("There are no handles on this object. It will not be able to be picked up from the spawn book.", MessageType.Warning); } }
public override void OnInspectorGUI() { ItemDefinition item = (ItemDefinition)target; base.OnInspectorGUI(); if (item.customCenterOfMass) { if (GUILayout.Button("Move Center of Mass")) { if (modifyCenterOfMass) { modifyCenterOfMass = false; } else { modifyCenterOfMass = true; } } } bool noRenderers = false; if (item.renderers.Count == 0) { noRenderers = true; } for (int i = 0; i < item.renderers.Count; i++) { if (!item.renderers[i]) { noRenderers = true; } } bool hasColliders = false; for (int i = 0; i < item.colliderGroups.Count; i++) { for (int j = 0; j < item.colliderGroups[i].colliders.Count; j++) { if (item.colliderGroups[i].colliders[j]) { hasColliders = true; } } } bool noWhooshPoints = false; if (item.whooshPoints.Count == 0) { noWhooshPoints = true; } for (int i = 0; i < item.whooshPoints.Count; i++) { if (!item.whooshPoints[i]) { noWhooshPoints = true; } } if (item.itemId == "") { EditorGUILayout.HelpBox("Do not forget to assign a valid Item ID.", MessageType.Error); } if (noRenderers) { EditorGUILayout.HelpBox("There are no renderers assigned to this object. The item will be invisible.", MessageType.Error); } foreach (MeshCollider col in item.gameObject.GetComponentsInChildren <MeshCollider>()) { if (!col.convex) { EditorGUILayout.HelpBox("The mesh collider " + col.name + " has to be set to convex.", MessageType.Error); } } if (!hasColliders) { EditorGUILayout.HelpBox("There are no colliders assigned to this object. It will fall through the ground.", MessageType.Error); } GameObject[] collObj = new GameObject[item.GetComponentsInChildren <Collider>().Length]; List <GameObject> hasRepeatedColliders = new List <GameObject>(item.GetComponentsInChildren <Collider>().Length); for (int i = 0; i < item.GetComponentsInChildren <Collider>().Length; i++) { bool isRepeated = false; foreach (GameObject ExistingCol in collObj) { if (item.GetComponentsInChildren <Collider>()[i] && item.GetComponentsInChildren <Collider>()[i].gameObject == ExistingCol) { isRepeated = true; hasRepeatedColliders.Add(item.GetComponentsInChildren <Collider>()[i].gameObject); } } if (!isRepeated && collObj[i] == null) { collObj[i] = item.GetComponentsInChildren <Collider>()[i].gameObject; } } foreach (GameObject col in collObj) { if (col) { if (hasRepeatedColliders.Contains(col)) { EditorGUILayout.HelpBox("Collider object " + col.name + " has more than one collider script.", MessageType.Error); } } } if (hasColliders) { for (int a = 0; a < item.colliderGroups.Count; a++) { for (int i = 0; i < item.colliderGroups[a].colliders.Count; i++) { if (!hasRepeatedColliders.Contains(item.colliderGroups[a].colliders[i].gameObject) && item.colliderGroups[a].colliders[i] && !item.colliderGroups[a].colliders[i].sharedMaterial) { EditorGUILayout.HelpBox("Collider " + item.colliderGroups[a].colliders[i].name + " is missing a physics material and will not make sounds nor decals on impact.", MessageType.Warning); } } } } foreach (GameObject col in collObj) { if (col) { bool colliderNotAssigned = true; for (int a = 0; a < item.colliderGroups.Count; a++) { for (int b = 0; b < item.colliderGroups[a].colliders.Count; b++) { if (item.colliderGroups[a].colliders[b] && col == item.colliderGroups[a].colliders[b].gameObject) { colliderNotAssigned = false; } } } if (colliderNotAssigned && col) { EditorGUILayout.HelpBox("Collider " + col.name + " has not been assigned to any Collider Group.", MessageType.Warning); } } } if (noWhooshPoints) { EditorGUILayout.HelpBox("There are no whoosh points assigned to this object. The item will not make air sounds when moving.", MessageType.Warning); } if (item.holderPoint == null) { EditorGUILayout.HelpBox("There is no holder point assigned to this object. It will not be able to be holstered.", MessageType.Warning); } if (item.parryPoint == null) { EditorGUILayout.HelpBox("There is no parry point assigned to this object. Enemies will not know how to weild it.", MessageType.Warning); } if (item.transform.lossyScale != Vector3.one) { EditorGUILayout.HelpBox("The scale of the Item definition object should set to 1. Sercale the Mesh object instead.", MessageType.Warning); } if (!item.mainHandleLeft || !item.mainHandleRight) { EditorGUILayout.HelpBox("There are no handles on this object. It will not be able to be picked up from the spawn book.", MessageType.Warning); } }