бесплатные рефераты

Автоматизированное редактирование частиц в компьютерной графике

6.2.2 Определение объема ПС

Объем ПС определяется путем подбора аналогов на основании классификации типов ПС, каталога функции ПС и аналогов ПС в разрезе функций.

Таблица 6.2 - Содержание и объем функций на разрабатываемое ПС ВТ

Функция

Объем, условных машинных команд

Работа с файлами характеристик систем частиц, файлами изображений

1100

Организация ввода характеристик систем частиц пользователем

1020

Организация ввода управляющих сигналов от пользователя

700

Организация вывода графической информации в режиме реального времени

1150

Прочие расчёты, сервисные функции

700

Справка и обучение

520

Итого

5190

На основании информации о функциях разрабатываемого ПС по каталогу функций определяется объем функций. Общий объем ПС рассчитывается по формуле:

, (6.1)

где Vо - общий объем ПС, условных машино-команд;

Vi - объем функций ПС, условных машино-команд;

n - общее число функций.

= 5190 условных машинных команд

С учетом изменения скорости обработки информации рассчитывается скорректированный объем функций:

Vo/ = Vo · Кск , (6.2)

где - скорректированный объем ПС, условных машинных команд;

- общий объем ПС, условных машинных команд;

Кск - коэффициент изменения скорости обработки информации.

Vo/ = 5190*0,7 = 3633 условных машинных команд

6.2.3 Расчет трудоемкости выполняемой работы

На основании общего объема ПС определяется нормативная трудоемкость. Нормативная трудоемкость устанавливается с учетом сложности ПС. Выделяется три группы сложности, в которых учтены следующие составляющие ПС; языковой интерфейса, ввод-вывод, организация данных, режим работы, операционная и техническая среда.

Общая трудоемкость ПС рассчитывается по формуле:

, (6.3)

где То - общая трудоемкость ПС, человеко-дней;

Тн - нормативная трудоемкость ПС, человеко-дней;

Ксл - дополнительный коэффициент сложности ПС, ед.

Уровень сложности = 1, КСЛ = 0,18, норма времени Тн = 112. Получаем:

То= 112 * 0,7 *0,18 = 14 человеко-дней

6.2.4 Расчет основной заработной платы

Нормативная трудоемкость служит базой для расчета основной заработной платы.

В соответствии с “Рекомендациями по применению “Единой тарифной сетки” рабочих и служащих народного хозяйства” и тарифными разрядами и коэффициентами должностей руководителей организаций и вычислительных центров, бюджетных учреждений науки непроизводственных отраслей народного хозяйства каждому исполнителю устанавливается разряд и тарифный коэффициент.

Месячная тарифная ставка каждого исполнителя определяется путем умножения действующей месячной тарифной ставки 1-го разряда на тарифный коэффициент, соответствующий установленному тарифному разряду:

Сзм = Сзм1 . Кт , (6.4)

где Сзм - тарифная ставка за месяц, руб.;

Сзм1 - тарифная ставка 1-го разряда за месяц, руб.;

Кт - тарифный коэффициент, ед.

Сзм = 77000*2,84 = 218680 руб.

Основная заработная плата исполнителей на конкретное ПС рассчитывается по формуле:

(6.5)

где Соз- основная заработная плата, руб.;

Сзд - тарифная ставка за день, руб.;

То - общая трудоемкость ПС, человеко-дней;

Кп - коэффициент естественных потерь рабочего времени, ед.;

Кпр - коэффициент премирования, ед.

Соз = (218680 / 21,25)*14*1,4*1 = 201700 руб.

6.2.5 Расчет дополнительной заработной платы

Дополнительная заработная плата на конкретное ПС включает выплаты, предусмотренные законодательством о труде (оплата отпусков, льготных часов, времени выполнения государственных обязанностей и других выплат, не связанных с основной деятельностью исполнителей), и определяется по нормативу в процентах к основной заработной плате:

, (6.6)

где Сдз - дополнительная заработная плата на конкретное ПС, руб.;

Ндз - норматив дополнительной заработной платы, %.

Cдз = 201700 * 0,1 = 20170 руб.

6.2.6 Расчет отчислений в Фонд социальной защиты населения

Отчисления в фонд социальной защиты населения определяются в соответствии с действующими законодательными актами по нормативу в процентном отношении к фонду основной и дополнительной зарплаты исполнителей, определенной по нормативу, установленному в целом по организации:

, (6.7)

где Сфсзн - сумма отчислений в Фонд социальной защиты населения, руб.;

Нфсзн - норматив отчислений в Фонд социальной защиты населения, %.

Cфсзн = (201700 + 20170) * 0,34 = 75436 руб.

6.2.7 Расчет отчислений по обязательному страхованию от несчастных случаев на производстве и профессиональных заболеваний

Отчисления по обязательному страхованию от несчастных случаев на производстве и профессиональных заболеваний рассчитываются по формуле:

, (6.8)

где Сбгс - сумма отчислений по обязательному страхованию от несчастных случаев на производстве и профессиональных заболеваний, руб.;

Нбгс - норматив отчислений по обязательному страхованию от несчастных случаев на производстве и профессиональных заболеваний, %.

Сбгс = (201700 + 20170)*0,01 = 2219 руб.

6.2.8 Расчет расходов на материалы и комплектующие

По статье “Материалы” отражаются расходы на магнитные носители, бумагу, красящие ленты и другие материалы, необходимые для разработки ПС. Нормы расхода материалов в суммарном выражении определяются в расчете на 100 строк исходного кода. Сумма затрат материалов рассчитывается по формуле:

, (6.9)

где См - сумма расходов на материалы, руб.;

Нм - норма расхода материалов в расчете на 100 строк исходного кода ПС, руб.

См = 380*0,7*3633/100 = 9664 руб.

6.2.9 Расчет расходов на оплату машинного времени

Расходы по статье “Машинное время” включают оплату машинного времени, необходимого для разработки и отладки ПС, которое определяется по нормативам (в машино-часах) на 100 строк исходного кода машинного времени в зависимости от характера решаемых задач и типа ПК:

, (6.10)

где Смв - сумма расходов на оплату машинного времени, руб.;

Цм - цена одного машино-часа, руб.;

Нмв - норматив расхода машинного времени на отладку 100 строк исходного кода, машино-часов.

Смв = 2200*3633/100*12*0,6 = 575467 руб.

6.2.10 Расчет прочих прямых затрат

Расходы на конкретное ПС включают затраты на приобретение и подготовку специальной научно-технической информации и специальной литературы. Определяются по нормативу в процентах к основной заработной плате:

, (6.11)

где Спз - сумма прочих затрат, руб.;

Нпз - норматив прочих затрат в целом по организации, %.

Спз = 201700*12/100 = 24204 руб.

6.2.11 Расчет накладных расходов

Данные затраты, связанные с необходимостью содержания аппарата управления, а также с расходами на общехозяйственные нужды, рассчитываются для конкретного ПС по нормативу в процентном отношении к основной заработной плате исполнителей:

, (6.12)

где Снр - сумма накладных расходов, руб.;

Ннр - норматив накладных расходов в целом по организации, %.

6.2.12 Расчет суммы расходов на разработку ПС ВТ

Общая сумма расходов на ПС рассчитывается по формуле:

, (6.13)

где Ср - сумма расходов на разработку ПС ВТ, руб.;

Ср = 201700 + 20170 + 75436 + 2219 + 9664 + 0 + 575467 + 24204 + 242040 = 1150900 руб.

6.2.13 Расчет расходов на сопровождение и адаптацию

Кроме того, организация-разработчик осуществляет затраты на сопровождение и адаптацию ПС, которые определяются по нормативу:

, (6.14)

где Срса - сумма расходов на сопровождение и адаптацию ПС ВТ, руб.;

Нрса - норматив расходов на сопровождение и адаптацию, %.

Срса = 1150900 * 10/100 = 115090 руб.

6.2.14 Расчет полной себестоимости разработки ПС ВТ

Общая сумма расходов на разработку (с затратами на сопровождение и адаптацию) - полная себестоимость ПС - определяется по формуле:

,(6.15)

Сп = 1150900 + 115090 = 1265990 руб.

6.2.15 Определение отпускной цены на ПС ВТ

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

Прибыль рассчитывается по формуле:

, (6.16)

где Ппс - прибыль от реализации ПС, руб.;

Урп - уровень рентабельности ПС, %;

Ппс = 1265990 * 24/100 = 303838 руб.

Прогнозируемая цена разработчика ПС без налогов:

Цп = Сп + Ппс, (6.17)

где Цп - прогнозируемая цена разработчика ПС, руб.;

Цп = 1265990 + 303838 = 1569828 руб.

Сумма отчислений в целевые бюджетные фонды из выручки от реализации продукции единым платежом:

, (6.18)

где Сцбф - сумма отчислений в целевые бюджетные фонды из выручки от реализации продукции единым платежом, руб.;

Нцбф - ставка отчислений в целевые бюджетные фонды из выручки от реализации продукции единым платежом, %.

Сцбф = 1569828 * 1/(100-1) = 15857 руб.

Сумма налога на добавленную стоимость:

, (6.19)

где НДС - сумма налога на добавленную стоимость, руб.;

Нндс - ставка НДС, %.

НДС = (1569828 + 15857) * 18/100 = 285423 руб.

Прогнозируемая отпускная цена:

, (6.20)

где Цо - прогнозируемая отпускная цена, руб.

Цо = 1569828 + 15857 + 285423 = 1871108 руб.

6.3 Расчет экономического эффекта от применения ПС у пользователя

Создаваемые программные средства могут предназначаться как для совершенно новых, ранее не решавшихся или решавшихся ручным способом задач, так и для традиционных задач, решаемых с помощью программных средств, которые можно совершенствовать.

В результате применения нового ПС пользователь может понести значительные капитальные затраты на приобретение и освоение ПС, доукомплектования ЭВМ новыми техническими средствами и пополнение оборотных средств. Однако, если приобретенное ПС будет в достаточной степени эффективнее базового, то дополнительные капитальные затраты быстро окупятся. Эффект может быть достигнут за счет сокращения объема ПС (уменьшения количества машинных команд, количества строк и т.д.), снижение трудоемкости подготовки данных, обработки информации, анализа результатов, уменьшения расходов машинного времени и материалов.

Для определения экономического эффекта от использования нового ПС у потребителя необходимо сравнить расходы по всем основным статьям затрат на эксплуатацию нового ПС (расходы на заработную плату с начислениями, материалы, машинное время) с расходами по соответствующим статьям базового варианта. При этом за базовый вариант следует принимать аналогичное программное средство, используемое в действующей автоматизированной системе. При сравнении базового и нового вариантов ПС в качестве экономического эффекта будет выступать общая экономия всех видов ресурсов относительно базового варианта. При этом создание нового ПС окажется экономически целесообразным лишь в том случае, если все капитальные затраты окупятся за счет получаемой экономии в ближайшие 1-2 года.

6.3.1 Исходные данные

Таблица 6.3 - Исходные данные для сравнения вариантов

Наименование показателей

Обозначения

Единицы измерения

Значение показателя

Наименование источника информации

в базовом варианте

в новом варианте

Средняя трудоемкость работ в расчете на 100 строк кода

Тс1

Тс2

человеко-дней с на 100 строк кода

0,96

0,92

По данным пользователя

Средний расход машинного времени в расчете на 100 строк кода

Нмв1

Нмв2

машино-час на 100 строк кода

7,7

7,2

По данным пользователя

Средний расход материалов в расчете на

100 строк кода

См1

См2

руб. на 100 строк кода

341

266

По данным пользователя

Объем работ в зависимости от функциональной группы и назначения ПС определяется по формуле:

А = Vо' • Кпс , (6.21)

где Vо' - скорректированный объем ПС, условных машино-команд;

Кпс - коэффициент применения ПС, ед.

Таким образом, A = 3633 * 0,7 = 2543 условных машинных команд

6.3.2 Расчет капитальных затрат заказчика ПС

Общие капитальные вложения заказчика (потребителя), связанные с приобретением, внедрением и использованием ПС, рассчитываются по формуле:

Ко = Кпр + Кос + Коб, (6.22)

где Кпр - затраты пользователя на приобретение ПС по отпускной цене разработчика с учетом стоимости услуг по эксплуатации и сопровождению, руб.;

Кос - затраты пользователя на освоение ПС, руб.;

Коб - затраты на пополнение оборотных средств в связи с использованием нового ПС, руб.

Затраты на освоение ПС и на пополнение оборотных средств рекомендуется рассчитывать по формулам:

Кос = Кпр • Нос , (6.23)

Коб = Кпр • Ноб , (6.24)

Кпр = Цо = 1871108

Кос = 1871108 * 0,01 = 18711 руб.

Коб = 1871108 * 0,01 = 18711 руб.

Ко = 1871108 + 18711 + 18711 = 1908530 руб.

6.3.3 Расчет экономии основных видов ресурсов в связи с использованием нового ПС

Экономия затрат на заработную плату при использовании нового ПС в расчете на объем выполненных работ:

Эоз = Эоз' • А, (6.25)

где Эоз - экономия затрат на заработную плату при решении задач с использованием нового ПС, руб.;

Эоз' - экономия затрат на заработную плату при решении задач с использованием нового ПС в расчете на 100 КБ, руб.;

А - объем выполненных работ с использованием нового ПС, 100 КБ.

Экономия затрат на заработную плату в расчете на 100 КБ:

, (6.26)

где Сзм - среднемесячная заработная плата одного программиста, руб.;

Тс1, Тс2 - трудоемкость работ в расчете на 100 строк кода при базовом и новом варианте соответственно, человеко-часов;

Тч - количество часов работы в день, ч;

ФРВ - фонд рабочего времени за месяц, ч.

Тс2 = 0,3*112*100/3633 = 0,92 человеко-дней

Эоз' = 218680 * 0,04 / 169,3 = 52 руб.

Эоз = 52 * 2543 = 131389 руб.

При определении трудоемкости, связанной с использованием программы рекомендуется ориентироваться на показатель равный 30-50% от трудоемкости разработки в часах.

Экономия начислений на заработную плату при использовании нового ПС в расчете на объем выполненных работ:

Энач = Эоз • Кнач , (6.27)

где Энач - экономия начислений на заработную плату при решении задач с использованием нового ПС, руб.;

Кнач - коэффициент начислений на заработную плату, ед.

, (6.28)

Кнач = (34 + 1)/100 = 0,35 ед.

Энач = 131389 * 0,35 = 45986 руб.

Экономия затрат на оплату машинного времени в расчете на выполненный объем работ в результате применения нового ПС:

, (6.29)

где Эмв - экономия затрат на оплату машинного времени при решении задач с использованием нового ПС, руб.;

- экономия затрат на оплату машинного времени при решении задач с использованием нового ПС в расчете на 100 КБ, руб.

Экономия затрат на оплату машинного времени в расчете на 100 КБ:

, (6.30)

где Нмв1, Нмв2 - средний расход машинного времени в расчете на 100 КБ при применении базового и нового варианта ПС соответственно, машино-часов.

Эмв' = 2200 * 0,5 = 1100 руб.

Эмв = 1100 * 2543 = 2797300 руб.

Экономия затрат на материалы при использовании нового ПС в расчете на объем выполненных работ:

, (6.31)

где Эм - экономия затрат на материалы при использовании нового ПС, руб.;

Эм' - экономия затрат на материалы в расчете на 100 КБ при использовании нового ПС, руб.:

, (6.32)

где См1, См2 - средний расход материалов у пользователя в расчете на 100 КБ при использовании базового и нового варианта ПС соответственно, руб.

Эм' = 341-266=75 руб.

Эм =75*2543 = 190725 руб.

Общая годовая экономия текущих затрат, связанных с использованием нового ПС:

, (6.33)

Эо = 131389 + 45986 + 2797300 + 190725 = 3165400 руб.

6.3.4 Расчёт экономического эффекта

Внедрение нового ПС позволит пользователю сэкономить на текущих затратах, т.е. практически получить на эту сумму дополнительную прибыль. Для пользователя в качестве экономического эффекта выступает лишь чистая прибыль - дополнительная прибыль, остающаяся в его распоряжении (ДПч), которая определяются по формуле:

, (6.34)

где ?Пч - прирост чистой прибыли, руб.;

Нмс - ставка местных налогов и сборов, %.

, (6.35)

где ?П - прирост прибыли, руб.;

Нп - ставка налога на прибыль, %.

= 3165400 - 3165400 * 24/100 = 2405704 руб.

= 2405704 - 2405704 * 3/100 = 2333533 руб.

В процессе использования нового ПС чистая прибыль в конечном итоге возмещает капитальные затраты. Однако, полученные при этом суммы результатов (прибыли) и затрат (капитальных вложений) по годам приводят к единому времени - расчетному году (за расчетный год принят 2008 год) путем умножения результатов и затрат за каждый год на коэффициент привидения (ALFAt), который рассчитывается по формуле:

, (6.36)

где Ен - норматив привидения разновременных затрат и результатов;

tp - расчетный год, tp = 1;

t - номер года, результаты и затраты которого приводятся к расчетному (2008-1, 2009-2, 2010-3, 2011-4).

Норматив приведения разновременных затрат и результатов (Ен) для программных средств ВТ в существующей практике принимается равным 0,12. При таком нормативе коэффициентам приведения (ALFAt) по годам будут соответствовать следующие значения:

ALPHA 1 = (1+0,15) 1-1 = 1

ALPHA 2 = (1+0,15) 1-2 = 0,870

ALPHA 3 = (1+0,15) 1-3 = 0,756

ALPHA 4 = (1+0,15) 1-4 = 0,658

Данные расчета экономического эффекта сведем в таблицу:

Таблица 6.4 - Расчет экономического эффекта от использования нового ПС

Показатели

Ед.

измерения

Методика расчета

2008

2009

2010

2011

Результаты:

Прирост прибыли за счет экономии затрат

руб.

? Пч

2333533

2333533

2333533

2333533

Сумма прибыли с учетом фактора времени

руб.

? Пч • ALFAt

2333533

2030174

1764151

1535465

Затраты:

Затраты на приобретение ПС

руб.

Кпр

1871108

-

-

-

Затраты на освоение ПС

руб.

Кос

18711

-

-

-

Затраты на доукомплектование ВТ техническими средствами

руб.

Ктс

-

-

-

-

Затраты на пополнение оборотных средств

руб.

Коб

18711

18711

18711

18711

Сумма затрат

руб.

Ко

1908530

18711

18711

18711

Сумма затрат с учетом фактора времени

руб.

Ко • ALFAt

1908530

16279

14146

12312

Экономический эффект

руб.

? Пч • ALFAt -Ко • ALFAt

425003

2013895

1750005

1523153

Экономический эффект с нарастающим итогом

руб.

425003

2438898

4188903

5712056

Коэффициент приведения

ед.

ALFAt

1

0,870

0,756

0,658

6.4 Результаты оценки экономической целесообразности

В данном разделе была рассчитана отпускная цена программного средства, которая составила 1871108 руб. Затраты потребителя, связанные с приобретением, освоением программного средства, а также пополнением оборотных средств - 1951267 руб. Прирост прибыли за счёт экономии начислений на заработную плату, оплаты машинного времени и материалов в каждый из расчётных лет составил соответственно 2333533 руб., 2030174 руб., 1764151 руб. и 1535465 руб. Затраты потребителя окупились уже в первый год, при этом получился положительный экономический эффект в размере 425003 руб. Экономический эффект за 4 года использования ПС составит 5712056 руб. Всё это даёт возможность говорить о том, что создание и внедрение ПС целесообразно.

Заключение

В представленном дипломном проекте разработан графический редактор эффектов частиц “Easy Particles”.

При разработке были использованы самые современные подходы к проектированию программного обеспечения. Программное обеспечение разработано с учетом простоты будущей модификации.

Программа имеет удобный пользовательский интерфейс, отвечающий современным требованиям. Она может использоваться на различных компьютерах с различной конфигурацией и не требует много ресурсов. Пользовательский интерфейс программы рассчитан на минимальные навыки работы с компьютером.

В ходе выполнения поставленной задачи реализованы все основные функции программного средства. Все предъявляемые к программе требования были выполнены. Отладка и тестирование программы проведены успешно.

Проведено технико-экономическое обоснование внедрения спроектированной системы. Полученный экономический эффект позволяет окупить затраты пользователя на закупку, установку ПС, обучение сотрудников его использованию и остальные. Следовательно, разработка является экономически целесообразной.

Цель, поставленная перед автором работы, была выполнена в полной мере. Проект выполнен в соответствие с ГОСТами и требованиями, предъявляемыми к технической документации.

Как уже было сказано, разработанная версия приложения является первой реализацией, наиболее общей, позволяющей использовать лишь самые основные величины и оперировать сильно ограниченным множеством настроек и характеристик.

Планируемое будущее расширение должно коснуться, в первую очередь, пользовательского интерфейса, а также задаваемых параметров частиц и эмиттеров. В целях большего удобства использования редактора, в него планируется внести изменения, связанные со способами задания скорости частиц и гравитации, действующей на них. Возможно, будет введены параметры дисперсии гравитации, или иные параметры, задающие изменение значений гравитации. Сами значения скорости и гравитации планируется вводить посредством векторов.

Необходимо изменить способы задания изменения цвета частиц (через визуальный цветовой элемент управления), ввести возможность использования дополнительных ключей цвета, с учётом длительности перехода частицы от одного цвета к другому.

Аналогичные параметры-ключи (и визуальные элементы управления, соответствующие им) будут введены для размеров частиц.

Для размеров, цвета, задержки генерации частиц планируется ввести параметры дисперсии.

Некоторые изменения претерпит и оконная система приложения. В ней будут преобладать перетаскиваемые присоединяемые панели. Станет возможным изменение размеров окна вывода, а также использование полноэкранного режима при просмотре эффектов.

Среди прочих возможных изменений можно отметить запуск в окне просмотра и встраивание эффектов частиц в файлы видео, а также расширенные программные интерфейсы для разработчиков компьютерных игр и иных графических приложений.

Перечисленные изменения должны повысить интерес к программному средству и его полезность для разных групп пользователей.

Список использованных источников

1) Бьёрн Страуструп Дизайн и эволюция языка C++ - М.: ДМК пресс, 2006. - 448с.

2) Ефремова О.С. Требования охраны труда при работе на персональных электронно-вычислительных машинах (ПК) - М.: Альфа-пресс, 2005. - 150с.

4) Санитарные нормы для образовательных учреждений . - 5-е изд., доп. - М.: Образование в документах, 2002. - 200с.

5) Замбржицкий О.Н. Гигиеническая оценка естественного и искусственного освещения помещений. - Мн.: БГМУ, 2005. - 18 с.

6) СанПиН N 9-131 РБ 2000 Гигиенические требования к видеодисплейным терминалам (ВДТ), электронно-вычислительным машинам (ЭВМ) и организации работы

7) Косилина Н.И., Колтановского А.П. Производственная гимнастика для работников умственного труда - М.: Физкультура и спорт, 1983.

8) Кляуззе В.П. Безопасность & компьютер. - Мн.: В.П.Кляуззе, 2001. - 155с.

Приложение А

(обязательное)

Текст программного модуля обработки частиц

//ParticleSystemChain.cpp (очередь эмиттеров)

#include "ParticleSystemChain.h"

#include "PSOutputFrame.h"//just for using canvas to get current reflecting mode ang zoom

#define BLEND_SRC "blend_src"

#define BLEND_DST "blend_dst"

#define ITEM_SELECTED "item_selected"

#define PSBOUND_SELECTED_COLOR wxColour(200, 200, 200, 255)

#define PSBOUNS_CHOOSED_COLOR wxColour(70, 70, 70, 255)

#define PSBOUND_COLOR wxColour(50, 50, 50, 255)

#define MIN_RUN_PSCHAIN_ITEM_DIMENSION 20

ParticleSystemChain *ParticleSystemChain::singletonChain = NULL;

ParticleSystemChain* ParticleSystemChain::Master()

{

if(!singletonChain)

singletonChain = new ParticleSystemChain();

return singletonChain;

}

void ParticleSystemChain::CleanSingleton()

{

if(singletonChain)

{

delete singletonChain;

singletonChain = NULL;

}

}

int ParticleSystemChain::AddSystem()

{

ParticleSystem* ps = new ParticleSystem();

all_ps.push_back(ps);

if(workMode != ParticleSystemChainWorkMode_STATIC)

ps->start();

int new_ps_layer = (int)all_ps.size() - 1;

if(selectedSystemLayer < 0)

selectedSystemLayer = new_ps_layer;

return new_ps_layer;

}

bool ParticleSystemChain::RemoveSystemAtLayer(int layer)

delete all_ps.at(layer);

void ParticleSystemChain::RemoveAll()

{

vector<ParticleSystem*>::iterator iter = all_ps.begin();

while(iter != all_ps.end())

{

delete((ParticleSystem*)*iter);

++iter;

}

all_ps.clear();

selectedSystemLayer = choosedSystemLayer = -1;

}

void ParticleSystemChain::MoveSystem(int from, int to)

void ParticleSystemChain::CopySystemsData(int layer_from, int layer_to)

int numof_systems = (int)all_ps.size();

bool ParticleSystemChain::Save(TiXmlElement* root) const

{

TiXmlElement tmp("BLENDING");

TiXmlElement *caption = (TiXmlElement*)root->InsertEndChild(tmp);

if(!caption)

return false;

caption->SetAttribute(BLEND_SRC, blendModeSrc);

caption->SetAttribute(BLEND_DST, blendModeDst);

return saveSystems(root);

}

bool ParticleSystemChain::Load(TiXmlElement *root)

{

TiXmlElement *blending_attrs_ptr = (TiXmlElement*)root->FirstChild("BLENDING");

if(!blending_attrs_ptr)//old version file (1.0), just set defaults

{

blendModeSrc = GL_ONE;

blendModeDst = GL_ONE_MINUS_SRC_ALPHA;

}

else

{

blending_attrs_ptr->Attribute(BLEND_SRC, &blendModeSrc);

blending_attrs_ptr->Attribute(BLEND_DST, &blendModeDst);

}

return loadSystems(root);

}

ParticleSystemOutputCoordCharacter ParticleSystemChain::AnalyseOutputCoords(MYPoint2D point) const

{

ParticleSystemOutputCoordCharacter res;

res.psLayer = -1;

res.isLeft = res.isRight = res.isTop = res.isBottom = false;

//first find selecting system layer

vector<ParticleSystem*>::const_iterator iter = all_ps.end();

vector<ParticleSystem*>::const_iterator begin_iter = all_ps.begin();

size_t i = all_ps.size();

wxRect system_rect, tmp_rect;

bool chain_is_run = (workMode != ParticleSystemChainWorkMode_STATIC);

while(iter != begin_iter)

{

--iter, --i;

wxRect tmp_rect;

MYPoint2D appear_box_position = MYPoint2DMake((*iter)->getX(), (*iter)->getY());

MYSize2D appear_box_size = (*iter)->getAppearBoxSize();

if(chain_is_run)

{

tmp_rect = wxRect(appear_box_position.x, appear_box_position.y, appear_box_size.width, appear_box_size.height);

if(tmp_rect.GetWidth() < MIN_RUN_PSCHAIN_ITEM_DIMENSION)

{

int diff = MIN_RUN_PSCHAIN_ITEM_DIMENSION - tmp_rect.GetWidth();

tmp_rect.SetX(tmp_rect.GetX() - diff / 2);

tmp_rect.SetWidth(MIN_RUN_PSCHAIN_ITEM_DIMENSION);

}

if(tmp_rect.GetHeight() < MIN_RUN_PSCHAIN_ITEM_DIMENSION)

{

int diff = MIN_RUN_PSCHAIN_ITEM_DIMENSION - tmp_rect.GetHeight();

tmp_rect.SetY(tmp_rect.GetY() - diff / 2);

tmp_rect.SetHeight(MIN_RUN_PSCHAIN_ITEM_DIMENSION);

}

}

else

tmp_rect = wxRect(appear_box_position.x - BOUND_DIMENSION, appear_box_position.y - BOUND_DIMENSION,

appear_box_size.width + BOUND_DIMENSION * 2, appear_box_size.height + BOUND_DIMENSION * 2);

if(point.x >= tmp_rect.x && point.x < (tmp_rect.x + tmp_rect.width) &&

point.y >= tmp_rect.y && point.y < (tmp_rect.y + tmp_rect.height) )

{

res.psLayer = (int)i;

system_rect = tmp_rect;

break;

}

}

if( res.psLayer == -1/*no selected ps*/ || chain_is_run )

return res;

//selecting system has been finded, and <!chainIsRun> - maybe we touched on some ps's bottom(-s)

if( (point.x >= system_rect.x) && (point.x < system_rect.x + BOUND_DIMENSION) )

res.isLeft = true;

if( (point.x < system_rect.x + system_rect.width) && (point.x >= system_rect.x + system_rect.width - BOUND_DIMENSION) )

res.isRight = true;

if( (point.y >= system_rect.y) && (point.y < system_rect.y + BOUND_DIMENSION) )

res.isTop = true;

if( (point.y < system_rect.y + system_rect.height) && (point.y >= system_rect.y + system_rect.height - BOUND_DIMENSION) )

res.isBottom = true;

return res;

}

void ParticleSystemChain::ChooseSystemAtLayer(int layer)

if( (layer < 0)

int ParticleSystemChain::GetChoosedSystemLayer() const

{

return choosedSystemLayer;

}

void ParticleSystemChain::SelectSystemAtLayer(int layer)

int ParticleSystemChain::GetSelectedSystemLayer() const

{

return selectedSystemLayer;

}

ParticleSystemChainWorkMode ParticleSystemChain::GetWorkMode() const

Страницы: 1, 2, 3, 4


© 2010 РЕФЕРАТЫ