Wizard. SetTerrainPosition

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Wizard. SetTerrainPosition

Сообщение Neodrop 19 апр 2009, 21:30

Написал сегодня новый скрипт для удобного позиционирования Террейнов.
Данный Wizard устанавливает Террейн addTerrain в позицию относительно Террейна mainTerrain. Или по X или по Z координатам. Удобно при создании большого мира из многих кусков-террейнов.

(c#)

Синтаксис:
Используется javascript
enum LayoutMode
{
        NORTH,
        SOUTH,
        WEST,
        EAST,
        ZERO
}

class NeoSetTerrainPosition extends ScriptableWizard
{
        var mainTerrain : Terrain;
        var addTerrain : Terrain;
        var layout : LayoutMode = LayoutMode.NORTH;
        private var show : boolean = false;
        @MenuItem("NeoTools/Terrain/Set Terrain position")
    static function CreateWizard ()
    {
        ScriptableWizard.DisplayWizard("Set Position", NeoSetTerrainPosition, "Set");
    }
       
        function OnWizardUpdate ()
    {
        helpString = "Well, let's go Rock!";
               
        if(!mainTerrain) {
            helpString = "I need a Main terrain!";
        }
                if(!addTerrain) {
            helpString = "I need a terrain to adding!";
        }
                if (mainTerrain && addTerrain) show = true;
    }
       
    function OnWizardCreate ()
    {
        var mainTerrData = mainTerrain.terrainData;
                var addTerrData = addTerrain.terrainData;
               
                switch (layout)
                {
                        case LayoutMode.NORTH : addTerrain.transform.position = Vector3(mainTerrain.transform.position.x, mainTerrain.transform.position.y, mainTerrain.transform.position.z + mainTerrData.size.z);
                        break;
                        case LayoutMode.SOUTH : addTerrain.transform.position = Vector3(mainTerrain.transform.position.x, mainTerrain.transform.position.y, mainTerrain.transform.position.z - mainTerrData.size.z);
                        break;
                        case LayoutMode.WEST : addTerrain.transform.position = Vector3(mainTerrain.transform.position.x - mainTerrData.size.x, mainTerrain.transform.position.y, mainTerrain.transform.position.z);
                        break;
                        case LayoutMode.EAST : addTerrain.transform.position = Vector3(mainTerrain.transform.position.x + mainTerrData.size.x, mainTerrain.transform.position.y, mainTerrain.transform.position.z);
                        break;
                        case LayoutMode.ZERO : addTerrain.transform.position = Vector3(0,0,0);
                }
               
        EditorUtility.DisplayDialog("Terrain done", "", "See You Again!");
    }
}
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1