public int CopyNumber() { if (!isCopy) { return(1); } else if (original != null) { return(original.CopyNumber(this)); } else { return(-1); } }
void ElementCallBackDelegate(Rect rect, int index, bool isActive, bool isFocused) { float elementWidth = rect.width; float elementY = rect.y + 2f; float buttonOffset = 5f; GlassType element = manager.GetGlassType(index);//manager.glassTypes[index]; if (element == null) { manager.RemoveNullypes(); return; } if (!element.MatchingRenderOrder(manager.GetGlassTypeBefore(element))) { IncreaseListColour(); } GUI.backgroundColor = listColours[listColourIndex]; float indexLabelWidth = index.ToString().Length * 10f; float doubleRenderWidth = element.isGlass ? 20f : 0f; float renderQueueWidth = element.renderOrder.ToString().Length * 8.5f; float renderBackWidth = element.isGlass ? 45f : 0f; float renderFrontWidth = renderBackWidth; float copyCountWidth = element.HasCopies() ? 30f : 0f; float revertButtonWidth = element.CanRevert() ? 60f : 0f; float nameLabelWidth = elementWidth - indexLabelWidth - renderQueueWidth - doubleRenderWidth - copyCountWidth - buttonOffset - renderFrontWidth - renderBackWidth - revertButtonWidth; Rect indexLabelRect = new Rect(rect.x, elementY, indexLabelWidth, EditorGUIUtility.singleLineHeight); Rect nameLabelRect = new Rect(indexLabelRect.xMax, elementY, nameLabelWidth, EditorGUIUtility.singleLineHeight); Rect copyCountRect = new Rect(nameLabelRect.xMax, elementY, copyCountWidth, EditorGUIUtility.singleLineHeight); Rect renderQueueRect = new Rect(copyCountRect.xMax, elementY, renderQueueWidth, EditorGUIUtility.singleLineHeight); Rect doubleRenderRect = new Rect(renderQueueRect.xMax + buttonOffset, elementY, doubleRenderWidth, EditorGUIUtility.singleLineHeight); Rect renderBackRect = new Rect(doubleRenderRect.xMax + buttonOffset, elementY, renderBackWidth, EditorGUIUtility.singleLineHeight); Rect renderFrontRect = new Rect(renderBackRect.xMax, elementY, renderFrontWidth, EditorGUIUtility.singleLineHeight); Rect revertButtonRect = new Rect(renderQueueRect.xMax + buttonOffset, elementY, revertButtonWidth, EditorGUIUtility.singleLineHeight); EditorGUI.LabelField(indexLabelRect, (index + 1).ToString()); EditorGUI.LabelField(nameLabelRect, element.presetName); if (element.HasCopies()) { EditorGUI.LabelField(copyCountRect, "(" + element.CopyNumber() + ")"); } int newOrder = EditorGUI.IntField(renderQueueRect, element.renderOrder); if (newOrder != element.renderOrder) { element.SetRenderOrder(newOrder); ////manager.SortByRenderOrder(); //listModified = true; } if (element.isGlass) { if (!element.isCopy) { if (GUI.Button(doubleRenderRect, "+")) { manager.AddCopy(element); listModified = true; } } else { if (GUI.Button(doubleRenderRect, "-")) { manager.RemoveCopy(element); listModified = true; } } } //element.renderTwice = EditorGUI.ToggleLeft(doubleRenderRect, "2", element.renderTwice); if (element.isGlass) { bool newRenderBack = EditorGUI.ToggleLeft(renderBackRect, "back", element.renderBack); bool newRenderFront = EditorGUI.ToggleLeft(renderFrontRect, "front", element.renderFront); if (newRenderBack != element.renderBack) { listModified = true; } if (newRenderFront != element.renderFront) { listModified = true; } element.renderBack = newRenderBack; element.renderFront = newRenderFront; } if (element.CanRevert()) { if (GUI.Button(revertButtonRect, "Revert")) { element.RevertRenderQueue(); //manager.SortByRenderOrder(); listModified = true; } } GUI.backgroundColor = Color.white; }