Страница 1 из 1

Wizard. SetTerrainPosition

СообщениеДобавлено: 19 апр 2009, 21:30
Neodrop
Написал сегодня новый скрипт для удобного позиционирования Террейнов.
Данный 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!");
    }
}