Exemple #1
0
 public int CopyNumber()
 {
     if (!isCopy)
     {
         return(1);
     }
     else if (original != null)
     {
         return(original.CopyNumber(this));
     }
     else
     {
         return(-1);
     }
 }
Exemple #2
0
        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;
        }