private void InsertTouchArea(int i, EInsertType type, ECompositeType compositeType = ECompositeType.COMBINE) { switch (type) { case EInsertType.EMPTY: InsertTouchArea(i, null, compositeType); break; case EInsertType.BOX: InsertTouchArea <BoxCollider2D>(i, "Box Area", compositeType); break; case EInsertType.CAPSULE: InsertTouchArea <CapsuleCollider2D>(i, "Capsule Area", compositeType); break; case EInsertType.CIRCLE: InsertTouchArea <CircleCollider2D>(i, "Circle Area", compositeType); break; case EInsertType.POLYGON: InsertTouchArea <PolygonCollider2D>(i, "Polygon Area", compositeType); break; } }
private void InsertTouchArea <T>(int i, string objectName, ECompositeType compositeType = ECompositeType.COMBINE) where T : Collider2D { GameObject gameObject = new GameObject(objectName, typeof(T)); gameObject.transform.parent = (target as CompositeTouchArea).transform; gameObject.GetComponent <Collider2D>().isTrigger = true; InsertTouchArea(i, gameObject, compositeType); }
private void InsertTouchArea(int i, GameObject gameObject, ECompositeType compositeTypeValue = ECompositeType.COMBINE) { touchAreasProp.InsertArrayElementAtIndex(i + 1); showIndividualTouchAreas.Insert(i + 1, false); SerializedProperty area = touchAreasProp.GetArrayElementAtIndex(i + 1).FindPropertyRelative("area"); area.objectReferenceValue = gameObject; SerializedProperty compositeType = touchAreasProp.GetArrayElementAtIndex(i + 1).FindPropertyRelative("compositeType"); compositeType.enumValueIndex = (int)compositeTypeValue; }