def __init__(self, viewer=None): """Constructor """ BaseModeLogic.__init__(self) # setting new logic for a sheet if viewer already exists if viewer is not None: self.__viewer = viewer sheet = self.__viewer._getSheet() if sheet is None: raise RuntimeError("There is no sheet") else: self.__viewer = SpaceViewer() self.mergeModes(self.__viewer) self.appendMode(ois.KC_E, scg_modes.SCgEditMode(self)) self.switchMode(ois.KC_E)
class SpaceEditor(BaseModeLogic): """Logic realization of Space-editor. To synchronize this object we use transaction model. Each transaction applies in update method. That guarantee ogre calls in one graphical thread. """ def __init__(self, viewer=None): """Constructor """ BaseModeLogic.__init__(self) # setting new logic for a sheet if viewer already exists if viewer is not None: self.__viewer = viewer sheet = self.__viewer._getSheet() if sheet is None: raise RuntimeError("There is no sheet") else: self.__viewer = SpaceViewer() self.mergeModes(self.__viewer) self.appendMode(ois.KC_E, scg_modes.SCgEditMode(self)) self.switchMode(ois.KC_E) def __del__(self): """Destructor """ BaseModeLogic.__del__(self) def delete(self): """Deletion message """ BaseModeLogic.delete(self) if self.__viewer: self.__viewer.delete() def __getattr__(self, _name): """Returning attributes that exists in viewer to unify calling from modes """ return getattr(self.__viewer, _name) def _setSheet(self, _sheet): """Notification about sheet changed for logic @param _sheet: sheet object logic sets to @type _sheet: ObjectSheet @attention: this method only for internal usage and calls by ObhectSheet automatically when you set logic for it """ self.__viewer._setSheet(_sheet) BaseModeLogic._setSheet(self, _sheet) _sheet.eventUpdateView = self._onUpdateView _sheet.eventUpdate = self._onUpdate _sheet.eventRootChanged = self._onRootChanged _sheet.eventSelectionChanged = self._modes[ois.KC_E]._handlerSelChanged def _onUpdate(self, _dt): """Update sheet event @param _dt: time since last frame @type _dt: float """ if self._active_mode is not None: self._active_mode._update(_dt) def _onUpdateView(self): """Update sheet view event """ pass def _onRootChanged(self, _isRoot): """Root state changed event @param _isRoot: new root state @type _isRoot: bool """ BaseModeLogic._onRootChanged(self, _isRoot)