예제 #1
0
    private void OnGUI()
    {
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false);

        //icon group: display variable fields
        EditorGUILayout.BeginHorizontal();
        equipdata = (equipdata)EditorGUILayout.ObjectField("equipdata", equipdata, typeof(Object), true);
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.BeginHorizontal();
        spawnanchor_icon = (UnityEngine.GameObject)EditorGUILayout.ObjectField("spawnanchor_icon", spawnanchor_icon, typeof(Object), true);
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.BeginHorizontal();
        prefab = (UnityEngine.GameObject)EditorGUILayout.ObjectField("prefab", prefab, typeof(Object), true);
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.BeginHorizontal();
        iconparent = (UnityEngine.GameObject)EditorGUILayout.ObjectField("iconparent", iconparent, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        _obj_at_icon = (UnityEngine.GameObject)EditorGUILayout.ObjectField("_obj_at_icon", _obj_at_icon, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        //button: place prefab for editting
        if ((GUILayout.Button("[test]place prefab icon")))
        {
            if (_obj_at_icon != null)
            {
                DestroyImmediate(_obj_at_icon, false);
            }
            _obj_at_icon = Instantiate(prefab, spawnanchor_icon.transform.position, spawnanchor_icon.transform.rotation);
            _obj_at_icon.transform.SetParent(iconparent.transform);
            _obj_at_icon.transform.localScale = spawnanchor_icon.transform.localScale;
        }
        //button: write data
        if ((GUILayout.Button("[write]prefab icon-remember offset")))
        {
            equipdata.prefab_icon_pos_offset      = _obj_at_icon.transform.position - spawnanchor_icon.transform.position;
            equipdata.prefab_icon_rotation_offset = Quaternion.Inverse(spawnanchor_icon.transform.rotation) * _obj_at_icon.transform.rotation;
            equipdata.prefab_icon_scale           = _obj_at_icon.transform.localScale;
            equipdata.prefab = prefab;
            EditorUtility.SetDirty(equipdata);
        }
        //button: read data into real objects
        if ((GUILayout.Button("[read]debug-generate modified prefab icon")))
        {
            if (_obj_at_icon != null)
            {
                DestroyImmediate(_obj_at_icon, false);
            }
            _obj_at_icon = Instantiate(equipdata.prefab, spawnanchor_icon.transform.position + equipdata.prefab_icon_pos_offset, spawnanchor_icon.transform.rotation * equipdata.prefab_icon_rotation_offset);

            _obj_at_icon.transform.SetParent(iconparent.transform);
            _obj_at_icon.transform.localScale = equipdata.prefab_icon_scale;
        }


        //item mount point group: display variable fields
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.TextArea("Use Below to set player mount offset.");
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        playerskin = (playermountreferer)EditorGUILayout.ObjectField("playerskin", playerskin, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        mount = (int)EditorGUILayout.IntField("mount", mount);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        _obj_at_player = (UnityEngine.GameObject)EditorGUILayout.ObjectField("debug: _obj_at_player", _obj_at_player, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        //button: place prefab on player
        if ((GUILayout.Button("place prefab on player")))
        {
            if (_obj_at_player != null)
            {
                DestroyImmediate(_obj_at_player, false);
            }

            GameObject spawnpoint = new GameObject();
            if (mount == 0)
            {
                spawnpoint = playerskin.prefab_mount_weapon_L;
            }
            if (mount == 1)
            {
                spawnpoint = playerskin.prefab_mount_weapon_R;
            }
            if (mount == 2)
            {
                spawnpoint = playerskin.prefab_mount_head;
            }
            if (mount == 3)
            {
                spawnpoint = playerskin.prefab_mount_armor;
            }


            _obj_at_player = Instantiate(prefab, spawnpoint.transform.position, spawnpoint.transform.rotation);
            _obj_at_player.transform.SetParent(spawnpoint.transform);
            _obj_at_player.transform.localScale = spawnpoint.transform.localScale;
        }

        //button: remember item on-player offset
        if ((GUILayout.Button("[write]prefab onplayer-remember offset")))
        {
            equipdata.mount = mount;
            GameObject spawnpoint = new GameObject();
            if (mount == 0)
            {
                spawnpoint = playerskin.prefab_mount_weapon_L;
            }
            if (mount == 1)
            {
                spawnpoint = playerskin.prefab_mount_weapon_R;
            }
            if (mount == 2)
            {
                spawnpoint = playerskin.prefab_mount_head;
            }
            if (mount == 3)
            {
                spawnpoint = playerskin.prefab_mount_armor;
            }
            equipdata.prefab_onhero_offset_pos = _obj_at_player.transform.position - spawnpoint.transform.position;
            equipdata.prefab_onhero_offset_rot = Quaternion.Inverse(spawnpoint.transform.rotation) * _obj_at_player.transform.rotation;
            equipdata.prefab_onhero_scale      = _obj_at_player.transform.localScale;
            equipdata.prefab = prefab;
            EditorUtility.SetDirty(equipdata);
        }

        //button: read from data the item on-player offset
        if ((GUILayout.Button("[read]debug-generate modified prefab on player")))
        {
            if (_obj_at_player != null)
            {
                DestroyImmediate(_obj_at_player, false);
            }
            GameObject spawnpoint = new GameObject();
            if (equipdata.mount == 0)
            {
                spawnpoint = playerskin.prefab_mount_weapon_L;
            }
            if (equipdata.mount == 1)
            {
                spawnpoint = playerskin.prefab_mount_weapon_R;
            }
            if (equipdata.mount == 2)
            {
                spawnpoint = playerskin.prefab_mount_head;
            }
            if (equipdata.mount == 3)
            {
                spawnpoint = playerskin.prefab_mount_armor;

                GameObject spawnpoint_R       = playerskin.prefab_mount_armor_R;
                GameObject _armor_R_on_player = Instantiate(equipdata.prefab, spawnpoint.transform.position + equipdata.prefab_onhero_offset_pos, spawnpoint.transform.rotation * equipdata.prefab_onhero_offset_rot);
                _armor_R_on_player.transform.SetParent(spawnpoint.transform);
                _armor_R_on_player.transform.localScale = equipdata.prefab_onhero_scale;

                _armor_R_on_player.transform.rotation *= Quaternion.AngleAxis(180, Vector3.up);

                Vector3 newlocalPos = new Vector3(_armor_R_on_player.transform.localPosition.x, _armor_R_on_player.transform.localPosition.y, _armor_R_on_player.transform.localPosition.z * (-1f));
                _armor_R_on_player.transform.SetParent(spawnpoint_R.transform);
                _armor_R_on_player.transform.localPosition = newlocalPos;
            }
            _obj_at_player = Instantiate(equipdata.prefab, spawnpoint.transform.position + equipdata.prefab_onhero_offset_pos, spawnpoint.transform.rotation * equipdata.prefab_onhero_offset_rot);

            _obj_at_player.transform.SetParent(spawnpoint.transform);
            _obj_at_player.transform.localScale = equipdata.prefab_onhero_scale;
        }



        //detail display tab group: variable fields
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.TextArea("Use Below to set tabdisplay offset.");
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        spawnanchor_tabdisplay = (UnityEngine.GameObject)EditorGUILayout.ObjectField("spawnanchor_tabdisplay", spawnanchor_tabdisplay, typeof(Object), true);
        EditorGUILayout.EndHorizontal();


        EditorGUILayout.BeginHorizontal();
        _displaytab_parent = (UnityEngine.GameObject)EditorGUILayout.ObjectField("_displaytab_parent", _displaytab_parent, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        _obj_at_displaytab = (UnityEngine.GameObject)EditorGUILayout.ObjectField("_obj_at_displaytab", _obj_at_displaytab, typeof(Object), true);
        EditorGUILayout.EndHorizontal();

        //button: place item prefab on anchor
        if ((GUILayout.Button("[test]place prefab tabdisplay")))
        {
            if (_obj_at_displaytab != null)
            {
                DestroyImmediate(_obj_at_displaytab, false);
            }
            _obj_at_displaytab = Instantiate(prefab, spawnanchor_tabdisplay.transform.position, spawnanchor_tabdisplay.transform.rotation);
            _obj_at_displaytab.transform.SetParent(_displaytab_parent.transform);
            _obj_at_displaytab.transform.localScale = spawnanchor_tabdisplay.transform.localScale;
        }
        //button: write to data container
        if ((GUILayout.Button("[write]prefab tabdisplay-remember offset")))
        {
            equipdata.prefab_displaytab_offset_pos = _obj_at_displaytab.transform.position - spawnanchor_tabdisplay.transform.position;
            equipdata.prefab_displaytab_offset_rot = Quaternion.Inverse(spawnanchor_tabdisplay.transform.rotation) * _obj_at_displaytab.transform.rotation;
            equipdata.prefab_displaytab_scale      = _obj_at_displaytab.transform.localScale;
            EditorUtility.SetDirty(equipdata);
        }
        //button: read from data container
        if ((GUILayout.Button("[read]debug-generate modified prefab tabdisplay")))
        {
            if (_obj_at_displaytab != null)
            {
                DestroyImmediate(_obj_at_displaytab, false);
            }
            _obj_at_displaytab = Instantiate(equipdata.prefab, spawnanchor_tabdisplay.transform.position + equipdata.prefab_displaytab_offset_pos, spawnanchor_tabdisplay.transform.rotation * equipdata.prefab_displaytab_offset_rot);

            _obj_at_displaytab.transform.SetParent(_displaytab_parent.transform);
            _obj_at_displaytab.transform.localScale = equipdata.prefab_displaytab_scale;
        }

        //end of the tool interface
        GUILayout.EndScrollView();
    }
예제 #2
0
    public void display_equipments_on_player(playermountreferer mountreferer)
    {
        foreach (string s in equipments_equipped)
        {
            //d: equip stat0_basicstat   m1: equip stat1_magicstat    m2: equip stat2_magicstat
            //fetch part1 data object [_ _ _ d _ _ _ _]
            equipdata d = gamemanager.GM.equipmentmanager.allequipmentdata.types[ASCIIToInt(s[0])].subtype[ASCIIToInt(s[1])].rarity[ASCIIToInt(s[2])].weapondatas[ASCIIToInt(s[3])];
            //fetch part2 data object [_ _ _ _ d _ _ _]
            equipdata m1 = gamemanager.GM.equipmentmanager.allequipdata_magicstat1.types[ASCIIToInt(s[0])].subtype[ASCIIToInt(s[1])].rarity[ASCIIToInt(s[2])].weapondatas[ASCIIToInt(s[4])];
            //fetch part1 data object [_ _ _ _ _ d _ _]
            equipdata m2 = gamemanager.GM.equipmentmanager.allequipdata_magicstat2.types[ASCIIToInt(s[0])].subtype[ASCIIToInt(s[1])].rarity[ASCIIToInt(s[2])].weapondatas[ASCIIToInt(s[5])];

            if (d.displayonhero)
            {
                if (d.mount == 0)//left hand
                {
                    Transform  mountpoint        = mountreferer.prefab_mount_weapon_L.transform;
                    GameObject _weapon_on_player = Instantiate(d.prefab, mountpoint.position, mountpoint.rotation);
                    _weapon_on_player.transform.SetParent(mountpoint.transform);
                    _weapon_on_player.transform.position = _weapon_on_player.transform.position + d.prefab_onhero_offset_pos;
                    _weapon_on_player.transform.rotation = _weapon_on_player.transform.rotation * d.prefab_onhero_offset_rot;

                    _weapon_on_player.transform.localScale = d.prefab_onhero_scale + mountreferer.playerdifference_offset_scale;
                }
                if (d.mount == 1)//right hand
                {
                    Transform  mountpoint        = mountreferer.prefab_mount_weapon_R.transform;
                    GameObject _weapon_on_player = Instantiate(d.prefab, mountpoint.position, mountpoint.rotation);
                    _weapon_on_player.transform.SetParent(mountpoint.transform);
                    _weapon_on_player.transform.position = _weapon_on_player.transform.position + d.prefab_onhero_offset_pos;
                    _weapon_on_player.transform.rotation = _weapon_on_player.transform.rotation * d.prefab_onhero_offset_rot;

                    _weapon_on_player.transform.localScale = d.prefab_onhero_scale + mountreferer.playerdifference_offset_scale;
                }
                if (d.mount == 2)//head
                {
                    Transform  mountpoint        = mountreferer.prefab_mount_head.transform;
                    GameObject _weapon_on_player = Instantiate(d.prefab, mountpoint.position, mountpoint.rotation);


                    _weapon_on_player.transform.SetParent(mountpoint.transform);

                    _weapon_on_player.transform.position   = _weapon_on_player.transform.position + d.prefab_onhero_offset_pos;
                    _weapon_on_player.transform.rotation   = _weapon_on_player.transform.rotation * d.prefab_onhero_offset_rot;
                    _weapon_on_player.transform.localScale = d.prefab_onhero_scale + mountreferer.playerdifference_offset_scale;
                }
                if (d.mount == 3)//armor
                {
                    Transform  mountpoint        = mountreferer.prefab_mount_armor.transform;
                    GameObject _weapon_on_player = Instantiate(d.prefab, mountpoint.position, mountpoint.rotation);
                    _weapon_on_player.transform.SetParent(mountpoint.transform);
                    _weapon_on_player.transform.position = _weapon_on_player.transform.position + d.prefab_onhero_offset_pos;
                    _weapon_on_player.transform.rotation = _weapon_on_player.transform.rotation * d.prefab_onhero_offset_rot;

                    _weapon_on_player.transform.localScale = d.prefab_onhero_scale + mountreferer.playerdifference_offset_scale;


                    Transform mountpoint_R = mountreferer.prefab_mount_armor_R.transform;


                    GameObject _armor_R_on_player = Instantiate(d.prefab, mountpoint.position + d.prefab_onhero_offset_pos, mountpoint.rotation * d.prefab_onhero_offset_rot);
                    _armor_R_on_player.transform.SetParent(mountpoint.transform);
                    _armor_R_on_player.transform.localScale = d.prefab_onhero_scale;

                    _armor_R_on_player.transform.rotation *= Quaternion.AngleAxis(180, Vector3.up);

                    Vector3 newlocalPos = new Vector3(_armor_R_on_player.transform.localPosition.x, _armor_R_on_player.transform.localPosition.y, _armor_R_on_player.transform.localPosition.z * (-1f));
                    _armor_R_on_player.transform.SetParent(mountpoint_R.transform);
                    _armor_R_on_player.transform.localPosition = newlocalPos;
                }
            }
        }
    }