From: Andrew R. <aar...@us...> - 2004-12-01 15:09:47
|
Update of /cvsroot/planeshift/planeshift/src/eedit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6626/src/eedit Modified Files: eeditapp.cpp eeditapp.h eeditediteffecttoolbox.cpp eeditediteffecttoolbox.h eeditpositiontoolbox.cpp eeditpositiontoolbox.h eedittoolbox.h eedittoolboxmanager.cpp Added Files: eedittargettoolbox.cpp eedittargettoolbox.h Log Message: - Added ability to store misc data into any pawsWidget - Random stuff to effects and eedit --- NEW FILE: eedittargettoolbox.cpp --- /* * Author: Andrew Robberts * * Copyright (C) 2003 PlaneShift Team (in...@pl..., * http://www.planeshift.it) * * This program 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 (version 2 of the License) * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #include <psconfig.h> #include "eedittargettoolbox.h" #include "eeditglobals.h" #include "paws/pawsmanager.h" #include "paws/pawsbutton.h" #include "paws/pawstextbox.h" #include "paws/pawsspinbox.h" #include "paws/pawsradio.h" SCF_IMPLEMENT_IBASE(EEditTargetToolbox) SCF_IMPLEMENT_IBASE_END EEditTargetToolbox::EEditTargetToolbox(PawsManager* manager) :EEditToolbox(), pawsWidget(manager) { SCF_CONSTRUCT_IBASE(0); prevTar = csVector3(0,0,0); prevRot = 0.0f; } EEditTargetToolbox::~EEditTargetToolbox() { } void EEditTargetToolbox::SetMeshFile(const csString & file) { meshFileText->SetText(file); } void EEditTargetToolbox::Update(unsigned int elapsed) { bool changeTar = false; if (tarX->GetValue() != prevTar.x) { changeTar = true; prevTar.x = tarX->GetValue(); } if (tarY->GetValue() != prevTar.y) { changeTar = true; prevTar.y = tarY->GetValue(); } if (tarZ->GetValue() != prevTar.z) { changeTar = true; prevTar.z = tarZ->GetValue(); } if (rot->GetValue() != prevRot) { changeTar = true; prevRot = rot->GetValue(); } if (changeTar) editApp->SetTargetData(prevTar, prevRot * 3.14159f / 180.0f); } size_t EEditTargetToolbox::GetType() const { return T_TARGET; } char * EEditTargetToolbox::GetName() const { return "Target"; } bool EEditTargetToolbox::PostSetup() { moreLessButton = (pawsButton *) FindWidget("more_less"); browseMesh = (pawsButton *) FindWidget("tar_mesh_browse"); meshFileText = (pawsEditTextBox *) FindWidget("tar_mesh_file"); tarX = (pawsSpinBox *) FindWidget("tar_x"); tarY = (pawsSpinBox *) FindWidget("tar_y"); tarZ = (pawsSpinBox *) FindWidget("tar_z"); rot = (pawsSpinBox *) FindWidget("tar_rot"); tarTypeNone = (pawsRadioButton *) FindWidget("tar_type_none"); tarTypeAxis = (pawsRadioButton *) FindWidget("tar_type_axis"); tarTypeCustom = (pawsRadioButton *) FindWidget("tar_type_custom"); tarTypeNone->SetState(true); tarTypeAxis->SetState(false); tarTypeCustom->SetState(false); return true; } bool EEditTargetToolbox::OnButtonPressed( int mouseButton, int keyModifier, pawsWidget* widget ) { if (widget == moreLessButton) { if (csString(moreLessButton->GetText()) == csString("More >>")) { moreLessButton->SetText("Less <<"); SetSize(GetActualWidth(440), GetActualHeight(118)); } else { moreLessButton->SetText("More >>"); SetSize(GetActualWidth(440), GetActualHeight(30)); } return true; } else if (widget == browseMesh) { tarTypeNone->SetState(false); tarTypeAxis->SetState(false); tarTypeCustom->SetState(true); pawsFileNavigation::Create(WindowManager(),meshFileText->GetText(),"|*.cal3d|*.spr|*", new OnFileSelected(meshFileText)); } else if (widget == tarTypeNone || widget == tarTypeAxis || widget == tarTypeCustom) { if (tarTypeNone->GetState()) editApp->LoadTargetMesh(""); else if (tarTypeAxis->GetState()) editApp->LoadTargetMesh("axis"); else editApp->LoadTargetMesh(meshFileText->GetText()); } return false; } void EEditTargetToolbox::OnFileSelected::Execute(const csString & text) { if (text.Length() > 0) textBox->SetText(text); editApp->LoadTargetMesh(text); } --- NEW FILE: eedittargettoolbox.h --- /* * Author: Andrew Robberts * * Copyright (C) 2003 PlaneShift Team (in...@pl..., * http://www.planeshift.it) * * This program 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 (version 2 of the License) * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef EEDIT_TARGET_TOOLBOX_WINDOW_HEADER #define EEDIT_TARGET_TOOLBOX_WINDOW_HEADER #include "eedittoolbox.h" #include "paws/pawswidget.h" #include "paws/pawsfilenavigation.h" class pawsButton; class pawsEditTextBox; class pawsSpinBox; class pawsRadioButton; /** This handles the effect target object. */ class EEditTargetToolbox : public EEditToolbox, public pawsWidget { public: SCF_DECLARE_IBASE; EEditTargetToolbox(PawsManager * manager); virtual ~EEditTargetToolbox(); /** Sets the path to the target's mesh indicator, to be filled in the edit box. * @param file the file path to fill in the mesh edit box. */ void SetMeshFile(const csString & file); // inheritted from EEditToolbox virtual void Update(unsigned int elapsed); virtual size_t GetType() const; virtual char * GetName() const; // inheritted from pawsWidget virtual bool PostSetup(); virtual bool OnButtonPressed( int mouseButton, int keyModifier, pawsWidget* widget ); private: /** Callback class for the pawsFileNavigation dialog */ class OnFileSelected : public iOnFileSelectedAction { private: pawsEditTextBox * textBox; public: /** Accepts a pointer to a valid pawsEditTextBox that will accept the selected file path. * @param widget the pawsEditTextBox */ OnFileSelected(pawsEditTextBox * widget) : textBox(widget) {} /** Destructor - does nothing atm. */ virtual ~OnFileSelected() {} /** This is called when a file has been selected. * @param text the selected file */ virtual void Execute(const csString & text); }; pawsButton * moreLessButton; pawsButton * browseMesh; pawsEditTextBox * meshFileText; pawsSpinBox * tarX; pawsSpinBox * tarY; pawsSpinBox * tarZ; pawsSpinBox * rot; pawsRadioButton * tarTypeNone; pawsRadioButton * tarTypeAxis; pawsRadioButton * tarTypeCustom; csVector3 prevTar; float prevRot; }; CREATE_PAWS_FACTORY(EEditTargetToolbox); #endif Index: eeditapp.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditapp.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** eeditapp.cpp 24 Nov 2004 17:39:16 -0000 1.8 --- eeditapp.cpp 1 Dec 2004 15:09:35 -0000 1.9 *************** *** 22,25 **** --- 22,26 ---- #include "eeditglobals.h" + #include <csutil/xmltiny.h> #include <iutil/config.h> #include <iutil/cfgmgr.h> *************** *** 51,54 **** --- 52,56 ---- #include "effects/pseffectmanager.h" + #include "effects/pseffect.h" #include "econtrolmanager.h" *************** *** 63,66 **** --- 65,69 ---- const char * EEditApp::WINDOW_CAPTION = "Planeshift Effect Editor"; const char * EEditApp::KEY_DEFS_FILENAME = "/this/data/eedit/keys_def.xml"; + const char * EEditApp::TEMP_EFFECTS_LIST = "/this/data/effects/tmpeffectslist.xml"; CS_IMPLEMENT_APPLICATION *************** *** 238,242 **** // SetCurrEffect("moogie"); // RenderCurrentEffect(); ! return true; } --- 241,247 ---- // SetCurrEffect("moogie"); // RenderCurrentEffect(); ! // ! CreateEffectPathList("/this/data/effects/effectslist.xml"); ! return true; } *************** *** 325,330 **** delete effectManager; effectManager = new psEffectManager(matUtil); ! effectManager->LoadFromEffectsList("/this/data/effects/effectslist.xml", editWindow->GetView()); ! effectManager->LoadEffectGroupList("/this/data/effects/effectgroups.xml"); if (!effectManager->Prepare()) { --- 330,334 ---- delete effectManager; effectManager = new psEffectManager(matUtil); ! effectManager->LoadFromEffectsList(TEMP_EFFECTS_LIST, editWindow->GetView()); if (!effectManager->Prepare()) { *************** *** 361,378 **** } ! bool EEditApp::LoadPositionMesh(const csString & meshFile) { - csVector3 pos = csVector3(0,0,0); - if (pos_anchor) - { - if (pos_anchor->GetMovable()) - pos = pos_anchor->GetMovable()->GetPosition(); - engine->RemoveObject(pos_anchor); - } - if (meshFile == "") { ! pos_anchor = engine->CreateMeshWrapper("crystalspace.mesh.object.null", "pos_anchor", editWindow->GetView()->GetCamera()->GetSector(), pos); ! return (pos_anchor != 0); } else if (meshFile == "axis") --- 365,374 ---- } ! csPtr<iMeshWrapper> EEditApp::LoadCustomMesh(const csString & meshFile, const csString & name, csVector3 pos) { if (meshFile == "") { ! return engine->CreateMeshWrapper("crystalspace.mesh.object.null", ! name, editWindow->GetView()->GetCamera()->GetSector(), pos); } else if (meshFile == "axis") *************** *** 381,400 **** else { ! csRef<iMeshFactoryWrapper> meshFact = loader->LoadMeshObjectFactory(meshFile); ! if (!meshFact) ! return false; ! ! pos_anchor = engine->CreateMeshWrapper(meshFact, "pos_anchor", editWindow->GetView()->GetCamera()->GetSector(), pos); ! csRef<iSpriteCal3DState> cal3d = SCF_QUERY_INTERFACE(pos_anchor->GetMeshObject(), iSpriteCal3DState); ! if (cal3d) ! cal3d->SetAnimCycle(0, 1); ! if (pos_anchor) ! pos_anchor->GetMovable()->UpdateMove(); ! ! return (pos_anchor != 0); } ! return false; } --- 377,417 ---- else { ! csRef<iMeshFactoryWrapper> meshFact = ! loader->LoadMeshObjectFactory(meshFile); ! if (meshFact) ! { ! return engine->CreateMeshWrapper(meshFact, name, ! editWindow->GetView()->GetCamera()->GetSector(), pos); ! } ! else ! { ! return engine->CreateMeshWrapper("crystalspace.mesh.object.null", ! name, editWindow->GetView()->GetCamera()->GetSector(), pos); ! } ! } ! } ! bool EEditApp::LoadPositionMesh(const csString & meshFile) ! { ! csVector3 pos = csVector3(0,0,0); ! if (pos_anchor) ! { ! if (pos_anchor->GetMovable()) ! pos = pos_anchor->GetMovable()->GetPosition(); ! engine->RemoveObject(pos_anchor); ! } ! pos_anchor = LoadCustomMesh(meshFile, "pos_anchor", pos); ! if (!pos_anchor) ! { ! printf("ERROR: Couldn't load position mesh: %s\n", meshFile.GetData()); ! return false; } ! ! csRef<iSpriteCal3DState> cal3d = SCF_QUERY_INTERFACE(pos_anchor->GetMeshObject(), iSpriteCal3DState); ! if (cal3d) ! cal3d->SetAnimCycle(0, 1); ! ! return true; } *************** *** 409,438 **** } ! if (meshFile == "") ! { ! tar_anchor = engine->CreateMeshWrapper("crystalspace.mesh.object.null", "pos_anchor", editWindow->GetView()->GetCamera()->GetSector(), pos); ! return (tar_anchor != 0); ! } ! else if (meshFile == "axis") ! { ! } ! else { ! csRef<iMeshFactoryWrapper> meshFact = loader->LoadMeshObjectFactory(meshFile); ! if (!meshFact) ! return false; ! ! tar_anchor = engine->CreateMeshWrapper(meshFact, "pos_anchor", editWindow->GetView()->GetCamera()->GetSector(), pos); ! ! csRef<iSpriteCal3DState> cal3d = SCF_QUERY_INTERFACE(pos_anchor->GetMeshObject(), iSpriteCal3DState); ! if (cal3d) ! cal3d->SetAnimCycle(0, 1); ! ! if (tar_anchor) ! tar_anchor->GetMovable()->UpdateMove(); ! ! return (tar_anchor != 0); } ! return false; } --- 426,441 ---- } ! tar_anchor = LoadCustomMesh(meshFile, "pos_anchor", pos); ! if (!tar_anchor) { ! printf("ERROR: Couldn't load position mesh: %s\n", meshFile.GetData()); ! return false; } ! ! csRef<iSpriteCal3DState> cal3d = SCF_QUERY_INTERFACE(tar_anchor->GetMeshObject(), iSpriteCal3DState); ! if (cal3d) ! cal3d->SetAnimCycle(0, 1); ! ! return true; } *************** *** 449,456 **** } ! void EEditApp::SetCurrEffect(const csString & name) { currEffectName = name; ! ((EEditLoadEffectToolbox *)toolboxManager->GetToolbox(EEditToolbox::T_LOAD_EFFECT))->FillList(effectManager); ((EEditEditEffectToolbox *)toolboxManager->GetToolbox(EEditToolbox::T_EDIT_EFFECT))->LoadEffect(effectManager->FindEffect(name)); } --- 452,491 ---- } ! void EEditApp::SetTargetData(const csVector3 & pos, float rot) { + if (!tar_anchor) + { + printf("WARNING: Attempting to move the target anchor when it doesn't exist!\n"); + return; + } + tar_anchor->GetMovable()->SetPosition(pos); + tar_anchor->GetMovable()->SetTransform(csYRotMatrix3(rot)); + tar_anchor->GetMovable()->UpdateMove(); + } + + bool EEditApp::SetCurrEffect(const csString & name) + { + // figure out where this effect is located + csString effectLoc = ""; + for (int a=0; a<effectPaths.Length(); ++a) + { + if (effectPaths[a].name == name) + { + effectLoc = effectPaths[a].path; + break; + } + } + + // make a temporary effectslist just for this file to speed up loading + csString xml; + + xml = "<effectsFileList>\n"; + xml += " <effectsFile file=\""; xml += effectLoc; xml += "\" />\n"; + xml += "</effectsFileList>\n"; + vfs->WriteFile(TEMP_EFFECTS_LIST, xml.GetData(), xml.Length()); + + currEffectName = name; ! //((EEditLoadEffectToolbox *)toolboxManager->GetToolbox(EEditToolbox::T_LOAD_EFFECT))->FillList(effectManager); ((EEditEditEffectToolbox *)toolboxManager->GetToolbox(EEditToolbox::T_EDIT_EFFECT))->LoadEffect(effectManager->FindEffect(name)); } *************** *** 460,463 **** --- 495,606 ---- return currEffectName; } + + bool EEditApp::CreateEffectPathList(const csString & fileName) + { + effectPaths.DeleteAll(); + + if (!vfs->Exists(fileName)) + return false; + + csRef<iDocument> doc; + csRef<iDocumentNodeIterator> xmlbinds; + csRef<iDocumentSystem> xml; + const char* error; + + csRef<iDataBuffer> buff = vfs->ReadFile(fileName); + if (buff == 0) + { + Error2("Could not find file: %s", fileName.GetData()); + return false; + } + xml = csPtr<iDocumentSystem>(new csTinyDocumentSystem); + assert(xml); + doc = xml->CreateDocument(); + assert(doc); + error = doc->Parse( buff ); + if ( error ) + { + printf("Parse error in %s: %s", fileName.GetData(), error); + return false; + } + if (doc == 0) + return false; + + csRef<iDocumentNode> root = doc->GetRoot(); + if (root == 0) + { + Error1("No root in XML"); + return false; + } + + bool isSuccess = true; + csRef<iDocumentNode> listNode = root->GetNode("effectsFileList"); + if (listNode != 0) + { + xmlbinds = listNode->GetNodes("effectsFile"); + csRef<iDocumentNode> fileNode; + while (xmlbinds->HasNext()) + { + fileNode = xmlbinds->Next(); + + csString effectFile = fileNode->GetAttributeValue("file"); + if (vfs->Exists(effectFile)) + { + AppendEffectPathList(effectFile, fileName); + } + } + } + return true; + } + + bool EEditApp::AppendEffectPathList(const csString & effectFile, const csString & sourcePath) + { + if (!vfs->Exists(effectFile)) + return false; + + csRef<iDocument> doc; + csRef<iDocumentNodeIterator> xmlbinds; + csRef<iDocumentSystem> xml; + const char* error; + + csRef<iDataBuffer> buff = vfs->ReadFile(effectFile); + if (buff == 0) + { + Error2("Could not find file: %s", effectFile.GetData()); + return false; + } + xml = csPtr<iDocumentSystem>(new csTinyDocumentSystem); + assert(xml); + doc = xml->CreateDocument(); + assert(doc); + error = doc->Parse( buff ); + if ( error ) + { + printf("Parse error in %s: %s", effectFile.GetData(), error); + return false; + } + if (doc == 0) + return false; + + csRef<iDocumentNode> root = doc->GetRoot(); + if (root == 0) + { + Error1("No root in XML"); + return false; + } + + csRef<iDocumentNode> listNode = root->GetNode("effects"); + if (listNode != 0) + { + xmlbinds = listNode->GetNodes("effect"); + csRef<iDocumentNode> effectNode; + while (xmlbinds->HasNext()) + { + effectNode = xmlbinds->Next(); + effectPaths.Push(EffectPath(effectNode->GetAttributeValue("name"), effectFile)); + } + } + return true; + } void EEditApp::RegisterFactories() Index: eeditapp.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditapp.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eeditapp.h 13 Nov 2004 09:40:40 -0000 1.4 --- eeditapp.h 1 Dec 2004 15:09:35 -0000 1.5 *************** *** 74,81 **** public: ! static const char* CONFIG_FILENAME; ! static const char* APP_NAME; ! static const char* WINDOW_CAPTION; ! static const char* KEY_DEFS_FILENAME; /** Constructor --- 74,82 ---- public: ! static const char * CONFIG_FILENAME; ! static const char * APP_NAME; ! static const char * WINDOW_CAPTION; ! static const char * KEY_DEFS_FILENAME; ! static const char * TEMP_EFFECTS_LIST; /** Constructor *************** *** 168,171 **** --- 169,178 ---- */ EEditToolboxManager * GetToolboxManager(); + + /** Loads a mesh based on the name or filepath given. + * @param meshFile blank, 'axis', or the path to the mesh. + * @return the mesh if successful + */ + csPtr<iMeshWrapper> LoadCustomMesh(const csString & meshFile, const csString & name, csVector3 pos); /** Loads the position mesh indicator. *************** *** 187,190 **** --- 194,203 ---- void SetPositionData(const csVector3 & pos, float rot); + /** Sets the position and rotation of the effect target anchor. + * @param pos the new pos of the effect's target anchor. + * @param rot the new y rotation of the effect's target anchor. + */ + void SetTargetData(const csVector3 & pos, float rot); + /** Sets the given camera flag * @param flag the editApp::CAM_FLAG to set *************** *** 201,206 **** /** Sets the current effect. * @param name the name of the effect */ ! void SetCurrEffect(const csString & name); /** Gets the name current effect. --- 214,220 ---- /** Sets the current effect. * @param name the name of the effect + * @return true on success, false otherwise */ ! bool SetCurrEffect(const csString & name); /** Gets the name current effect. *************** *** 211,214 **** --- 225,239 ---- private: + /** Creates an effect name<->path mapping from an effectslist file. + * @param fileName the location of the effectslist file. + */ + bool CreateEffectPathList(const csString & fileName); + + /** Appends to the current effect name<->path mapping from an effect file. + * @param effectFile the location of the effect file. + * @param sourcePath the source file that loads this effect. + */ + bool AppendEffectPathList(const csString & effectFile, const csString & sourcePath); + /** Registers the custom PAWS widgets created in this application. */ *************** *** 270,273 **** --- 295,307 ---- eControlManager * controlManager; + + struct EffectPath + { + EffectPath(const char * newName, const char * newPath) : name(newName), path(newPath) {} + + csString name; + csString path; + }; + csArray<EffectPath> effectPaths; }; Index: eeditediteffecttoolbox.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditediteffecttoolbox.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eeditediteffecttoolbox.cpp 24 Nov 2004 17:39:16 -0000 1.4 --- eeditediteffecttoolbox.cpp 1 Dec 2004 15:09:35 -0000 1.5 *************** *** 49,53 **** if (effect) { ! effectMovablesRoot->Clear(); for (size_t a=0; a<effect->GetEffectMovableCount(); ++a) { --- 49,55 ---- if (effect) { ! //effectMovablesRoot->Clear(); ! //effectObjectsRoot->Clear(); ! for (size_t a=0; a<effect->GetEffectMovableCount(); ++a) { *************** *** 56,61 **** LoadEffectMovable(move); } - effectObjectsRoot->Clear(); for (size_t a=0; a<effect->GetEffectObjectCount(); ++a) { --- 58,63 ---- LoadEffectMovable(move); } + effectMovablesRoot->CollapseAll(); for (size_t a=0; a<effect->GetEffectObjectCount(); ++a) { *************** *** 64,67 **** --- 66,70 ---- LoadEffectObject(obj); } + effectObjectsRoot->CollapseAll(); } } *************** *** 91,94 **** --- 94,99 ---- return false; } + effectItemsTree->SetNotify(this); + effectItemsTree->SetScrollBars(false, true); effectItemsRoot = (pawsSimpleTreeNode *)effectItemsTree->FindWidget("EffectItemsRoot"); *************** *** 116,121 **** } ! bool EEditEditEffectToolbox::OnButtonPressed( int mouseButton, int keyModifier, pawsWidget* widget ) { return false; } --- 121,137 ---- } ! bool EEditEditEffectToolbox::OnButtonPressed(int mouseButton, int keyModifier, pawsWidget* widget) ! { ! return false; ! } ! ! bool EEditEditEffectToolbox::OnSelected( pawsWidget* widget) { + EffectWidgetData * wData = (EffectWidgetData *)(widget->GetExtraData()); + printf("SELECTED: %s\n", widget->GetName()); + if (wData) + { + printf("Effect Extra Data: %s\n", wData->blah.GetData()); + } return false; } *************** *** 123,126 **** --- 139,145 ---- void EEditEditEffectToolbox::LoadEffectMovable(psEffectMove * move) { + EffectWidgetData * data = new EffectWidgetData; + data->blah = "aoueoaoeau"; + pawsSimpleTreeNode * node = new pawsSimpleTreeNode(windowManager); effectMovablesRoot->InsertChild(node); *************** *** 128,131 **** --- 147,151 ---- node->Set(showLabel, false, "", move->GetName()); node->SetName(move->GetName()); + node->SetExtraData(data); pawsSimpleTreeNode * subNode = new pawsSimpleTreeNode(windowManager); *************** *** 134,137 **** --- 154,158 ---- subNode->Set(showLabel, false, "", "abs_dir: yes"); subNode->SetName(move->GetName() + csString("_abs_dir")); + subNode->SetExtraData(data); subNode = new pawsSimpleTreeNode(windowManager); *************** *** 140,143 **** --- 161,165 ---- subNode->Set(showLabel, false, "", "dist_scale: <0,0,0>"); subNode->SetName(move->GetName() + csString("_dist_scale")); + subNode->SetExtraData(data); for (size_t b=0; b<move->GetKeyFrameCount(); ++b) Index: eeditediteffecttoolbox.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditediteffecttoolbox.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eeditediteffecttoolbox.h 24 Nov 2004 17:39:16 -0000 1.4 --- eeditediteffecttoolbox.h 1 Dec 2004 15:09:35 -0000 1.5 *************** *** 56,59 **** --- 56,60 ---- virtual bool PostSetup(); virtual bool OnButtonPressed(int mouseButton, int keyModifier, pawsWidget* widget); + virtual bool OnSelected( pawsWidget* widget); private: *************** *** 67,71 **** */ void LoadEffectObject(psEffectObj * obj); ! // store a reference to the effect we're currently editing psEffect * currEffect; --- 68,78 ---- */ void LoadEffectObject(psEffectObj * obj); ! ! class EffectWidgetData : public pawsWidget::iWidgetData ! { ! public: ! csString blah; ! }; ! // store a reference to the effect we're currently editing psEffect * currEffect; Index: eeditpositiontoolbox.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditpositiontoolbox.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eeditpositiontoolbox.cpp 13 Nov 2004 09:40:40 -0000 1.4 --- eeditpositiontoolbox.cpp 1 Dec 2004 15:09:35 -0000 1.5 *************** *** 26,29 **** --- 26,30 ---- #include "paws/pawstextbox.h" #include "paws/pawsspinbox.h" + #include "paws/pawsradio.h" SCF_IMPLEMENT_IBASE(EEditPositionToolbox) *************** *** 52,69 **** bool changePos = false; ! if (pos_x->GetValue() != prevPos.x) { changePos = true; ! prevPos.x = pos_x->GetValue(); } ! if (pos_y->GetValue() != prevPos.y) { changePos = true; ! prevPos.y = pos_y->GetValue(); } ! if (pos_z->GetValue() != prevPos.z) { changePos = true; ! prevPos.z = pos_z->GetValue(); } if (rot->GetValue() != prevRot) --- 53,70 ---- bool changePos = false; ! if (posX->GetValue() != prevPos.x) { changePos = true; ! prevPos.x = posX->GetValue(); } ! if (posY->GetValue() != prevPos.y) { changePos = true; ! prevPos.y = posY->GetValue(); } ! if (posZ->GetValue() != prevPos.z) { changePos = true; ! prevPos.z = posZ->GetValue(); } if (rot->GetValue() != prevRot) *************** *** 74,78 **** if (changePos) ! editApp->SetPositionData(prevPos, prevRot); } --- 75,79 ---- if (changePos) ! editApp->SetPositionData(prevPos, prevRot * 3.14159f / 180.0f); } *************** *** 92,100 **** browseMesh = (pawsButton *) FindWidget("pos_mesh_browse"); meshFileText = (pawsEditTextBox *) FindWidget("pos_mesh_file"); ! applyMesh = (pawsButton *) FindWidget("pos_mesh_apply"); ! pos_x = (pawsSpinBox *) FindWidget("pos_x"); ! pos_y = (pawsSpinBox *) FindWidget("pos_y"); ! pos_z = (pawsSpinBox *) FindWidget("pos_z"); rot = (pawsSpinBox *) FindWidget("pos_rot"); return true; } --- 93,108 ---- browseMesh = (pawsButton *) FindWidget("pos_mesh_browse"); meshFileText = (pawsEditTextBox *) FindWidget("pos_mesh_file"); ! posX = (pawsSpinBox *) FindWidget("pos_x"); ! posY = (pawsSpinBox *) FindWidget("pos_y"); ! posZ = (pawsSpinBox *) FindWidget("pos_z"); rot = (pawsSpinBox *) FindWidget("pos_rot"); + posTypeNone = (pawsRadioButton *) FindWidget("pos_type_none"); + posTypeAxis = (pawsRadioButton *) FindWidget("pos_type_axis"); + posTypeCustom = (pawsRadioButton *) FindWidget("pos_type_custom"); + + posTypeNone->SetState(true); + posTypeAxis->SetState(false); + posTypeCustom->SetState(false); + return true; } *************** *** 107,111 **** { moreLessButton->SetText("Less <<"); ! SetSize(GetActualWidth(440), GetActualHeight(150)); } else --- 115,119 ---- { moreLessButton->SetText("Less <<"); ! SetSize(GetActualWidth(440), GetActualHeight(118)); } else *************** *** 118,127 **** else if (widget == browseMesh) { ! pawsFileNavigation::Create(WindowManager(),meshFileText->GetText(),"|*|", new OnFileSelected(meshFileText)); } ! else if (widget == applyMesh) { ! editApp->LoadPositionMesh(meshFileText->GetText()); } --- 126,143 ---- else if (widget == browseMesh) { ! posTypeNone->SetState(false); ! posTypeAxis->SetState(false); ! posTypeCustom->SetState(true); ! pawsFileNavigation::Create(WindowManager(),meshFileText->GetText(),"|*.cal3d|*.spr|*", new OnFileSelected(meshFileText)); } ! else if (widget == posTypeNone || widget == posTypeAxis || widget == posTypeCustom) { ! if (posTypeNone->GetState()) ! editApp->LoadPositionMesh(""); ! else if (posTypeAxis->GetState()) ! editApp->LoadPositionMesh("axis"); ! else ! editApp->LoadPositionMesh(meshFileText->GetText()); } *************** *** 133,136 **** --- 149,153 ---- if (text.Length() > 0) textBox->SetText(text); + editApp->LoadPositionMesh(text); } Index: eeditpositiontoolbox.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eeditpositiontoolbox.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eeditpositiontoolbox.h 13 Nov 2004 09:40:40 -0000 1.4 --- eeditpositiontoolbox.h 1 Dec 2004 15:09:35 -0000 1.5 *************** *** 18,23 **** */ ! #ifndef EEDIT_TOOLBOX_WINDOW_HEADER ! #define EEDIT_TOOLBOX_WINDOW_HEADER #include "eedittoolbox.h" --- 18,23 ---- */ ! #ifndef EEDIT_POSITION_TOOLBOX_WINDOW_HEADER ! #define EEDIT_POSITION_TOOLBOX_WINDOW_HEADER #include "eedittoolbox.h" *************** *** 28,31 **** --- 28,32 ---- class pawsEditTextBox; class pawsSpinBox; + class pawsRadioButton; /** This handles the effect position object. *************** *** 82,90 **** pawsButton * browseMesh; pawsEditTextBox * meshFileText; ! pawsButton * applyMesh; ! pawsSpinBox * pos_x; ! pawsSpinBox * pos_y; ! pawsSpinBox * pos_z; pawsSpinBox * rot; csVector3 prevPos; --- 83,93 ---- pawsButton * browseMesh; pawsEditTextBox * meshFileText; ! pawsSpinBox * posX; ! pawsSpinBox * posY; ! pawsSpinBox * posZ; pawsSpinBox * rot; + pawsRadioButton * posTypeNone; + pawsRadioButton * posTypeAxis; + pawsRadioButton * posTypeCustom; csVector3 prevPos; Index: eedittoolbox.h =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eedittoolbox.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** eedittoolbox.h 5 Nov 2004 06:19:25 -0000 1.2 --- eedittoolbox.h 1 Dec 2004 15:09:35 -0000 1.3 *************** *** 21,24 **** --- 21,25 ---- #define EEDIT_TOOLBOX_HEADER + /** A base class for all eedit toolbox windows. */ Index: eedittoolboxmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/eedit/eedittoolboxmanager.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** eedittoolboxmanager.cpp 5 Nov 2004 06:19:25 -0000 1.3 --- eedittoolboxmanager.cpp 1 Dec 2004 15:09:35 -0000 1.4 *************** *** 25,28 **** --- 25,29 ---- #include "paws/pawswidget.h" #include "eeditpositiontoolbox.h" + #include "eedittargettoolbox.h" #include "eeditcameratoolbox.h" #include "eeditrendertoolbox.h" *************** *** 34,37 **** --- 35,39 ---- pawsWidgetFactory * factory; factory = new EEditPositionToolboxFactory(paws); + factory = new EEditTargetToolboxFactory(paws); factory = new EEditCameraToolboxFactory(paws); factory = new EEditRenderToolboxFactory(paws); |