Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Функции, применяемые при разработке скрипт плугинов

Читайте также:
  1. HLA - система; классы антигенов, биологические функции, практическое значение HLA-типирования.
  2. I. Средства, применяемые при лечении заболеваний, вызванных патогенными грибами
  3. АНГЛИЙСКИЕ СОКРАЩЕНИЯ, ПРИМЕНЯЕМЫЕ В МЕЖДУНАРОДНОМ ТОРГОВОМ СУДОХОДСТВЕ 1 страница
  4. Введение в WSH. Обзор технологий скриптинга
  5. Виды внутриконтурного заводнения, применяемые в Когалымском регионе.
  6. Вы можете выполнять задачи геообработки, запустив инструмент из диалогового окна, командной строки, либо в рамках скрипта или модели.
  7. Вычислить значение функции. Осуществить вывод значений вводимых исходных данных и результат вычисления значения функции, сопровождая вывод наименованием переменных.

Функция addPluginRollouts () используется внутри средства create, чаще всего для плугинов, которые не создают объектов собственного класса. Обычно такие плугины создают несколько объектов существующих классов с заранее заданными свойствами. С помощью функции addPluginRollouts можно разместить свиток одного или нескольких объектов на панели Create с тем, чтобы задавать его параметры перед созданием. В качестве параметра функции передается ссылка на объект

addPluginRollouts Объект

В приведенном примере рассматривается плугин, создающий три источника света. Он определяет два новых класса. Класс lightMaster,базой которого служит класс Helper, используется как главный объект для системы источников света. В свою очередь эта система является объектом класса threeLights, базирующегося на классе Light. Свиток LightMaster позволяет редактировать параметры системы на панели Modify. Эти параметры, кроме того, сохраняются и восстанавливаются при записи и загрузке файла сцены.

Пример

-- Данный плугин создает объект Dummy, который служит

-- точкой направления трех направленных источников света:

-- key, fill и back

plugin helper lightMaster name:"Light Master" classID:#(12345,54321)

extends:Dummy replaceUI:true invisible:true

(-- Блок параметров объекта класса lightMaster

parameters main rollout:params

(key type:#node subAnim:true -- Источник света Key

fill type:#node subAnim:true -- Источник света Fill

back type:#node subAnim:true -- Источник света Back

-- Расстояние от источника света Key до объекта LightMaster по оси Z

height type:#worldUnits default:0 ui:height

-- Величина, определяющяя насколько источники света

-- разнесены друг от друга

spread type:#worldUnits default:0 ui:spread

-- Угол поворота источника света Fill относительно Key по оси Z

-- объекта LightMaster

angle type:#angle default:90 ui:angle

-- При установка параметра Height проверяется существование

-- источников освещения и устанавливаются их координаты Z

-- в координатной системе объекта LightMaster

on height set val do if key!= undefined then

coordsys key.target

(key.pos.z = val

back.pos.z = val * 1.5

fill.pos.z = val * 0.5

)

-- При установке параметра Spread проверяется существование

-- источника света Key и если он есть, устанавливаются координаты

-- всех трех источников света

on spread set val do if key!= undefined then coordsys key.target

(local kuv = normalize ([key.pos.x, key.pos.y, 0])

key.pos = [kuv.x * spread, kuv.y * spread, height]

back.pos = [kuv.x * -spread, kuv.y * -spread, height * 1.5]

-- Вначале источник Fill размещается на одной оси с источником

-- Key, а затем поворачивается на угол angle

fill.pos = [kuv.x * spread, kuv.y * spread, height * 0.5]

about key.target rotate fill angle z_axis

)

-- При установке параметра angle перемещается только источник fill

on angle set val do if key!= undefined then coordsys key.target

(fill.pos = [key.pos.x, key.pos.y, height * 0.5]

about key.target rotate fill angle z_axis

)

)

-- Свиток параметров объекта

rollout params "Light Parameters"

(spinner height "Height" type:#worldUnits range:[-1e32, 1e32, 0]

spinner spread "Spread" type:#worldUnits range:[0, 1e32, 0]

spinner angle "Angle" range:[-180, 180, 30]

-- При открытии параметры выходят на первый план

on params open do flagForeGround #(key, back, fill) true

-- При закрытии вновь перемещаются на задний

on params close do

if key!= undefined and back!= undefined and fill!= undefined then

flagForeGround #(key, back, fill) false

)

)

-- Плугин создающий три источника света Key, Back и Fill

plugin light threeLights name:"Three Lights"

(local master

-- Средство создания объекта

tool create

(-- Обработчик нажатий на кнопку мыши

on mousePoint click do

(-- При первом нажатии создаются источники света и объект

-- класса lightMaster

if click == 1 then

(coordsys grid

(master = lightMaster pos:gridPoint

master.dummy.boxsize = [10,10,10]

in master

(local targObj=targetobject pos:gridPoint

master.key = targetspot pos:gridPoint name:"key" \

target:targObj

master.back = targetspot pos:gridPoint name:"back" \

target:targObj

master.fill = targetspot pos:gridPoint name:"fill" \

target:targObj

)

)

-- Кроме того добавляется свиток объекта LightMaster

addPluginRollouts master

)

-- При третьем нажатии средство create прекращает работу

if click == 3 then

(select master

master = undefined

#stop

)

)

-- Обработчик перемещения курсора мыши

on mouseMove click do

(-- После второго нажатие перемещение мыши задает параметр

-- spread

if click == 2 then

(master.key.pos = worldPoint

master.spread = distance master.key master.key.target

)

else -- После третьего - параметр height

if click == 3 then master.height = gridDist.z

)

-- Прекращение работы плугина уничтожает все созданные

-- объекты

on mouseAbort click do

(if master!= undefined then

(if master.fill!= undefined then delete master.fill

if master.back!= undefined then delete master.back

if master.key!= undefined then delete master.key

delete master

)

)

)

)

 


Дата добавления: 2015-10-31; просмотров: 57 | Нарушение авторских прав


Читайте в этой же книге: Фиксируемая кнопка | Список с редактором (combobox) | Однострочный редактор | Список с возможностью множественного выбора | Индикатор процесса | Тело контекстного меню | Макро скрипты | Правила оформления средств работы с мышью | Скрипт плугины | Правила построения скрипт-плугина |
<== предыдущая страница | следующая страница ==>
Определение параметра| Внесение изменений в плугин

mybiblioteka.su - 2015-2024 год. (0.01 сек.)