Duplication.OnGUI C# (CSharp) Méthode

OnGUI() private méthode

private OnGUI ( ) : void
Résultat void
    void OnGUI()
    {
        // get selected object
        selObj = Selection.gameObjects;

        // number of duplicates
        duplicates = EditorGUILayout.IntField("Number of Duplicates", duplicates);
        objName = EditorGUILayout.TextField("Name", objName);
        objNumering = EditorGUILayout.Toggle("Number Duplicates", objNumering);
        byLocal = EditorGUILayout.Toggle("By Local Orientations", byLocal);

        // duplicate as group
        if(selObj.Length > 1)
            byGroup = EditorGUILayout.Toggle("As Group", byGroup);
        else
            byGroup = false;

        // offsets inputs
        locOffset = EditorGUILayout.Vector3Field("Location Offset", locOffset);
        rotOffset = EditorGUILayout.Vector3Field("Rotation Offset", rotOffset);
        scaleOffset = EditorGUILayout.Vector3Field("Scale Offset", scaleOffset);

        // duplicate button
        if(GUILayout.Button("Duplicate", EditorStyles.miniButton)){
            Undo.RegisterSceneUndo("Duplicating");
            if(byGroup){
                // create a parent gameobject for the group of selection
                GameObject groupParent = new GameObject("Duplication Group");
                for(objNumber = 0; objNumber < selObj.Length; objNumber++){
                    selObj[objNumber].transform.parent = groupParent.transform;
                    groupParent.transform.position += selObj[objNumber].transform.position;
                }
                groupParent.transform.position /= objNumber;

                for(dupCounter = 0; dupCounter < duplicates; dupCounter++){
                    if(byLocal){
                        rotation = groupParent.transform.rotation;
                        dupTransform = groupParent.transform;

                        GameObject go = Instantiate(groupParent, dupTransform.position, dupTransform.rotation) as GameObject;
                        if(objName.Length != 0)
                            go.name = objName;
                        if(objNumering){
                            go.name += dupCounter;
                        }

                        dupTransform.position += dupTransform.right * locOffset.x;
                        dupTransform.position += dupTransform.up * locOffset.y;
                        dupTransform.position += dupTransform.forward * locOffset.z;

                        rotation.eulerAngles += rotOffset;
                        dupTransform.rotation = rotation;
                        dupTransform.localScale += scaleOffset;

                        groupParent.transform.position = dupTransform.position;
                        groupParent.transform.rotation = dupTransform.rotation;
                        groupParent.transform.localScale = dupTransform.localScale;
                    }
                    else{
                        rotation = groupParent.transform.rotation;
                        dupTransform = groupParent.transform;

                        GameObject go = Instantiate(groupParent, dupTransform.position, dupTransform.rotation) as GameObject;
                        if(objName.Length != 0)
                            go.name = objName;
                        if(objNumering){
                            go.name += dupCounter;
                        }

                        dupTransform.position += locOffset;
                        rotation.eulerAngles += rotOffset;
                        dupTransform.rotation = rotation;
                        dupTransform.localScale += scaleOffset;

                        groupParent.transform.position = dupTransform.position;
                        groupParent.transform.rotation = dupTransform.rotation;
                        groupParent.transform.localScale = dupTransform.localScale;
                    }
                }
            }
            else{
                for(dupCounter = 0; dupCounter < duplicates; dupCounter++){
                    if(byLocal){
                        for(objNumber = 0; objNumber < selObj.Length; objNumber++){
                            rotation = selObj[objNumber].transform.rotation;
                            dupTransform = selObj[objNumber].transform;

                            GameObject go = Instantiate(selObj[objNumber], dupTransform.position, dupTransform.rotation) as GameObject;
                            if(objName.Length != 0)
                                go.name = objName;
                            else
                                go.name = selObj[objNumber].name;
                            if(objNumering){
                                go.name += dupCounter;
                            }

                            dupTransform.position += dupTransform.right * locOffset.x;
                            dupTransform.position += dupTransform.up * locOffset.y;
                            dupTransform.position += dupTransform.forward * locOffset.z;

                            rotation.eulerAngles += rotOffset;
                            dupTransform.rotation = rotation;
                            dupTransform.localScale += scaleOffset;
                        }
                    }
                    else{
                        for(objNumber = 0; objNumber < selObj.Length; objNumber++){
                            rotation = selObj[objNumber].transform.rotation;
                            dupTransform = selObj[objNumber].transform;

                            GameObject go = Instantiate(selObj[objNumber], dupTransform.position, dupTransform.rotation) as GameObject;
                            if(objName.Length != 0)
                                go.name = objName;
                            else
                                go.name = selObj[objNumber].name;
                            if(objNumering){
                                go.name += dupCounter;
                            }

                            dupTransform.position += locOffset;
                            rotation.eulerAngles += rotOffset;
                            dupTransform.rotation = rotation;
                            dupTransform.localScale += scaleOffset;
                        }
                    }
                }
            }
        }
    }
Duplication