Mercurial > fife-parpg
changeset 404:0ef7b088b3f8
*Editor plugin removed from trunk because it belongs to the light branch
author | helios2000@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 29 Jan 2010 14:31:47 +0000 |
parents | ba2d683ccee3 |
children | cfe2f6db4964 |
files | tools/editor/plugins/LightEdit.py |
diffstat | 1 files changed, 0 insertions(+), 291 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/editor/plugins/LightEdit.py Fri Jan 29 11:04:06 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +0,0 @@ -# coding: utf-8 -# ################################################### -# Copyright (C) 2008 The Zero-Projekt team -# http://zero-projekt.net -# info@zero-projekt.net -# This file is part of Zero "Was vom Morgen blieb" -# -# The Zero-Projekt codebase is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the -# Free Software Foundation, Inc., -# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -# ################################################### - -""" a tool for FIFEdit to test global light """ - -from fife import fife -from fife.extensions import pychan -import fife.extensions.pychan.widgets as widgets -from fife.extensions.pychan.tools import callbackWithArguments as cbwa - -from fife.extensions.fife_timer import Timer - -import scripts -import scripts.plugin as plugin -from scripts.events import * -from scripts.gui.action import Action - -import random - -DEFAULT_GLOBAL_LIGHT = { - "R" : 1.0, - "G" : 1.0, - "B" : 1.0, - "A" : 1.0, -} -DEFAULT_LIGHT_ID = "LightEdit" - -class LightEdit(plugin.Plugin): - """ The B{LightEdit} module is a plugin for FIFedit and allows to change the - global light value - - FEATURES: - - enable FIFE lighting renderer - - generate random light values - - test lightsetups by manipulating the color channels - - reset to default - """ - def __init__(self): - self.active = False - - self._renderer = None - self._camera = None - self._enabled = False - self._light = False - - self.map_loaded = False - - self._color = {} - self._color.update(DEFAULT_GLOBAL_LIGHT) - - random.seed() - - if "LightRenderer" in dir(fife): - self._renderer_available = True - else: - self._renderer_available = False - - def _reset(self): - """ resets all dynamic vars """ - pass - - def enable(self): - """ plugin method """ - if not self._renderer_available: - self._enabled = False - return - if self._enabled is True: - return - - self._editor = scripts.editor.getEditor() - self.engine = self._editor.getEngine() - - self._showAction = Action(unicode(self.getName(),"utf-8"), checkable=True) - scripts.gui.action.activated.connect(self.toggle_gui, sender=self._showAction) - - self._editor._tools_menu.addAction(self._showAction) - - events.postMapShown.connect(self.update_renderer) - events.onMapChanged.connect(self.update_renderer) - - self._reset() - self.create_gui() - - def disable(self): - """ plugin method """ - if self._enabled is False: - return - - self._reset() - self.container.hide() - self.removeAllChildren() - - self._editor._tools_menu.removeAction(self._showAction) - - events.postMapShown.disconnect(self.update_renderer) - events.onMapChanged.disconnect(self.update_renderer) - - def isEnabled(self): - """ plugin method """ - return self._enabled; - - def getName(self): - """ plugin method """ - return "Light editor" - - def create_gui(self): - """ create gui container and setup callbacks """ - self.container = pychan.loadXML('gui/lightedit.xml') - self.container.mapEvents({ - "enable_global_light" : self.toggle_light, - "random_global_light" : self.random_color, - "reset_global_light" : self.reset_global_light, - - "increase_R" : cbwa(self.increase_color, r=True), - "decrease_R" : cbwa(self.decrease_color, r=True), - "value_R/mouseWheelMovedUp" : cbwa(self.increase_color, step=0.2, r=True), - "value_R/mouseWheelMovedDown" : cbwa(self.decrease_color, step=0.2, r=True), - - "increase_G" : cbwa(self.increase_color, g=True), - "decrease_G" : cbwa(self.decrease_color, g=True), - "value_G/mouseWheelMovedUp" : cbwa(self.increase_color, step=0.2, g=True), - "value_G/mouseWheelMovedDown" : cbwa(self.decrease_color, step=0.2, g=True), - - "increase_B" : cbwa(self.increase_color, b=True), - "decrease_B" : cbwa(self.decrease_color, b=True), - "value_B/mouseWheelMovedUp" : cbwa(self.increase_color, step=0.2, b=True), - "value_B/mouseWheelMovedDown" : cbwa(self.decrease_color, step=0.2, b=True), - - "increase_A" : cbwa(self.increase_color, a=True), - "decrease_A" : cbwa(self.decrease_color, a=True), - "value_A/mouseWheelMovedUp" : cbwa(self.increase_color, step=0.2, a=True), - "value_A/mouseWheelMovedDown" : cbwa(self.decrease_color, step=0.2, a=True), - }) - self._widgets = { - "enable_global_light" : self.container.findChild(name="enable_global_light"), - "random_global_light" : self.container.findChild(name="random_global_light"), - "reset_global_light" : self.container.findChild(name="reset_global_light"), - - "value_R" : self.container.findChild(name="value_R"), - "value_G" : self.container.findChild(name="value_G"), - "value_B" : self.container.findChild(name="value_B"), - "value_A" : self.container.findChild(name="value_A"), - } - - def toggle_gui(self): - """ show / hide the gui """ - if self.active: - self.active = False - if self.container.isVisible() or self.container.isDocked(): - self.container.setDocked(False) - self.container.hide() - self._showAction.setChecked(False) - else: - self.active = True - self._showAction.setChecked(True) - self.container.show() - - def toggle_light(self): - """ toggle light on / off """ - if not self._renderer: - self._widgets['enable_global_light']._setToggled(False) - return - - if self._light: - self._light = False - self.reset_global_light() - self._renderer.setEnabled(False) - else: - self._light = True - self._renderer.setEnabled(True) - - def update_renderer(self): - """ sets current camera and renderer - bound to FIFedit core (updated on map change) - """ - self._camera = self._editor.getActiveMapView().getCamera() - self._renderer = fife.LightRenderer.getInstance(self._camera) - - def update_gui(self): - """ update gui widgets according to plugin data """ - self._widgets["value_R"].text = unicode(str(self._color["R"])) - self._widgets["value_G"].text = unicode(str(self._color["G"])) - self._widgets["value_B"].text = unicode(str(self._color["B"])) - self._widgets["value_A"].text = unicode(str(self._color["A"])) - - def reset_global_light(self): - """ reset global light to default values (1.0) """ - if not self._renderer: return - - self._color.update(DEFAULT_GLOBAL_LIGHT) - self.update_gui() - self.set_global_light() - - def increase_color(self, step=0.1, r=None, g=None, b=None, a=None): - """ increase a given color value by step value - - @type step float - @param step the step for changing the color channel - @type r bool - @param r flag to alter red color value - @type g bool - @param g flag to alter green color value - @type b bool - @param b flag to alter blue color value - @type a bool - @type a flag to alter alpha channel value (no effect atm) - """ - if r: - self._color["R"] += step - if g: - self._color["G"] += step - if b: - self._color["B"] += step - if a: - self._color["A"] += step - - self.update_gui() - self.set_global_light() - - def decrease_color(self, step=0.1, r=None, g=None, b=None, a=None): - """ decrease a given color value by step value - - @type step float - @param step the step for changing the color channel - @type r bool - @param r flag to alter red color value - @type g bool - @param g flag to alter green color value - @type b bool - @param b flag to alter blue color value - @type a bool - @type a flag to alter alpha channel value (no effect atm) - """ - if r: - self._color["R"] -= step - if g: - self._color["G"] -= step - if b: - self._color["B"] -= step - if a: - self._color["A"] -= step - - self.update_gui() - self.set_global_light() - - def random_color(self): - """ generate random values for color channels """ - if not self._renderer: return - - self._color["R"] = random.uniform(0,2) - self._color["G"] = random.uniform(0,2) - self._color["B"] = random.uniform(0,2) - self._color["A"] = random.uniform(0,2) - - self.update_gui() - self.set_global_light() - - def set_global_light(self): - """ update the global light with the current set colors """ - if not self._renderer: return - - self._renderer.removeAll(DEFAULT_LIGHT_ID) - self._renderer.setglobalLight( - DEFAULT_LIGHT_ID, - 1, - self._color["R"], - self._color["G"], - self._color["B"], - self._color["A"] - ) -