Exemplo n.º 1
0
    public void applyRingModify()
    {
        for (int i = objArray.Count - 1; i > -1; i--)
        {
            if (objArray[i])
            {
                GameObject.DestroyImmediate(objArray[i].gameObject);
            }
        }
        objArray.Clear();

        float step = 2 * Mathf.PI / count;

        for (int i = 0; i < count; i++)
        {
            GameObject obj = (GameObject)GameObject.Instantiate((Object)gameObject);
            obj.transform.parent        = this.transform.parent;
            obj.transform.localPosition = new Vector3(this.transform.localPosition.x, ringRadius * Mathf.Sin(i * step) + ringCenter.y, ringRadius * Mathf.Cos(i * step) + ringCenter.x);
            obj.transform.localScale    = this.transform.localScale;
            obj.transform.eulerAngles   = transform.eulerAngles;
            objArray.Add(obj.transform);
            ModifyProperty temp = obj.GetComponent <ModifyProperty>();
            if (temp)
            {
                DestroyImmediate(temp);
            }
        }
    }
Exemplo n.º 2
0
    public void applyArrayModify()
    {
        if (count <= 1)
        {
            return;
        }
        if (objArray == null)
        {
            objArray = new List <Transform>();
        }
        for (int i = objArray.Count - 1; i > -1; i--)
        {
            if (objArray[i] == null)
            {
                objArray.RemoveAt(i);
            }
        }
        if (objArray.Count == 0)
        {
            objArray.Add(this.transform);
        }
        Vector3 rootPosition = this.transform.localPosition;

        for (int i = 1; i < objArray.Count; i++)
        {
            objArray[i].parent        = this.transform.parent;
            objArray[i].localPosition = rootPosition + new Vector3(relativeOffset.x * i, relativeOffset.y * i, relativeOffset.z * i);
            objArray[i].localScale    = this.transform.localScale;
        }
        for (int i = objArray.Count; i < count; i++)
        {
            GameObject obj = (GameObject)GameObject.Instantiate((Object)gameObject);
            obj.transform.parent        = this.transform.parent;
            obj.transform.localPosition = rootPosition + new Vector3(relativeOffset.x * i, relativeOffset.y * i, relativeOffset.z * i);
            obj.transform.localScale    = this.transform.localScale;
            objArray.Add(obj.transform);
            ModifyProperty temp = obj.GetComponent <ModifyProperty>();
            if (temp)
            {
                DestroyImmediate(temp);
            }
        }
        if (objArray.Count > count)
        {
            for (int i = objArray.Count - 1; i > count - 1; i--)
            {
                GameObject.DestroyImmediate(objArray[i].gameObject);
                objArray.RemoveAt(i);
            }
        }
    }
Exemplo n.º 3
0
    public override void OnInspectorGUI()
    {
        ModifyProperty modifyproperty = (ModifyProperty)target;

        modifyproperty.modifyType = (ModifyProperty.ModifyType)EditorGUILayout.EnumPopup("ModifyType", modifyproperty.modifyType);
        if (modifyproperty.modifyType == ModifyProperty.ModifyType.Array)
        {
            modifyproperty.relativeOffset = EditorGUILayout.Vector3Field("Relative Offset", modifyproperty.relativeOffset);
            modifyproperty.count          = EditorGUILayout.IntField("Count", modifyproperty.count);
        }
        else
        {
            modifyproperty.ringCenter = EditorGUILayout.Vector3Field("Ring Center", modifyproperty.ringCenter);
            modifyproperty.ringRadius = EditorGUILayout.FloatField("Radius", modifyproperty.ringRadius);
            modifyproperty.count      = EditorGUILayout.IntField("Count", modifyproperty.count);
        }

        if (GUILayout.Button("Apply"))
        {
            modifyproperty.applyModify();
        }
    }