transfer from internal tree r5311 branches/1.4-gpl
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant/branches/ZeroRadiant@177 8a3a26a2-13c4-0310-b231-cf6edde360e5
This commit is contained in:
1
docs/developer/.cvsignore
Normal file
1
docs/developer/.cvsignore
Normal file
@@ -0,0 +1 @@
|
||||
*.BAK
|
||||
5616
docs/developer/CHANGES
Normal file
5616
docs/developer/CHANGES
Normal file
File diff suppressed because it is too large
Load Diff
130
docs/developer/DRAFT
Normal file
130
docs/developer/DRAFT
Normal file
@@ -0,0 +1,130 @@
|
||||
usefull global variables in Radiant:
|
||||
g_strAppPath has the path to the binary
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
using prefs / ini settings:
|
||||
are stored in Radiant.ini and *.bin files
|
||||
win32:
|
||||
looks in the current directory for a Radiant.ini file
|
||||
if found, will use it and set the ini directory to the proper location
|
||||
if not found:
|
||||
the registry has a path to the default directory?
|
||||
under key HKEY_CURRENT_USER/Software/GtkRadiant/PrimaryEditorPath
|
||||
(DefaultEditorPath cause that gets used for
|
||||
if the key doesn't exist create in current directory and set the key
|
||||
NOTE: need some registry version info, when we find in another dir than ours,
|
||||
check version and prompt to use existing settings or our own?
|
||||
|
||||
storing version information:
|
||||
each build publicly released should have a version string
|
||||
- use it in the about box
|
||||
- store it in the Radiant.ini file
|
||||
- use it in the registry GtkRadiant/
|
||||
do we need major and minor? minor could be used for versions that don't break .ini compatibility
|
||||
(well I'm lazy .. won't do)
|
||||
|
||||
linux:
|
||||
look in the current directory (check write permission!)
|
||||
if found, use it
|
||||
if not found:
|
||||
look in ~/.q3a/radiant
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
icons:
|
||||
look for bitmaps/ under g_strAppPath
|
||||
win32:
|
||||
if not found, use DefaultEditorPath registry key and try to locate there
|
||||
linux:
|
||||
we also need a DefaultEditorPath kind of thing?
|
||||
somewhere in ~/.q3a/radiant?
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
project file:
|
||||
Radiant.ini must have full path to the project file
|
||||
if no project file path:
|
||||
win32:
|
||||
we have to locate BASEPATH one way or the other. we have code that will look for the
|
||||
main directory and go down into baseq3/scripts. If that fails we prompt the user.
|
||||
it would be good to store BASEPATH in the .ini as well!
|
||||
linux:
|
||||
store path to Radiant installation somewhere in ~/.q3a/radiant
|
||||
if not found try some defaults and prompt the user
|
||||
|
||||
NOTE: on linux radiant is in /usr/local/games/quake3/ instead of some
|
||||
quake3/tools directory. This makes looking for the basepath easier.
|
||||
|
||||
g_PrefsDlg.m_strLastProject points to the project to be loaded
|
||||
if radiant cannot find it at startup it will try to guess and/or ask the user
|
||||
once the project file is loaded you can deduce a lot of things..
|
||||
but project file parsing has some prerequisites: __QERPATH / __QERHOMEPATH ??
|
||||
need to unify between win32 and linux!
|
||||
PrefsDlg has a bunch of defaults, but it must not try to guess
|
||||
__QERPATH and __QERHOMEPATH until there has been an ini load (or a lack of)
|
||||
the involved members are:
|
||||
m_strQuake2 <- points to the engine path, renamed to m_strBasePath m_strEngine
|
||||
m_strPAKFile <- built from m_strBasePath, removed (not used?)
|
||||
and: need to add more, like map compilers directory m_strToolsPath
|
||||
|
||||
project file syntax:
|
||||
linux version is using __QERPATH / __QERHOMEPATH
|
||||
win32 has __Q2PATH __QERPATH
|
||||
and the overall syntax is different!
|
||||
|
||||
big problem is user customization, it performs expansion and saves with static
|
||||
paths. but we'd like to keep the original one with generic naming. (cause if the
|
||||
config fucks up and user reinstalls he'll still get broken project settings)
|
||||
so: we try to load quake.qe4 project, expand it, and save as user.qe4
|
||||
(on linux, user.qe4 goes in ~/.q3a/baseq3/scripts)
|
||||
|
||||
TODO: how is "New project" supposed to work? would copy the current project..
|
||||
TODO: get rid of m_bLoadLast .. we require having a project loaded for use?
|
||||
TODO: store path to the tools in prefs? (see usage for project file expansion?)
|
||||
-> so you can use q3map in a given dir etc?
|
||||
|
||||
unifying project file syntaxes:
|
||||
|
||||
get rid of BuildShortPathName things!
|
||||
|
||||
-----------------------------------------------------------------
|
||||
some common operations and portable code:
|
||||
document XP use of stat, checking for directory / file existence
|
||||
|
||||
how to have code that reads well across XP:
|
||||
don't use TABS, have them emulated to 2 spaces
|
||||
|
||||
-----------------------------------------------------------------
|
||||
project files:
|
||||
unless we rewrite a whole bunch of it from scratch there's no much
|
||||
hope for evolution of the project files. Nevertheless, introduced
|
||||
a new "version" key that describes the version of the project file.
|
||||
version 2 adds a # keyword for q3map global options
|
||||
NOTE: and it's a compatibility nightmare, we can't call this one
|
||||
quake.qe4 or default.qe4 cause it will break backward compatibility
|
||||
|
||||
-----------------------------------------------------------------
|
||||
monitoring BSP process:
|
||||
we monitor through network connections
|
||||
we need to stop the process if an error occurs during one of the three steps
|
||||
and launch quake3 when all is done
|
||||
we don't want to CreateProcess and watch cause for rsh mode it will return immediately
|
||||
a BSP process is decomposed in several steps and we expect a connection at each step
|
||||
- later we can add custom steps that don't net connect and then we just spawn and
|
||||
watch them
|
||||
- we could add a name to the step to identify them, for now we'll just assume
|
||||
the first connection that we get is the one of the process we spawned
|
||||
when we loose the connection we wait one sec and spawn the next one...
|
||||
- we don't use batch file, just produce the command lines for each steps, the batch file
|
||||
will be produced only if we don't monitor the process (we can add an option to output
|
||||
the BAT file anyway)
|
||||
|
||||
what stuff goes in prefs? "Monitor BSP process"
|
||||
|
||||
detecting when the socket closes?
|
||||
using select() one can detect if a socket has closed or if there's some input
|
||||
NOTE: when launching a new BSP process we may still be connected. Need to ask the user
|
||||
about overridding and closing current connection.
|
||||
|
||||
in prefs, boolean flag for process monitoring .. g_PrefsDlg.m_bWatchBSP
|
||||
|
||||
when running in monitored mode, the BSP watcher is in charge of spawning and watching
|
||||
the processes (and more later when it will be parsing the output).
|
||||
33
docs/developer/HEAP
Normal file
33
docs/developer/HEAP
Normal file
@@ -0,0 +1,33 @@
|
||||
find and xargs:
|
||||
<TTimo> I need to remember that grep trick
|
||||
<Mercury> 'find -type f | xargs grep -n whatever' is handy..
|
||||
<Mercury> find -type f -name '*.[ch]' is even better at times.
|
||||
|
||||
stdout / stderr redirections:
|
||||
make -f makefile.cygwin 2> err.log
|
||||
make -f makefile.cygwin >& full.log
|
||||
|
||||
escape shell expansion:
|
||||
find gtk-20001023 -name "*.zip" -exec unzip {} \;
|
||||
find and -exec:
|
||||
find //c/Donwload/Gtk-20001226 -name '*src*zip' -exec unzip {} \;
|
||||
find //c/Donwload/Gtk-20001226 -name '*dev*zip' -exec unzip {} \;
|
||||
|
||||
simple encryption for /etc/passwd entries:
|
||||
perl -e 'print crypt("password","hk");'
|
||||
|
||||
debian and /etc/init.d
|
||||
update-rc.d
|
||||
|
||||
silly hint on sed and regexp:
|
||||
cat bspfile.c | sed -e 's/\([^_]\)malloc/\1safe_malloc/' | grep malloc
|
||||
|
||||
*poke 10*
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
bleh
|
||||
76
docs/developer/Inspector/Inspectors.argo
Normal file
76
docs/developer/Inspector/Inspectors.argo
Normal file
@@ -0,0 +1,76 @@
|
||||
<?xml version = "1.0" encoding = "ISO-8859-1" ?>
|
||||
<!DOCTYPE argo SYSTEM "argo.dtd" >
|
||||
<argo>
|
||||
<documentation>
|
||||
<authorname></authorname>
|
||||
<version></version>
|
||||
<description>
|
||||
|
||||
</description>
|
||||
</documentation>
|
||||
|
||||
<searchpath href="PROJECT_DIR" />
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_classdiagram1.pgml"
|
||||
/>
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_usecasediagram1.pgml"
|
||||
/>
|
||||
<member
|
||||
type="xmi"
|
||||
name="Inspectors.xmi"
|
||||
/>
|
||||
<member
|
||||
type="pgml"
|
||||
name="Inspectors_collaborationdiagram1.pgml"
|
||||
/>
|
||||
<historyfile name="" />
|
||||
<stats>
|
||||
<stat name="clicksInToDoPane"
|
||||
value="0" />
|
||||
<stat name="dblClicksInToDoPane"
|
||||
value="0" />
|
||||
<stat name="longestToDoList"
|
||||
value="56" />
|
||||
<stat name="longestAdd"
|
||||
value="0" />
|
||||
<stat name="longestHot"
|
||||
value="0" />
|
||||
<stat name="numCriticsFired"
|
||||
value="54081" />
|
||||
<stat name="numNotValid"
|
||||
value="10" />
|
||||
<stat name="numCriticsApplied"
|
||||
value="0" />
|
||||
<stat name="toDoPerspectivesChanged"
|
||||
value="0" />
|
||||
<stat name="navPerspectivesChanged"
|
||||
value="0" />
|
||||
<stat name="clicksInNavPane"
|
||||
value="42" />
|
||||
<stat name="numFinds"
|
||||
value="0" />
|
||||
<stat name="numJumpToRelated"
|
||||
value="0" />
|
||||
<stat name="numDecisionModel"
|
||||
value="0" />
|
||||
<stat name="numGoalsModel"
|
||||
value="0" />
|
||||
<stat name="numCriticBrowser"
|
||||
value="0" />
|
||||
<stat name="numNavConfig"
|
||||
value="0" />
|
||||
<stat name="numHushes"
|
||||
value="0" />
|
||||
<stat name="numChecks"
|
||||
value="0" />
|
||||
<stat name="Num_Button_Clicks"
|
||||
value="3" />
|
||||
<stat name="Drags_To_New"
|
||||
value="0" />
|
||||
<stat name="Drags_To_Existing"
|
||||
value="1" />
|
||||
</stats>
|
||||
</argo>
|
||||
247
docs/developer/Inspector/Inspectors.xmi
Normal file
247
docs/developer/Inspector/Inspectors.xmi
Normal file
@@ -0,0 +1,247 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE XMI SYSTEM "uml13.dtd">
|
||||
<XMI xmi.version="1.0">
|
||||
<XMI.header>
|
||||
<XMI.metamodel xmi.name="UML" xmi.version="1.3"/>
|
||||
</XMI.header>
|
||||
<XMI.content>
|
||||
<Model_Management.Model xmi.id="xmi.1" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-8000">
|
||||
<Foundation.Core.ModelElement.name>Surface inspectors</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Namespace.ownedElement>
|
||||
<Foundation.Core.Class xmi.id="xmi.2" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7fff">
|
||||
<Foundation.Core.ModelElement.name>SurfaceDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.3"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Classifier.feature>
|
||||
<Foundation.Core.Operation xmi.id="xmi.4">
|
||||
<Foundation.Core.ModelElement.name>Toggle</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.BehavioralFeature.isQuery xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.Operation.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.BehavioralFeature.parameter>
|
||||
<Foundation.Core.Parameter xmi.id="xmi.5">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.Parameter.kind xmi.value="return"/>
|
||||
<Foundation.Core.Parameter.behavioralFeature>
|
||||
<Foundation.Core.Operation xmi.idref="xmi.4"/>
|
||||
</Foundation.Core.Parameter.behavioralFeature>
|
||||
<Foundation.Core.Parameter.type>
|
||||
<Foundation.Core.Class xmi.idref="xmi.6"/>
|
||||
</Foundation.Core.Parameter.type>
|
||||
</Foundation.Core.Parameter>
|
||||
</Foundation.Core.BehavioralFeature.parameter>
|
||||
</Foundation.Core.Operation>
|
||||
<Foundation.Core.Attribute xmi.id="xmi.7">
|
||||
<Foundation.Core.ModelElement.name>activeInspectors</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.visibility xmi.value="public"/>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.Attribute.initialValue>
|
||||
<Foundation.Data_Types.Expression xmi.id="xmi.8">
|
||||
<Foundation.Data_Types.Expression.language>Java</Foundation.Data_Types.Expression.language>
|
||||
<Foundation.Data_Types.Expression.body>0</Foundation.Data_Types.Expression.body>
|
||||
</Foundation.Data_Types.Expression>
|
||||
</Foundation.Core.Attribute.initialValue>
|
||||
<Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Feature.owner>
|
||||
<Foundation.Core.StructuralFeature.type>
|
||||
<Foundation.Core.Class xmi.idref="xmi.9"/>
|
||||
</Foundation.Core.StructuralFeature.type>
|
||||
</Foundation.Core.Attribute>
|
||||
</Foundation.Core.Classifier.feature>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.10" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7ffc">
|
||||
<Foundation.Core.ModelElement.name>Dialog</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.specialization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.3"/>
|
||||
</Foundation.Core.GeneralizableElement.specialization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.3" xmi.uuid="-93--68-50-122-179f67:e1b3a63c86:-7ffb">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.2"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.10"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.6">
|
||||
<Foundation.Core.ModelElement.name>void</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.11" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffe">
|
||||
<Foundation.Core.ModelElement.name>ISurfaceDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.specialization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.12"/>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.13"/>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.14"/>
|
||||
</Foundation.Core.GeneralizableElement.specialization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.15" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffa">
|
||||
<Foundation.Core.ModelElement.name>CQ3BrushDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.12"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.12" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff9">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.15"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.16" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff7">
|
||||
<Foundation.Core.ModelElement.name>CQ3PatchDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.13"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.13" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff6">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.16"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Foundation.Core.Class xmi.id="xmi.17" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff5">
|
||||
<Foundation.Core.ModelElement.name>COtherGameDlg</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.GeneralizableElement.generalization>
|
||||
<Foundation.Core.Generalization xmi.idref="xmi.14"/>
|
||||
</Foundation.Core.GeneralizableElement.generalization>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Generalization xmi.id="xmi.14" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff4">
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
<Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Class xmi.idref="xmi.17"/>
|
||||
</Foundation.Core.Generalization.child>
|
||||
<Foundation.Core.Generalization.parent>
|
||||
<Foundation.Core.Class xmi.idref="xmi.11"/>
|
||||
</Foundation.Core.Generalization.parent>
|
||||
</Foundation.Core.Generalization>
|
||||
<Model_Management.Package xmi.id="xmi.18" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff3">
|
||||
<Foundation.Core.ModelElement.name>Undo / Redo code</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Model_Management.Package>
|
||||
<Model_Management.Package xmi.id="xmi.19" xmi.uuid="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff2">
|
||||
<Foundation.Core.ModelElement.name>Messaging API</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Model_Management.Package>
|
||||
<Foundation.Core.Class xmi.id="xmi.20">
|
||||
<Foundation.Core.ModelElement.name>int</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
<Foundation.Core.Class xmi.id="xmi.9">
|
||||
<Foundation.Core.ModelElement.name>list</Foundation.Core.ModelElement.name>
|
||||
<Foundation.Core.ModelElement.isSpecification xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isRoot xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isLeaf xmi.value="false"/>
|
||||
<Foundation.Core.GeneralizableElement.isAbstract xmi.value="false"/>
|
||||
<Foundation.Core.Class.isActive xmi.value="false"/>
|
||||
<Foundation.Core.ModelElement.namespace>
|
||||
<Model_Management.Model xmi.idref="xmi.1"/>
|
||||
</Foundation.Core.ModelElement.namespace>
|
||||
</Foundation.Core.Class>
|
||||
</Foundation.Core.Namespace.ownedElement>
|
||||
</Model_Management.Model>
|
||||
</XMI.content>
|
||||
</XMI>
|
||||
571
docs/developer/Inspector/Inspectors_classdiagram1.pgml
Normal file
571
docs/developer/Inspector/Inspectors_classdiagram1.pgml
Normal file
@@ -0,0 +1,571 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLClassDiagram|-93--68-50-122-179f67:e1b3a63c86:-8000"
|
||||
name="class diagram 1"
|
||||
>
|
||||
<group name="Fig0"
|
||||
description="uci.uml.visual.FigClass[33, 144, 103, 80]"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7fff"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig0.0"
|
||||
x="34"
|
||||
y="145"
|
||||
width="101"
|
||||
height="78"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
/>
|
||||
<text name="Fig0.1"
|
||||
x="33"
|
||||
y="144"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>SurfaceDlg</text>
|
||||
<text name="Fig0.2"
|
||||
x="33"
|
||||
y="161"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>public int newAttr = 0</text>
|
||||
<text name="Fig0.3"
|
||||
x="33"
|
||||
y="192"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>void Toggle()</text>
|
||||
</group>
|
||||
<group name="Fig1"
|
||||
description="uci.uml.visual.FigClass[33, 40, 97, 60]"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7ffc"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig1.0"
|
||||
x="34"
|
||||
y="41"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
/>
|
||||
<text name="Fig1.1"
|
||||
x="33"
|
||||
y="40"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Dialog</text>
|
||||
<text name="Fig1.2"
|
||||
x="33"
|
||||
y="57"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig1.3"
|
||||
x="33"
|
||||
y="78"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig3"
|
||||
x="149"
|
||||
y="192"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Toggle hide/shows SurfaceDlg
|
||||
replace DoSurface and ByeByeSurfaceDialog</text>
|
||||
<group name="Fig4"
|
||||
description="uci.uml.visual.FigClass[32, 256, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffe"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig4.0"
|
||||
x="33"
|
||||
y="257"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig4.1"
|
||||
x="32"
|
||||
y="256"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>ISurfaceDlg</text>
|
||||
<text name="Fig4.2"
|
||||
x="32"
|
||||
y="273"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig4.3"
|
||||
x="32"
|
||||
y="294"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig5"
|
||||
x="140"
|
||||
y="256"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Available in the plugin API
|
||||
defined in ISurfacePlugin.h</text>
|
||||
<group name="Fig6"
|
||||
description="uci.uml.visual.FigClass[32, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ffa"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig6.0"
|
||||
x="33"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig6.1"
|
||||
x="32"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>CQ3BrushDlg</text>
|
||||
<text name="Fig6.2"
|
||||
x="32"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig6.3"
|
||||
x="32"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<group name="Fig8"
|
||||
description="uci.uml.visual.FigClass[153, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff7"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig8.0"
|
||||
x="154"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig8.1"
|
||||
x="153"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>CQ3PatchDlg</text>
|
||||
<text name="Fig8.2"
|
||||
x="153"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig8.3"
|
||||
x="153"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig10"
|
||||
x="70"
|
||||
y="448"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>These two hardcoded in Radiant</text>
|
||||
<group name="Fig11"
|
||||
description="uci.uml.visual.FigClass[288, 376, 97, 60]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff5"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig11.0"
|
||||
x="289"
|
||||
y="377"
|
||||
width="95"
|
||||
height="58"
|
||||
fill="1"
|
||||
fillcolor="-16711681"
|
||||
stroke="1"
|
||||
strokecolor="-16711681"
|
||||
/>
|
||||
<text name="Fig11.1"
|
||||
x="288"
|
||||
y="376"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>COtherGameDlg</text>
|
||||
<text name="Fig11.2"
|
||||
x="288"
|
||||
y="393"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
<text name="Fig11.3"
|
||||
x="288"
|
||||
y="414"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig13"
|
||||
x="284"
|
||||
y="448"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Implemented in a plugin</text>
|
||||
<group name="Fig14"
|
||||
description="uci.uml.visual.FigPackage[520, 16, 140, 100]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff3"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig14.0"
|
||||
x="521"
|
||||
y="17"
|
||||
width="138"
|
||||
height="98"
|
||||
fill="0"
|
||||
stroke="0"
|
||||
/>
|
||||
<text name="Fig14.1"
|
||||
x="520"
|
||||
y="16"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Undo / Redo code</text>
|
||||
<text name="Fig14.2"
|
||||
x="520"
|
||||
y="34"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
></text>
|
||||
</group>
|
||||
<group name="Fig15"
|
||||
description="uci.uml.visual.FigPackage[520, 128, 140, 100]"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff2"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
</private>
|
||||
|
||||
<rectangle name="Fig15.0"
|
||||
x="521"
|
||||
y="129"
|
||||
width="138"
|
||||
height="98"
|
||||
fill="0"
|
||||
stroke="0"
|
||||
/>
|
||||
<text name="Fig15.1"
|
||||
x="520"
|
||||
y="128"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="dialog"
|
||||
textsize="9"
|
||||
>Messaging API</text>
|
||||
<text name="Fig15.2"
|
||||
x="520"
|
||||
y="146"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
></text>
|
||||
</group>
|
||||
<text name="Fig16"
|
||||
x="378"
|
||||
y="144"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Selection / Deselection messages</text>
|
||||
<text name="Fig17"
|
||||
x="341"
|
||||
y="32"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>Store a snapshot of something for later use</text>
|
||||
<text name="Fig18"
|
||||
x="141"
|
||||
y="152"
|
||||
fill="1"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
font="serif"
|
||||
textsize="10"
|
||||
>List of the SurfaceDlg objects we currently need
|
||||
Updated on the way when we get messages</text>
|
||||
<group name="Fig2"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-179f67:e1b3a63c86:-7ffb"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig0"
|
||||
destPortFig="Fig1"
|
||||
sourceFigNode="Fig0"
|
||||
destFigNode="Fig1"
|
||||
</private>
|
||||
<path name="Fig2.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="80"
|
||||
y="144" />
|
||||
<lineto x="80"
|
||||
y="100" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig7"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff9"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig6"
|
||||
destPortFig="Fig4"
|
||||
sourceFigNode="Fig6"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig7.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="80"
|
||||
y="376" />
|
||||
<lineto x="80"
|
||||
y="316" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig9"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff6"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig8"
|
||||
destPortFig="Fig4"
|
||||
sourceFigNode="Fig8"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig9.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="153"
|
||||
y="376" />
|
||||
<lineto x="129"
|
||||
y="316" />
|
||||
</path>
|
||||
</group>
|
||||
<group name="Fig12"
|
||||
description="uci.uml.visual.FigGeneralization"
|
||||
href="-93--68-50-122-1e11a1:e1b4a53a8a:-7ff4"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<private>
|
||||
sourcePortFig="Fig11.0"
|
||||
destPortFig="Fig4.0"
|
||||
sourceFigNode="Fig11"
|
||||
destFigNode="Fig4"
|
||||
</private>
|
||||
<path name="Fig12.1"
|
||||
description="uci.gef.FigPoly"
|
||||
fill="0"
|
||||
fillcolor="-1"
|
||||
stroke="1"
|
||||
strokecolor="-16777216"
|
||||
>
|
||||
<moveto x="289"
|
||||
y="377" />
|
||||
<lineto x="128"
|
||||
y="315" />
|
||||
</path>
|
||||
</group>
|
||||
</pgml>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLCollaborationDiagram|-93--68-50-122-1e11a1:e1b4a53a8a:-7ff0"
|
||||
name="collaboration diagram 1"
|
||||
>
|
||||
</pgml>
|
||||
6
docs/developer/Inspector/Inspectors_usecasediagram1.pgml
Normal file
6
docs/developer/Inspector/Inspectors_usecasediagram1.pgml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLUseCaseDiagram|-93--68-50-122-179f67:e1b3a63c86:-8000"
|
||||
name="use case diagram 1"
|
||||
>
|
||||
</pgml>
|
||||
BIN
docs/developer/Inspector/classdiagram1.gif
Normal file
BIN
docs/developer/Inspector/classdiagram1.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.5 KiB |
6
docs/developer/Inspector/collaborationdiagram1.pgml
Normal file
6
docs/developer/Inspector/collaborationdiagram1.pgml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<!DOCTYPE pgml SYSTEM "pgml.dtd">
|
||||
<pgml description="uci.uml.visual.UMLCollaborationDiagram|-93--68-50-122-1e11a1:e1b4a53a8a:-7ff0"
|
||||
name="collaboration diagram 1"
|
||||
>
|
||||
</pgml>
|
||||
266
docs/developer/Inspector/inspector.txt
Normal file
266
docs/developer/Inspector/inspector.txt
Normal file
@@ -0,0 +1,266 @@
|
||||
OK. Again I would have liked to get a design document before it being done. Main functionalities we
|
||||
need in the inspector:
|
||||
|
||||
- Unifiy the inspector under a single dialog box, called with 'S'
|
||||
|
||||
- Depending on what is currently selected, display several frames in the inspector:
|
||||
only brushes -> surface inspector
|
||||
only patches -> patch inspector
|
||||
brushes & patches -> both
|
||||
and later when brush primitives are mixed with regular brushes + plugin entities, raise whatever
|
||||
additional inspector stuff we need
|
||||
|
||||
- The camera view must update realtime when we change some parameters.
|
||||
|
||||
- Get rid of the Apply button, use the Undo code to store settings when surface inspector is
|
||||
raised. If user hits Cancel, call the undo stuff.
|
||||
|
||||
- Use the message broadcasting stuff to keep the inspectors up to date when the user changes the
|
||||
current selection. Be careful to keep the undo stuff in sync with the select / deselect operations.
|
||||
|
||||
- Use a 3-state scheme to display the params in the widgets. If two faces are selected that don't
|
||||
have the same shift increment, just grey out the shift box.
|
||||
|
||||
Messaging:
|
||||
- a good chunk of the work is moving the selection/creation stuff to the messaging API
|
||||
we no longer use UpdateSurfaceDialog, we post messages instead ..
|
||||
the surface inspector has hooked one of it's listeners into the corresponding message
|
||||
we may need to reorganize the messages, maybe introduce a hierarchy?
|
||||
or pass a void * param with messages?
|
||||
|
||||
- we don't post messages like "update surface inspector", we post messages that say "this and that
|
||||
have changed", then the surface inspector reacts if it needs to.
|
||||
Do we need marshalling in the messages? Very likely .. maybe using Gtk signal stuff would be interesting?
|
||||
|
||||
-> the messaging stuff is a big chunk of work and our surface inspector changes are not totally
|
||||
dependent on it. Better leave that for l8r
|
||||
|
||||
the inspector works by states and transitions? Or we post messages to it?
|
||||
Use case:
|
||||
the user raises the inspector .. if we are up we'll ignore, if we are hidden we'll
|
||||
go through the whole process (initialise, look at what is selected, display)
|
||||
then we enter an active state (listening for select / deselects and applying stuff)
|
||||
|
||||
all in all it seems to be too big a change for next release. will see later probably.
|
||||
Trying a few more days with it, see what happens. after all the interface is fairly restricted
|
||||
so there's a good chance our changes are fairly stable in the end. But rebuilding the whole interface
|
||||
part might be too much ...
|
||||
We need something state based? AND a set of messages ..
|
||||
but first, need to write the initialisation loop
|
||||
build the dialog, get the current surface information and display
|
||||
|
||||
Undoing the changes on the selected stuff:
|
||||
at any point in time, one can get a snapshot of selected stuff and use it to store the surface
|
||||
properties settings for later on. But what happens if the user modifies the selected brush, pushing
|
||||
it in the undo stack? Then we would cancel the changes? (and just backup to the state right after
|
||||
the modif)
|
||||
We could has the 'Apply' button used for that .. grey it out when the current state is the one in
|
||||
the backup. This happens whenever we hit 'Apply' or change something in the selection.
|
||||
The selection has several items: entities, brushes and selected faces (possibly later generic plugin entities)
|
||||
Current undo stuff is aimed at entities and brushes.
|
||||
NOTE: you can't have selected faces and brushes/entities at the same time, that's a good point to
|
||||
keep that seperated to deal with undo and storage
|
||||
On what side should the implemetation be ? undo.cpp select.cpp or surfacedialog.cpp ?
|
||||
We are going to do it with the messaging API anyway..
|
||||
And hook in the undo stuff, to reset the snapshot each time something gets pushed in the undo?
|
||||
|
||||
We have advanced stuff on the Inspector branch, doing basics on Alpha branch.
|
||||
Start writing the watch code in surfacedialog.cpp, see if we need some merging with Undo stuff l8r
|
||||
We need to track for the patch inspector as well..
|
||||
|
||||
basic code for CSurfaceUndo written. need to add hooks for the snapshot stuff and undo stuff. and a
|
||||
debug flag to monitor the life cycle of the object.
|
||||
|
||||
some use cases:
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- check we had the debug messages from CSurfaceUndo (initialise, activate, snapshot)
|
||||
- edit the surface settings
|
||||
- check the views are updating correctly
|
||||
- hit Ok
|
||||
- check we had a deactivate message
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- check we had the debug messages from CSurfaceUndo (initialise, activate, snapshot)
|
||||
- edit the surface settings
|
||||
- check the views are updating correctly
|
||||
- hit cancel / escape
|
||||
- check we have a undo and deactivate from CSurfaceUndo
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up the surface inspector
|
||||
- edit the surface settings
|
||||
- hit apply
|
||||
- edit them again
|
||||
- hit cancel / escape
|
||||
- check you get back to the apply state
|
||||
OK
|
||||
|
||||
- make two brushes
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- change settings
|
||||
- select an additional brush
|
||||
- check the surface inspector, new snapshot
|
||||
- hit cancel
|
||||
- check brushes remained in the same state
|
||||
- use standard Undo
|
||||
- check the first brush got back to it's initial settings
|
||||
OK
|
||||
|
||||
- select a brush
|
||||
- bring up surface inspector
|
||||
- change settings
|
||||
- select an additional brush
|
||||
- check the surface inspector, new snapshot
|
||||
- change more settings
|
||||
- hit cancel
|
||||
- check the first brush returned to intermediate state, and second to initial state (i.e. last snapshot)
|
||||
OK
|
||||
|
||||
g_surfaceUndo acts as a layer on top of the core Undo code when the surface inspector is activated.
|
||||
We need it because the surface inspector can edit faces which are not handled by the undo?
|
||||
(or does the current code push the whole brush when editing a face?)
|
||||
|
||||
not sure of the utility of the g_surfaceDialog hooks here ..
|
||||
default undo usage in the sruface inspector sends way too many undo messages.
|
||||
with the new scheme we store in undo only when select/deselect or user hits apply
|
||||
that way the 'Cancel' and later Ctrl+Z calls make sense
|
||||
but is it worth implementing a new class to achieve that?? .. yes because we intend a later cleanup
|
||||
of this part. (ahem is this reason good enough..)
|
||||
this part is actually much closer from the undo code than I had expected..
|
||||
'Cancel' call being an Undo call..
|
||||
|
||||
going to Inspector3:
|
||||
don't create a new class, simply use the Undo more intelligently?
|
||||
i.e. don't create undo stuff when editing the brush
|
||||
-> we add a flag to turn off the default undo behaviour and force Undo storage when we want
|
||||
we could also store the undo Id we are interested in and call undo several times to get it back
|
||||
|
||||
NOTE: what happens if the user hits undo when the surface inspector is up?
|
||||
-> we'll have to take his request into account?
|
||||
err .. performing which undo? The texture positioning or something else?
|
||||
seems the snapshot approach would still make sense then?
|
||||
|
||||
more use cases, see with Undo calls and select/deselect events
|
||||
NOTE: this whole thing is probably a single call to select_settexture that needs to be turned on/off
|
||||
instead of working at the undo level. but we would like to move to messaging so maybe it still makes sense
|
||||
the undo call is in Select_SetTexture (which does not have that many callers, I was expecting more)
|
||||
|
||||
the question about having the undo code keep working when surface inspector is around is still raised.
|
||||
but it makes it a lot harder, gotta have a real inspector mode in the undo?
|
||||
dunno, think about it again later
|
||||
|
||||
two operations are mixed in a single one and should not be:
|
||||
reading the map to get the current data we'll manipulate
|
||||
feed it in the dialog box widgets
|
||||
WARNING: when putting stuff in the widgets, it raises a shitload of update messages and therefor completely
|
||||
fucks up our OnOK OnApply OnCancel scheme (specially OnApply!)
|
||||
|
||||
NOTE: we want to switch between Surface inspector for brushes only and Patch inspector for patches only
|
||||
there's some crappy code in the surface inspector that we need to get rid of
|
||||
but need to check about that before with Spog or others
|
||||
|
||||
Forcing the way into using the surface inspector is SCREWED?
|
||||
Doesn't seem to work the way we want to. Always get parasite Undo messages and stuff.
|
||||
We could use a seperate stack for Undo with the surface inspector?
|
||||
Just store the surface properties in a seperate stack?
|
||||
When user hits cancel you go back and apply whatever you had?
|
||||
Doesn't seem like a clean way either.
|
||||
|
||||
Now dealing with both regular surface inspector and patch inspector:
|
||||
we have some stuff that needs to be on/off with the two inspectors
|
||||
what about catching the messages and issuing new snapshots?
|
||||
the main surface inspector is doing it?
|
||||
no!
|
||||
so what, we have several states?
|
||||
FUCKED UP
|
||||
|
||||
INSPECTOR 5 ----------------------------------------------------------------
|
||||
restarted from scratch, made much more simple changes.
|
||||
trying another trick for undo (!)
|
||||
just let the undo work as usual, but call undo ourselves in SetTexMods if we have create the last do
|
||||
requires proper initialization/deinitialisation.. in SetTexMods and GetTexMods..
|
||||
|
||||
getting rid of patch manipulation code in the regular surface inspector. The buttons will
|
||||
still work, but manip will require the patch inspector. (seems the patch inspector doesn't have that
|
||||
much success anyway)
|
||||
|
||||
TODO:
|
||||
OK get rid of patch stuff
|
||||
OK get rid of the texture toolbar? (it's broken right now)
|
||||
(and doesn't have anything usefull..)
|
||||
OK (Partial) OnCancel? we need to cancel the texdef as well
|
||||
store an undo texdef each time we grab new texdef stuff
|
||||
this works in reverse than the Undo code? When we do the initial
|
||||
problem is, in some cases the settings that show up are not in sync with what's in the inspector??
|
||||
(we can't avoid that because if a brush is selected there's no single setting)
|
||||
prolly get it out as is and let Spog or others send feedback about what it's supposed to do..
|
||||
for now: store stuff in the cancel texdef when we initialize an undo loop
|
||||
revert to that if OnCancel is used
|
||||
OK message when spinning over a patch?
|
||||
DUPLICATE (.. see below ..) check the increments we store in the SI are used when shift + arrows etc.
|
||||
no it doesn't work .. the shifting on keyboard shortcuts is done with m_nTextureTweak
|
||||
seems m_nTextureTweak is nowhere available in the prefs (and it's not in MFC builds either)
|
||||
some cleanup to be done around that it seems
|
||||
OK (.. merged with below, maybe some special cases left ..) texture widget (catch the Enter key to force-call an OnApply)
|
||||
OK (.. see above ..) catch Enter key at dialog level to call OnDone
|
||||
NO (.. it's clean, but thats too many lines of code ..) move the code that blokes updates to use gtk_signal_handler_block_by_func and gtk_signal_handler_block_by_func
|
||||
OK shift + arrow must match the SI settings,
|
||||
OK (FIXME .. not using the right scale (using the scale step instead! + add a button in SI to 'Match grid')
|
||||
POSTPONED (.. m_nTextureTweak is used in the nudge commands ..
|
||||
.. and nudge shortcuts are broken right now ..) get rid of m_nTextureTweak
|
||||
+ SI and PI always on top!
|
||||
|
||||
+ known issues: "Match Grid" is broken in BP mode
|
||||
|
||||
now on the patch inspector (nightmare!):
|
||||
OK (.. put it as readonly .. don't bother ..) texture name widget is screwed?
|
||||
OK the spinners scheme doesn't work, the stuff in the dialog is the inc step and we just need arrows
|
||||
OK get rid of the 'Type' dialog box
|
||||
POSTPONED (.. can't do undo on PI without proper Undo module ..) add proper Done Apply Cancel with Undo
|
||||
NO (.. too much work for something that sucks ..) make the changes reflect in the views when manipulating the entries
|
||||
OK (.. using %g ..) cut down on the number of digits!
|
||||
OK increment steps to be stored in the registry
|
||||
|
||||
putting the Cancel stuff in the surface inspector: only based on the Undo code, no cancel settings to store
|
||||
because we don't have actual storage of a current texdef (we only send alterations) BTW we should do that for
|
||||
brushes as well
|
||||
the patch inspector works by increments, Patch_SetTextureInfo to incrementally modify the patch.
|
||||
we can still do some undo by having a texdef storing the changes and working together with the undo
|
||||
if the undo is recognized, it means our current texdef increment is valid
|
||||
no, we can't represent the combination of several increments scale and rotate in a single texdef..
|
||||
get rid of the undo code for now .. only Apply and Done left
|
||||
|
||||
it seems it's still vastly broken when you select something. or is it on linux only?
|
||||
need a LOT of testing and figuring it out!!
|
||||
selecting a brush breaks totally.. (the texture screws up it seems)
|
||||
does it attempt to change the texture of the selected object??
|
||||
also: it seems you can multiple select a same brush??
|
||||
|
||||
the UNDO code of the SURFACE INSPECTOR IS STILL BROKEN ????
|
||||
(ok I'm really screwed, time to sleep)
|
||||
-> can't reproduce now?? maybe it's linux specific problem, I can't tell
|
||||
|
||||
FOUND A WAY TO REPRODUCE THE CRASH:
|
||||
+ select brush
|
||||
+ hit "Fit"
|
||||
+ hit the shift spinners two times
|
||||
OR:
|
||||
+ select single face on brush
|
||||
+ manually edit scale values
|
||||
-> maybe we have a problem with current texture? (NO)
|
||||
it's some kind of infinite loop? we call UpdateSurfaceInspector from Select_Brush and bang!
|
||||
no, it's a texdef from a face that got deleted
|
||||
prolly that hooking the undo code in there screws up the selected faces stuff
|
||||
if you undo a selected face operation, you end up with the whole brush selected.
|
||||
but that does not necessarily explain why you remove the face at Undo_Start
|
||||
ho well .. removed the undo buffering when selected faces and everything's better
|
||||
would need to re-establish the right face selection after undo, might solve the problem
|
||||
(actually you'd still need to have the settings point to the right object)
|
||||
|
||||
From PJ about the 'Match Grid' stuff: textures are moved in pixels, not units.
|
||||
We must rely on the current texture scale AND gridsize to compute the shift increment
|
||||
92
docs/developer/RegExp/Go
Normal file
92
docs/developer/RegExp/Go
Normal file
@@ -0,0 +1,92 @@
|
||||
./replace.pl bsp.c 255
|
||||
./replace.pl facebsp.c 240
|
||||
./replace.pl facebsp.c 251
|
||||
./replace.pl facebsp.c 260
|
||||
./replace.pl fog.c 83
|
||||
./replace.pl fog.c 439
|
||||
./replace.pl fog.c 529
|
||||
./replace.pl fog.c 530
|
||||
./replace.pl fog.c 531
|
||||
./replace.pl fog.c 532
|
||||
./replace.pl leakfile.c 34
|
||||
./replace.pl leakfile.c 75
|
||||
light.c:212: qprintf ("--- CountLightmaps ---\n");
|
||||
light.c:228: qprintf( "%5i drawSurfaces\n", numDrawSurfaces );
|
||||
light.c:229: qprintf( "%5i lightmaps\n", count );
|
||||
light.c:252: qprintf ("--- CreateSurfaceLights ---\n");
|
||||
light.c:1730: qprintf( "%5i gridPoints\n", numGridPoints );
|
||||
light.c:1786: qprintf ("--- CreateLights ---\n");
|
||||
light.c:1788: qprintf ("%i point lights\n", numPointLights);
|
||||
light.c:1789: qprintf ("%i area lights\n", numAreaLights);
|
||||
light.c:1792: qprintf ("--- TraceGrid ---\n");
|
||||
light.c:1794: qprintf( "%i x %i x %i = %i grid\n", gridBounds[0], gridBounds[1],
|
||||
light.c:1798: qprintf ("--- TraceLtm ---\n");
|
||||
light.c:1800: qprintf( "%5i visible samples\n", c_visible );
|
||||
light.c:1801: qprintf( "%5i occluded samples\n", c_occluded );
|
||||
lightmaps.c:312: qprintf ("--- AllocateLightmaps ---\n");
|
||||
lightmaps.c:347: qprintf( "%5i unique shaders\n", numSortShaders );
|
||||
lightmaps.c:369: qprintf( "%7i exact lightmap texels\n", c_exactLightmap );
|
||||
lightmaps.c:370: qprintf( "%7i block lightmap texels\n", numLightmaps * LIGHTMAP_WIDTH*LIGHTMAP_HEIGHT );
|
||||
lightv.c:4769: qprintf("light in solid at %1.1f %1.1f %1.1f\n", light->origin[0], light->origin[1], light->origin[2]);
|
||||
lightv.c:4771: qprintf("spot light in solid at %1.1f %1.1f %1.1f\n", light->origin[0], light->origin[1], light->origin[2]);
|
||||
map.c:294: qprintf ("Entity %i, Brush %i: mixed face contents\n"
|
||||
map.c:1138: qprintf ("--- LoadMapFile ---\n");
|
||||
map.c:1163: qprintf ("%5i total world brushes\n", CountBrushList( entities[0].brushes ) );
|
||||
map.c:1164: qprintf ("%5i detail brushes\n", c_detail );
|
||||
map.c:1165: qprintf ("%5i patches\n", numMapPatches);
|
||||
map.c:1166: qprintf ("%5i boxbevels\n", c_boxbevels);
|
||||
map.c:1167: qprintf ("%5i edgebevels\n", c_edgebevels);
|
||||
map.c:1168: qprintf ("%5i entities\n", num_entities);
|
||||
map.c:1169: qprintf ("%5i planes\n", nummapplanes);
|
||||
map.c:1170: qprintf ("%5i areaportals\n", c_areaportals);
|
||||
map.c:1171: qprintf ("size: %5.0f,%5.0f,%5.0f to %5.0f,%5.0f,%5.0f\n", map_mins[0],map_mins[1],map_mins[2],
|
||||
misc_model.c:411: qprintf("----- AddTriangleModels -----\n");
|
||||
misc_model.c:446: qprintf( "%5i triangle models\n", c_triangleModels );
|
||||
misc_model.c:447: qprintf( "%5i triangle surfaces\n", c_triangleSurfaces );
|
||||
misc_model.c:448: qprintf( "%5i triangle vertexes\n", c_triangleVertexes );
|
||||
misc_model.c:449: qprintf( "%5i triangle indexes\n", c_triangleIndexes );
|
||||
patch.c:176: qprintf( "----- PatchMapDrawSurfs -----\n" );
|
||||
patch.c:262: qprintf( "%5i patches\n", patchCount );
|
||||
patch.c:263: qprintf( "%5i patch LOD groups\n", groupCount );
|
||||
portals.c:500: qprintf( "----- MakeTreePortals -----\n");
|
||||
portals.c:503: qprintf("%6d tiny portals\n", c_tinyportals);
|
||||
portals.c:589: qprintf ("--- FloodEntities ---\n");
|
||||
portals.c:608: qprintf("%5i flooded leafs\n", c_floodedleafs );
|
||||
portals.c:612: qprintf ("no entities in open -- no filling\n");
|
||||
portals.c:616: qprintf ("entity reached from outside -- no filling\n");
|
||||
portals.c:762: qprintf ("--- FloodAreas ---\n");
|
||||
portals.c:768: qprintf ("%5i areas\n", c_areas);
|
||||
portals.c:813: qprintf ("--- FillOutside ---\n");
|
||||
portals.c:815: qprintf ("%5i solid leafs\n", c_solid);
|
||||
portals.c:816: qprintf ("%5i leafs filled\n", c_outside);
|
||||
portals.c:817: qprintf ("%5i inside leafs\n", c_inside);
|
||||
prtfile.c:213: qprintf ("--- NumberClusters ---\n");
|
||||
prtfile.c:218: qprintf ("%5i visclusters\n", num_visclusters);
|
||||
prtfile.c:219: qprintf ("%5i visportals\n", num_visportals);
|
||||
prtfile.c:220: qprintf ("%5i solidfaces\n", num_solidfaces);
|
||||
prtfile.c:232: qprintf ("--- WritePortalFile ---\n");
|
||||
shaders.c:301:// qprintf( "shaderFile: %s\n", filename );
|
||||
shaders.c:600: qprintf( "%5i shaderInfo\n", numShaderInfo);
|
||||
surface.c:176: qprintf( "----- MergeSides -----\n");
|
||||
surface.c:182: qprintf( "%5i siderefs\n", numSideRefs );
|
||||
surface.c:266: qprintf( "----- SubdivideDrawSurfs -----\n");
|
||||
surface.c:365: qprintf( "----- ClipSidesIntoTree -----\n");
|
||||
surface.c:1013: qprintf( "----- FilterDrawsurfsIntoTree -----\n");
|
||||
surface.c:1045: qprintf( "%5i emited drawsurfs\n", c_surfs );
|
||||
surface.c:1046: qprintf( "%5i references\n", c_refs );
|
||||
surface.c:1047: qprintf( "%5i stripfaces\n", c_stripSurfaces );
|
||||
surface.c:1048: qprintf( "%5i fanfaces\n", c_fanSurfaces );
|
||||
tjunction.c:476: qprintf("----- FixTJunctions -----\n");
|
||||
tjunction.c:508: qprintf( "%6i axial edge lines\n", axialEdgeLines );
|
||||
tjunction.c:509: qprintf( "%6i non-axial edge lines\n", numEdgeLines - axialEdgeLines );
|
||||
tjunction.c:510: qprintf( "%6i degenerate edges\n", c_degenerateEdges );
|
||||
tjunction.c:525: qprintf( "%6i verts added for tjunctions\n", c_addedVerts );
|
||||
tjunction.c:526: qprintf( "%6i total verts\n", c_totalVerts );
|
||||
tjunction.c:527: qprintf( "%6i naturally ordered\n", c_natural );
|
||||
tjunction.c:528: qprintf( "%6i rotated orders\n", c_rotate );
|
||||
tjunction.c:529: qprintf( "%6i can't order\n", c_cant );
|
||||
vis.c:223: qprintf ("cluster %4i : %4i visible\n", leafnum, numvis);
|
||||
visflow.c:642: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
visflow.c:774: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
visflow.c:1037: qprintf ("portal:%4i mightsee:%4i cansee:%4i (%i chains)\n",
|
||||
writebsp.c:388: qprintf ("--- EndModel ---\n");
|
||||
92
docs/developer/RegExp/Go.cleaned
Normal file
92
docs/developer/RegExp/Go.cleaned
Normal file
@@ -0,0 +1,92 @@
|
||||
./replace.pl bsp.c 255
|
||||
./replace.pl facebsp.c 240
|
||||
./replace.pl facebsp.c 251
|
||||
./replace.pl facebsp.c 260
|
||||
./replace.pl fog.c 83
|
||||
./replace.pl fog.c 439
|
||||
./replace.pl fog.c 529
|
||||
./replace.pl fog.c 530
|
||||
./replace.pl fog.c 531
|
||||
./replace.pl fog.c 532
|
||||
./replace.pl leakfile.c 34
|
||||
./replace.pl leakfile.c 75
|
||||
./replace.pl light.c 212
|
||||
./replace.pl light.c 228
|
||||
./replace.pl light.c 229
|
||||
./replace.pl light.c 252
|
||||
./replace.pl light.c 1730
|
||||
./replace.pl light.c 1786
|
||||
./replace.pl light.c 1788
|
||||
./replace.pl light.c 1789
|
||||
./replace.pl light.c 1792
|
||||
./replace.pl light.c 1794
|
||||
./replace.pl light.c 1798
|
||||
./replace.pl light.c 1800
|
||||
./replace.pl light.c 1801
|
||||
./replace.pl lightmaps.c 312
|
||||
./replace.pl lightmaps.c 347
|
||||
./replace.pl lightmaps.c 369
|
||||
./replace.pl lightmaps.c 370
|
||||
./replace.pl lightv.c 4769
|
||||
./replace.pl lightv.c 4771
|
||||
./replace.pl map.c 294
|
||||
./replace.pl map.c 1138
|
||||
./replace.pl map.c 1163
|
||||
./replace.pl map.c 1164
|
||||
./replace.pl map.c 1165
|
||||
./replace.pl map.c 1166
|
||||
./replace.pl map.c 1167
|
||||
./replace.pl map.c 1168
|
||||
./replace.pl map.c 1169
|
||||
./replace.pl map.c 1170
|
||||
./replace.pl map.c 1171
|
||||
./replace.pl misc_model.c 411
|
||||
./replace.pl misc_model.c 446
|
||||
./replace.pl misc_model.c 447
|
||||
./replace.pl misc_model.c 448
|
||||
./replace.pl misc_model.c 449
|
||||
./replace.pl patch.c 176
|
||||
./replace.pl patch.c 262
|
||||
./replace.pl patch.c 263
|
||||
./replace.pl portals.c 500
|
||||
./replace.pl portals.c 503
|
||||
./replace.pl portals.c 589
|
||||
./replace.pl portals.c 608
|
||||
./replace.pl portals.c 612
|
||||
./replace.pl portals.c 616
|
||||
./replace.pl portals.c 762
|
||||
./replace.pl portals.c 768
|
||||
./replace.pl portals.c 813
|
||||
./replace.pl portals.c 815
|
||||
./replace.pl portals.c 816
|
||||
./replace.pl portals.c 817
|
||||
./replace.pl prtfile.c 213
|
||||
./replace.pl prtfile.c 218
|
||||
./replace.pl prtfile.c 219
|
||||
./replace.pl prtfile.c 220
|
||||
./replace.pl prtfile.c 232
|
||||
./replace.pl shaders.c 301
|
||||
./replace.pl shaders.c 600
|
||||
./replace.pl surface.c 176
|
||||
./replace.pl surface.c 182
|
||||
./replace.pl surface.c 266
|
||||
./replace.pl surface.c 365
|
||||
./replace.pl surface.c 1013
|
||||
./replace.pl surface.c 1045
|
||||
./replace.pl surface.c 1046
|
||||
./replace.pl surface.c 1047
|
||||
./replace.pl surface.c 1048
|
||||
./replace.pl tjunction.c 476
|
||||
./replace.pl tjunction.c 508
|
||||
./replace.pl tjunction.c 509
|
||||
./replace.pl tjunction.c 510
|
||||
./replace.pl tjunction.c 525
|
||||
./replace.pl tjunction.c 526
|
||||
./replace.pl tjunction.c 527
|
||||
./replace.pl tjunction.c 528
|
||||
./replace.pl tjunction.c 529
|
||||
./replace.pl vis.c 223
|
||||
./replace.pl visflow.c 642
|
||||
./replace.pl visflow.c 774
|
||||
./replace.pl visflow.c 1037
|
||||
./replace.pl writebsp.c 388
|
||||
4
docs/developer/RegExp/pattern
Normal file
4
docs/developer/RegExp/pattern
Normal file
@@ -0,0 +1,4 @@
|
||||
#s/.*:/.\/replace.pl &/
|
||||
#s/\(.*\):\([0-9]*\):\(.*\):/.\/replace.pl \1 \2/
|
||||
#s/\(.*\):\([0-9]*\):/.\/replace.pl \1 \2 /
|
||||
s/\(.*\):\([0-9]*\):\(.*\)/.\/replace.pl \1 \2 /
|
||||
17
docs/developer/RegExp/replace.pl
Normal file
17
docs/developer/RegExp/replace.pl
Normal file
@@ -0,0 +1,17 @@
|
||||
#!perl
|
||||
rename("$ARGV[0]", "$ARGV[0].old");
|
||||
open(FILE, "$ARGV[0].old");
|
||||
open(OFILE, ">$ARGV[0]");
|
||||
while(<FILE>)
|
||||
{
|
||||
if($. != $ARGV[1])
|
||||
{
|
||||
print OFILE;
|
||||
next;
|
||||
}
|
||||
s/Sys_Printf \(/Sys_FPrintf \(SYS_VRB,/;
|
||||
s/Sys_Printf\(/Sys_FPrintf \(SYS_VRB,/;
|
||||
print OFILE;
|
||||
}
|
||||
close(OFILE);
|
||||
close(FILE);
|
||||
17
docs/developer/RegExp/tstscrpt.pl
Normal file
17
docs/developer/RegExp/tstscrpt.pl
Normal file
@@ -0,0 +1,17 @@
|
||||
#!perl
|
||||
rename("brush.c", "brush.c.old");
|
||||
open(FILE, "brush.c.old");
|
||||
open(OFILE, ">brush.c");
|
||||
while(<FILE>)
|
||||
{
|
||||
if($. != 150)
|
||||
{
|
||||
print OFILE;
|
||||
next;
|
||||
}
|
||||
s/Sys_Printf \(/Sys_FPrintf \(SYS_VRB,/;
|
||||
s/Sys_Printf\(/Sys_FPrintf \(SYS_VRB,/;
|
||||
print OFILE;
|
||||
}
|
||||
close(OFILE);
|
||||
close(FILE);
|
||||
19
docs/developer/TESTERS
Normal file
19
docs/developer/TESTERS
Normal file
@@ -0,0 +1,19 @@
|
||||
a few basic contacts for people willing to test GtkRadiant:
|
||||
|
||||
+ everyone on the RadiantBinaries mailing list
|
||||
|
||||
+ -----------------------
|
||||
|UL|FeNiX: (5:20 PM) when will you be letting loose a new beta for this "completely" new radiant?
|
||||
|UL|FeNiX: (5:20 PM) I would love the honor to help you alpha and or beta test anything.......
|
||||
|UL|FeNiX: (5:20 PM) you could consider me your win2K tester......
|
||||
Tim: (5:21 PM) well .. within a few days I hope .. it will need lots of testing
|
||||
but I want something that is basically usable before we can go forward
|
||||
yeah, w2k testing is much needed
|
||||
what's your email?
|
||||
|
||||
|UL|FeNiX: (5:21 PM) kingfenix1@home.com
|
||||
Tim: (5:21 PM) k
|
||||
|
||||
+ GL slowdowns tests --------------------------------------------
|
||||
mac (from Q3W forum)
|
||||
gangstapoodle@hotmail.com
|
||||
123
docs/developer/TODO
Normal file
123
docs/developer/TODO
Normal file
@@ -0,0 +1,123 @@
|
||||
Things that need to be done in Q3Radiant Linux:
|
||||
|
||||
- copy and paste to other instances
|
||||
|
||||
Bugs:
|
||||
|
||||
- The surface inspector is not updated if you close it,
|
||||
select another brush and open it again. (Win32 too)
|
||||
|
||||
Win32 version BUGS/TODO list:
|
||||
|
||||
- write an XP version of _stat / FileExists in cmdlib
|
||||
- put the sleep thing in a proper place, bind it in the keyboard shortcuts
|
||||
- console output bugs: properly format the output, fix "console not scrolling but keeps
|
||||
overwriting lines"
|
||||
we no longer need to convert to CR/LF to output in the console. removed that.
|
||||
interesting piece about the text widget here:
|
||||
http://www.gtk.org/tutorial/gtk_tut-14.html
|
||||
added freeze and thaw calls in Sys_BeginWait Sys_EndWait
|
||||
need to call Sys_BeginWait Sys_EndWait in all appropriate places (Map_LoadFile)
|
||||
need to limit size of the console, and scroll down on output
|
||||
wrote a test program that reproduces the bug with scrolling
|
||||
- write a coding directions document (what and where to put stuff)
|
||||
qe3.h, globals, map data storage structures
|
||||
see DevDocs/draft, need to do something along those lines
|
||||
- remember maximized state (not only the size)
|
||||
and various window position settings
|
||||
- get rid of the SGIOpenGL flag, (make it default?)
|
||||
actually, remove all the prefs crap that's not relevant
|
||||
- widgets too big?
|
||||
at least the menus, or the dialog boxes as well?
|
||||
- get rid of Texture_LoadTGATexture (or rename it)
|
||||
(do l8r)
|
||||
- sleep mode
|
||||
- proper about box
|
||||
- have basic default position and size for the windows in the four views
|
||||
- plugin API
|
||||
- have plugin links accessed from plugins menu
|
||||
- make sure the registry cleaning works
|
||||
- version information!
|
||||
- custom shortcut keys file!
|
||||
shortcut.ini ?
|
||||
- problem with strPrefab
|
||||
|
||||
- fix user.qe4 thing, don't overwrite. And tell the user about it. Actually allow him to
|
||||
select another location / name for the project file.
|
||||
|
||||
- command map: changing the file to command.ini? put it in the same dir as radiant.ini
|
||||
(get rid of user path
|
||||
|
||||
- logging console: add the checkbox
|
||||
- add the radiant.pid detection!! (this is from 200 -> 201)
|
||||
- remember window position on the desktop and maximized state
|
||||
- fix browsing for a directory, the win32 dialog to browse for a dir is fucked
|
||||
- check creating a new project on linux, I rewrote it and tested on win
|
||||
- cleanup the q3map code, remove the dirty __TTIMOBUILD stuff
|
||||
|
||||
- changes to the jpeg library for the MFC version, must make their way to Gtk
|
||||
(proper error handling)
|
||||
|
||||
- saving window pos in MainFrame::OnDestroy crashes in 4-view mode (Sagnor)
|
||||
- 4-view: [00:31] <Sagnor> oh and the "o" for the console doens't work
|
||||
|
||||
FIXED: --------
|
||||
- Printing: Saving screenshot instead
|
||||
- icon in KDE has "name=quake3": Fixed in the latest setup (thanks Stephane)
|
||||
- add precompiled headers to speedup building
|
||||
done. basically added stdafx.h, the VC5 project needs to be updated
|
||||
stdafx.cpp: generate precompiled header with stdafx.h
|
||||
all other files: automatic use of precompiled headers...
|
||||
(maybe later add more headers to stdafx)
|
||||
- context switch problems
|
||||
seem to have disappeared since I fixed a bug in Str
|
||||
no it's definitely back!
|
||||
fix by Leo, hacked into gdk.dll for CS_OWNDC window class style
|
||||
- use proper texture when not found instead of white
|
||||
Leo fixed, bug in the custom gluBuild2DMipmaps
|
||||
- use registry
|
||||
for window positions <- Leo did
|
||||
have proper default positions!
|
||||
- bitmap loading broken (can't get anything to load up)
|
||||
ok Leo fixed
|
||||
- renaming some files .. linux_dlgs.cpp to dlgs.cpp etc. let's be neutral!
|
||||
done that .. removed linux_*, renamed qgl_linux.c to qgl.c
|
||||
(Makefile and VC5 project need updating)
|
||||
- prefs stuff? big open/close loop on radiant.ini?
|
||||
fixed radiant.ini growing huge on win32 (doesn't seem to affect the linux version)
|
||||
will have to check with a profiler if that's so bad
|
||||
- fixed m_strQuake2 (change name and have proper defaults)
|
||||
it's the path to the engine we've all been waiting for!
|
||||
- fixed the new project step
|
||||
- fixed paklog crashes if /tmp/paklog.txt and the dir tmp doesn't exist on win32
|
||||
(ask windows for the temp directory? .. I would put in radiant current dir .. on win32)
|
||||
also check on a machine that doesn't define a HOME env var!
|
||||
- can't reproduce: crash in gluBuild2DMipmaps? seems very random. was not able to reproduce
|
||||
it for sure. First time happened on base_trim/pewter.
|
||||
happens on image[k++] = *ubptr++; (l1038)
|
||||
- merge 201 in, use the console logging stuff to debug project settings things
|
||||
|
||||
DISCUSSION LOG ABOUT GL SPEED:
|
||||
[19:17] <Neo|Work> Then why not use your own main, calling g_main_iteration at even intervals? :)
|
||||
[19:17] <MEGASTeP> shuoldn't be too hard. I hve plenty of code like that
|
||||
[19:18] *** Joins: Centove (gregm@coco.comstar.net)
|
||||
[19:18] <Neo|Work> while(1) { while(g_main_iteration(0)) /* do nothing, process until done */; [do own stuff]; pause(); } or so
|
||||
[19:18] <TTimo> I see .. well actually my main problem is that the GL view is dead slow
|
||||
[19:19] <TTimo> at first we though it was because of all the stuff between windows and the handlers
|
||||
[19:19] <TTimo> but the problem seems somwhere else
|
||||
[19:20] <Neo|Work> can you profile the code?
|
||||
[19:21] <TTimo> we'll try .. but actually I don't know for sure where the perfomance hit happens
|
||||
[19:21] <TTimo> might be because it doesn't process the mouse messages quickly enough, or because the refresh messages are sent once every g_main_interaction
|
||||
[19:22] <TTimo> but compared to the MFC version, it feels sluggish
|
||||
[19:22] <mordred> yoda: fwiw, it looks like Lance mispaired two sets of speakers when he packed up the Utah offices. If you have no complaints, I'll put my mismatched pair back and take a known pair, which should leave you even. 'k?
|
||||
[19:22] <Neo|Work> I believe that g_main can block
|
||||
[19:23] <TTimo> block? what do you mean?
|
||||
[19:23] <Neo|Work> g_main_iteration(1) blocks if there are no events to process
|
||||
[19:23] <Neo|Work> might not be at all what's wrong here though. :)
|
||||
[19:23] <TTimo> you mean it sleeps until more events happen?
|
||||
[19:23] <Neo|Work> yeahj
|
||||
[19:24] <TTimo> well that would not be a problem .. the problem is I'd like to emit paint messages faster when the user interacts with the GL window
|
||||
[19:24] <Neo|Work> I don't know g_main works, but I would assume it uses g_main_iteration(1)
|
||||
[19:24] <TTimo> ok, well thanks for the insight .. we'll keep looking anyway
|
||||
[19:24] <Neo|Work> hmm. Your own main look might do the trick, possibly. Dunno. :)
|
||||
|
||||
9221
docs/developer/TstMaps/Desktop_pb_leaf.map
Normal file
9221
docs/developer/TstMaps/Desktop_pb_leaf.map
Normal file
File diff suppressed because it is too large
Load Diff
3452
docs/developer/TstMaps/komap1.map
Normal file
3452
docs/developer/TstMaps/komap1.map
Normal file
File diff suppressed because it is too large
Load Diff
4661
docs/developer/TstMaps/realloc.map
Normal file
4661
docs/developer/TstMaps/realloc.map
Normal file
File diff suppressed because it is too large
Load Diff
1887
docs/developer/TstMaps/sput.map
Normal file
1887
docs/developer/TstMaps/sput.map
Normal file
File diff suppressed because it is too large
Load Diff
1099
docs/developer/TstMaps/ttq3dm3.map
Normal file
1099
docs/developer/TstMaps/ttq3dm3.map
Normal file
File diff suppressed because it is too large
Load Diff
5062
docs/developer/TstMaps/western.map
Normal file
5062
docs/developer/TstMaps/western.map
Normal file
File diff suppressed because it is too large
Load Diff
BIN
docs/developer/UML/modules.zargo
Normal file
BIN
docs/developer/UML/modules.zargo
Normal file
Binary file not shown.
247
docs/developer/WIN32BETA
Normal file
247
docs/developer/WIN32BETA
Normal file
@@ -0,0 +1,247 @@
|
||||
THIS FILE IS OFFICIALLY OUTDATED CLOSED NO LONGER USED
|
||||
|
||||
All the stuff that needs to be settled for win32 beta of GtkRadiant:
|
||||
|
||||
- need to add more code checking BSP process execution (Q_Exec or engine spawning)
|
||||
(TTimo: Assigned to self)
|
||||
|
||||
- the BSP commands are switching in order randomly
|
||||
|
||||
- Need more error checking when executing q3map (in any mode)
|
||||
(Q_Exec goes out of resources sometimes)
|
||||
|
||||
- Region compiling is broken
|
||||
|
||||
- GL font on win32 uses the default system font .. which can be .. yiddish or cyrilic etc.
|
||||
force to courier?
|
||||
NOTE: actually I'm not sure this really is the problem .. some people are getting weird bitmap fonts
|
||||
|
||||
- view n2 needs to wake on whatever widget you raise first
|
||||
Fixed.
|
||||
|
||||
- entity information box on entity inspector displays with nasty characters
|
||||
maybe the same problem as above?
|
||||
|
||||
- map snapshot has a bug (allocation and stuff around Str class)
|
||||
OK (don't use CString stuff = other_stuff; do CString stuff; stuff = other_stuff;)
|
||||
|
||||
- sleep mode on view 2&3 crashing
|
||||
Fixed for the floating windows mode.
|
||||
|
||||
- sleep mode: need to bring back the bitmap fonts
|
||||
Fixed
|
||||
|
||||
- sleep mode: need to rebuild the data on models and patches! (call Map_BuildBrushData)
|
||||
Calling Map_BuildBrushData in Mainframe::OnSleep.
|
||||
OK (added some crap to reload) ... Maybe more to do
|
||||
|
||||
- sleep mode: need to trigger out sleep mode when raising again!
|
||||
Done.
|
||||
|
||||
- console: we want output while it's processing .. otherwise it's just useless ..
|
||||
OK!
|
||||
|
||||
- win32 help format distribution of the manual?
|
||||
|
||||
- update the links page, add stuff from the forum
|
||||
(TTimo .. will do)
|
||||
|
||||
- check maximized state is working(?)
|
||||
|
||||
<<<<<<< WIN32BETA
|
||||
- view n.3 crashes on exit in MainFrame::OnDestroy..
|
||||
(trying to save prefs)
|
||||
|
||||
Fixed.
|
||||
=======
|
||||
- remove high color textures from prefs .. remnant from Q2 .. always on .. off is broken anyway
|
||||
Done.
|
||||
|
||||
- test sleep mode!
|
||||
|
||||
- check my project template bug checking code is ok
|
||||
NOTE: it's fuxored. Need a central function to shrink and standardize file paths:
|
||||
lowercase
|
||||
short dos8.2 names
|
||||
unix style forward slashes /
|
||||
-> then perform the comparisons
|
||||
|
||||
- surface and patch inspector:
|
||||
[23:37] <G_DeWan> WHen you make adjustments in surface window, it should show results immediately. Pressing Apply after each change to see how it looks is a pain.
|
||||
[23:41] <TTimo> true
|
||||
[23:42] <TTimo> is it the behaviour of the MFC version or not?
|
||||
[23:42] <TTimo> on the MFC version when you make adjustements it updates on the fly right?
|
||||
[23:43] <G_DeWan> Yeah.
|
||||
[23:44] <G_DeWan> ANd the fit and axial buittons do not seem to do anything, even if you press Apply afterwords.
|
||||
[23:44] <G_DeWan> HDidn't check patches at all, don't know about them.
|
||||
Fixed
|
||||
|
||||
- check the engine path changes I made didn't break on linux
|
||||
|
||||
- user INI path in prefs: need to look into it .. but my guess is .. it's broken/useless
|
||||
|
||||
- view n.2: doesn't remember the window positions
|
||||
Fixed
|
||||
|
||||
- view n.2: the Z window doesn't shrink below the default size
|
||||
Fixed
|
||||
|
||||
- do some performance comparisons with 202
|
||||
(specially BrushBuild step)
|
||||
|
||||
- a quickstart.txt file with some explanations about the transition 202 -> GtkRadiant?
|
||||
like:
|
||||
what are the actual new features
|
||||
(new way to deal with project settings, sleep mode, net connect for BSP process)
|
||||
what are we testing in the alpha
|
||||
where to report bugs, who is doing what
|
||||
how to contribute as a coder
|
||||
some of this stuff goes into the changelog!
|
||||
>>>>>>> 1.15
|
||||
|
||||
- is there a way to have something actually drawing when moving the splitters?
|
||||
|
||||
- view n.4: the Z window gets pushed when you resize with the leftmost vertical splitter
|
||||
|
||||
- disable the groups view (it's not functional)
|
||||
Fixed
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
if a message gets printed, the console will raise up. But if something else was active
|
||||
(like Entities) .. the widgets are still active .. start moving the mouse on top of
|
||||
the entity window and stuff will start to appear
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
when moving in the 2D window the console outputs lots of error messages:
|
||||
ERROR: glXMakeCurrent failed.. Error:0
|
||||
Please restart Q3Radiant if the Map view is not working
|
||||
but everything seems to work fine, no graphic glitches
|
||||
|
||||
- floating windows mode (n.2 in prefs):
|
||||
the Z window doesn't resize
|
||||
|
||||
- more window position storage, store maximized state and position on the desktop
|
||||
Note: maximized state doesn't exist under X, it depends on the WM.
|
||||
|
||||
- keyboard shortcuts break if click in the console window, it keeps the focus..
|
||||
Fixed (using GtkText again).
|
||||
|
||||
<<<<<<< WIN32BETA
|
||||
- upgrade to latest Gtk distribution (there's been a new release) and make sure we are ok
|
||||
|
||||
- enable undo/redo
|
||||
|
||||
Fixed.
|
||||
|
||||
- make sure the BSP monitoring stuff is stored in registry
|
||||
|
||||
- remove the "Buggy GL driver" thing, we'll use another strategy for hardware-specific issues
|
||||
|
||||
- remove the QE4 update model, force always on
|
||||
|
||||
- assertion failed when raising the prefs box for the first time?
|
||||
|
||||
=======
|
||||
>>>>>>> 1.15
|
||||
- use the other view modes to check nothing's wrong with them
|
||||
|
||||
- win32 console doesn't release the focus if you click into it
|
||||
it also has resize issues .. doesn't seem to want to shrink down
|
||||
Fixed the focus problem (using GtkText again).
|
||||
|
||||
- some problems with file permissions under linux?
|
||||
seems it used to create the log and pid file with no write permissions for the user
|
||||
ends up that when you try to open the console file for output it fails or the .pid remains when you try to erase it
|
||||
(NOTE: I need someone with an old install to check that)
|
||||
on win32 more or less same problem. It's created with an archive flag that
|
||||
fordibs removal as well.
|
||||
<<<<<<< WIN32BETA
|
||||
|
||||
Fixed: missing fclose in main.cpp that could be causing this problem.
|
||||
=======
|
||||
leo: there was a missing fclose in main.cpp that could be causing this problem.
|
||||
>>>>>>> 1.15
|
||||
|
||||
- engine path / project loading
|
||||
when we load a template project file we are using the engine path to build it
|
||||
if user has several installs and old prefs that rely on another engine path, project
|
||||
template construction fails. (i.e. is still based on old engine path)
|
||||
I don't know how to solve:
|
||||
-check the engine path when we do the template thing?
|
||||
-check engine path at each project load
|
||||
actually we can check everytime and ask the user, it seems this happens in weird cases
|
||||
.. anyway it's not supposed to be a "stable" situation anytime
|
||||
|
||||
- make sure the BSP monitoring stuff is stored in registry
|
||||
OK (added)
|
||||
|
||||
- the Radiant logo is screwed in the about dialog box?
|
||||
OK (Leo:) The logo.bmp file in the CVS server is screwed, fixed.
|
||||
|
||||
- remove the "Buggy GL driver" thing, we'll use another strategy for hardware-specific issues
|
||||
OK (Leo fixed)
|
||||
|
||||
- engine path dialog is broken (need split to get the actual path)
|
||||
OK (splitting the path, can't edit it must go through the dialog)
|
||||
|
||||
- assertion failed when raising the prefs box for the first time?
|
||||
WORKSFORM (can't reprodcue this one)
|
||||
leo: Used to happen sometimes for me (not anymore ?)
|
||||
|
||||
- view n.3 crashes on exit in MainFrame::OnDestroy..
|
||||
(trying to save prefs)
|
||||
Fixed
|
||||
|
||||
- remove the QE4 update model, force always on
|
||||
Done.
|
||||
|
||||
- custom keyboard shortcuts is buggy .. works halfway
|
||||
OK all fixed
|
||||
|
||||
- upgrade to latest Gtk distribution (there's been a new release) and make sure we are ok
|
||||
OK (tested and stuff .. I'm using the latest in the setup)
|
||||
|
||||
- enable undo/redo
|
||||
leo: it's already enabled
|
||||
(ok fixed, had to enable back the menus)
|
||||
OK
|
||||
|
||||
- project settings. GtkRadiant uses a new version of project settings.
|
||||
Default name is quakev2.qe4
|
||||
Must be able to read old project settings as well .. BSP monitoring disabled
|
||||
if using old project settings
|
||||
When searching for project settings, will look for quakev2.qe4 first, then quake.qe4
|
||||
No more overwriting the loaded project settings. We detect "template" project settings
|
||||
(ie. the ones we distribute) with a "user_project" "1" keyval
|
||||
When a template is loaded, save as userxx.qe4 where xx = 1 2 3 4 5 6 etc.
|
||||
It will trash scripts/ a bit but it doesn't matter ..
|
||||
|
||||
I did some cleanup to the project code, tested on both linux and win32, will need more
|
||||
testing and stuff while in alpha/beta I guess. But it should be stabilized now.
|
||||
|
||||
OK
|
||||
|
||||
-unify the project file syntax on both platforms! (and yes, the problem is
|
||||
radiant on linux is in quake3/ instead of quake3/tools)
|
||||
the expansion rules are not the same between version 1 and v2 project files!
|
||||
we change the string names so we don't have to adapt..
|
||||
NOTE: later we'll remove support for old v1 syntax?
|
||||
NOTE: we may need to add a g_strHomePath for ~/.q3a/ on linux
|
||||
|
||||
see above, the v2 project file is in data/quakev2.qe4
|
||||
|
||||
OK
|
||||
|
||||
- preferences dialog for BSP monitoring: do / don't do, launch engine after
|
||||
compilation.
|
||||
Right now all the params are in prefs, just need the interface
|
||||
|
||||
OK, need more testing, and the sleep mode code
|
||||
.. may also want to add more configurable stuff later .. though I'd rather have it done
|
||||
by a plugin
|
||||
|
||||
- in QE_LoadProject, check the template reading works ok, specially with the new
|
||||
globals Leo added some time ago
|
||||
|
||||
OK, tested on both win32 and linux
|
||||
|
||||
36
docs/developer/WIN32SETUP
Normal file
36
docs/developer/WIN32SETUP
Normal file
@@ -0,0 +1,36 @@
|
||||
Summary of TODO and BUGS for GtkRadiant setup files on win32:
|
||||
|
||||
(most of the times the stuff has to be checked in both versions of the setup)
|
||||
|
||||
- installer back button is broken
|
||||
OK (it just bails out if you try to back instead)
|
||||
|
||||
- need proper setup splash screen
|
||||
is there someone skilled with gimp at loki :) ?
|
||||
OK (Maj did)
|
||||
|
||||
- don't have several files for license and readme .. use a central version
|
||||
(scripts or proper settings in InstallShield)
|
||||
in private/GtkRadiant/data <- where we put all the install specific stuff?
|
||||
NOTE: we could put the gtk.dll libs there as well
|
||||
OK
|
||||
|
||||
- remove curry from the alpha (it's still MFC)
|
||||
remove GenSurf as well .. try to get some info from David Hyde
|
||||
OK
|
||||
|
||||
- have a changelog for the end user (not the DevDocs/CHANGES kind of thing)
|
||||
something that focuses on features and bug fixes more than on the internals
|
||||
OK .. need to fill it up a bit
|
||||
|
||||
- use quakev2.qe4 instead of quake.qe4 (both in nomedia and full)
|
||||
added it in the advanced files section
|
||||
(need to prompt the user about overwriting it)
|
||||
for now the nomedia installation needs to run on top of 202
|
||||
OK
|
||||
|
||||
- fix bug with shaders names (skies and liquids)
|
||||
OK
|
||||
|
||||
- add Wolfen to the credits!
|
||||
OK
|
||||
27
docs/developer/XML.txt
Normal file
27
docs/developer/XML.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
printf mess in q3map
|
||||
(and in the libs)
|
||||
|
||||
q3map: several breeds .. qprintf _printf printf
|
||||
should all resolve to use a single Sys_Printf thing
|
||||
and put #define printf ..
|
||||
|
||||
for the static libs? need to use function pointers..
|
||||
|
||||
q3map uses common/cmdlib.c
|
||||
Radiant links against cmdlib.lib based on libs/cmdlib/cmdlib.cpp
|
||||
|
||||
but eventually we'll want to use the same Sys_Printf scheme in q3map AND Radiant?
|
||||
qprintf and _printf are defined in common/cmdlib.c
|
||||
BUT: modifying cmdlib would probably break bspc and other stuff that relies on it?
|
||||
|
||||
moving q3map to use a custom version of cmdlib.c in q3map/cmdlib.c
|
||||
removing the qprintf and _printf stuff, moving to a seperate printout.c file
|
||||
|
||||
compiling libxml on win32: need to turn off a bunch of stuff.
|
||||
problem: we got two xmlversion.h files??
|
||||
we can't get rid of using libxml/xmlversion.h, so the solution is to get rid of xmlversion.h
|
||||
(add ../libxml to the paths)
|
||||
|
||||
fuck!
|
||||
we also compile some .c files from common/ !
|
||||
-> create a common2/ dir ..
|
||||
34
docs/developer/XMLPush/ReadMe.txt
Normal file
34
docs/developer/XMLPush/ReadMe.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
========================================================================
|
||||
CONSOLE APPLICATION : XMLPush
|
||||
========================================================================
|
||||
|
||||
|
||||
AppWizard has created this XMLPush application for you.
|
||||
|
||||
This file contains a summary of what you will find in each of the files that
|
||||
make up your XMLPush application.
|
||||
|
||||
XMLPush.dsp
|
||||
This file (the project file) contains information at the project level and
|
||||
is used to build a single project or subproject. Other users can share the
|
||||
project (.dsp) file, but they should export the makefiles locally.
|
||||
|
||||
XMLPush.cpp
|
||||
This is the main application source file.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other standard files:
|
||||
|
||||
StdAfx.h, StdAfx.cpp
|
||||
These files are used to build a precompiled header (PCH) file
|
||||
named XMLPush.pch and a precompiled types file named StdAfx.obj.
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Other notes:
|
||||
|
||||
AppWizard uses "TODO:" to indicate parts of the source code you
|
||||
should add to or customize.
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
8
docs/developer/XMLPush/StdAfx.cpp
Normal file
8
docs/developer/XMLPush/StdAfx.cpp
Normal file
@@ -0,0 +1,8 @@
|
||||
// stdafx.cpp : source file that includes just the standard includes
|
||||
// XMLPush.pch will be the pre-compiled header
|
||||
// stdafx.obj will contain the pre-compiled type information
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
// TODO: reference any additional headers you need in STDAFX.H
|
||||
// and not in this file
|
||||
22
docs/developer/XMLPush/StdAfx.h
Normal file
22
docs/developer/XMLPush/StdAfx.h
Normal file
@@ -0,0 +1,22 @@
|
||||
// stdafx.h : include file for standard system include files,
|
||||
// or project specific include files that are used frequently, but
|
||||
// are changed infrequently
|
||||
//
|
||||
|
||||
#if !defined(AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_)
|
||||
#define AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif // _MSC_VER > 1000
|
||||
|
||||
|
||||
// TODO: reference additional headers your program requires here
|
||||
|
||||
//{{AFX_INSERT_LOCATION}}
|
||||
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
||||
|
||||
#endif // !defined(AFX_STDAFX_H__323F1140_CFC1_11D4_A457_0004AC96D4C3__INCLUDED_)
|
||||
|
||||
#include "libxml/parser.h"
|
||||
#include "libxml/tree.h"
|
||||
8
docs/developer/XMLPush/XMLDump.xml
Normal file
8
docs/developer/XMLPush/XMLDump.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<q3map_feedback>
|
||||
<message level="1">Q3Map - built for GtkRadiant v1.1b - based on v1.0q (c) 1999 Id Software Inc.
|
||||
</message>
|
||||
<message level="3">************ ERROR ************
|
||||
usage: q3map [general options] [options] mapfile
|
||||
</message>
|
||||
</q3map_feedback>
|
||||
30
docs/developer/XMLPush/XMLPush.cpp
Normal file
30
docs/developer/XMLPush/XMLPush.cpp
Normal file
@@ -0,0 +1,30 @@
|
||||
// XMLPush.cpp : Defines the entry point for the console application.
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
FILE *f;
|
||||
xmlDocPtr doc;
|
||||
|
||||
f = fopen("XMLDump.xml", "r");
|
||||
if (f != NULL) {
|
||||
int res, size = 1024;
|
||||
char chars[1024];
|
||||
xmlParserCtxtPtr ctxt;
|
||||
|
||||
res = fread(chars, 1, 4, f);
|
||||
if (res > 0) {
|
||||
ctxt = xmlCreatePushParserCtxt(NULL, NULL,
|
||||
chars, res, "foooo (filename)?");
|
||||
while ((res = fread(chars, 1, size, f)) > 0) {
|
||||
xmlParseChunk(ctxt, chars, res, 0);
|
||||
}
|
||||
xmlParseChunk(ctxt, chars, 0, 1);
|
||||
doc = ctxt->myDoc;
|
||||
xmlFreeParserCtxt(ctxt);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
27
docs/developer/XMLmap.txt
Normal file
27
docs/developer/XMLmap.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
XMLmap branch:
|
||||
|
||||
need to move the map loading / saving code out in a module
|
||||
what are the main dependencies?
|
||||
|
||||
main functions to move out:
|
||||
Map_LoadFile
|
||||
Map_SaveFile
|
||||
(and all their direct dependencies/call graph)
|
||||
ex Entity_Parse Brush_Parse Entity_Write Brush_Write
|
||||
|
||||
but? even changing to XML format we would need those functions too?
|
||||
is it worth having the .map and .xmlmap through a same interface?
|
||||
|
||||
what dependencies?
|
||||
-> active_brushes
|
||||
-> GetToken etc.
|
||||
-> LoadFile (load into a buffer) .. that's VFS right?
|
||||
|
||||
first step: move some code out in map module and try to compile it..
|
||||
Map_LoadFile for example
|
||||
or the whole map.cpp?
|
||||
|
||||
first problem: entity_t is declared in entity.h, currently not available to
|
||||
the plugin API. Clean way would be to create a wrapper, but speed says we
|
||||
should move entity_t to qertypes.h..
|
||||
|
||||
455
docs/developer/changes.201.202
Normal file
455
docs/developer/changes.201.202
Normal file
@@ -0,0 +1,455 @@
|
||||
diff -rup ../Q3Radiant201/PrefsDlg.cpp Q3Radiant/PrefsDlg.cpp
|
||||
--- ../Q3Radiant201/PrefsDlg.cpp Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/PrefsDlg.cpp Thu Aug 3 17:19:16 2000
|
||||
@@ -224,6 +232,8 @@ void CPrefsDlg::DoDataExchange(CDataExch
|
||||
DDX_Text(pDX, IDC_EDIT_UNDOLEVELS, m_nUndoLevels);
|
||||
DDV_MinMaxInt(pDX, m_nUndoLevels, 1, 64);
|
||||
DDX_Check(pDX, IDC_CHECK_VERTEXMODE, m_bVertexSplit);
|
||||
+ DDX_Check(pDX, IDC_CHECK_LOG, m_bLogConsole);
|
||||
+ DDX_Check(pDX, IDC_NOALPHA, m_bDisableAlphaChannel);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
@@ -236,6 +246,7 @@ BEGIN_MESSAGE_MAP(CPrefsDlg, CDialog)
|
||||
ON_BN_CLICKED(IDC_BTN_BROWSEUSERINI, OnBtnBrowseuserini)
|
||||
ON_CBN_SELCHANGE(IDC_COMBO_WHATGAME, OnSelchangeComboWhatgame)
|
||||
ON_BN_CLICKED(IDC_BUTTON_CLEAN, OnButtonClean)
|
||||
+ ON_BN_CLICKED(IDC_NOALPHA, OnNoalpha)
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
@@ -332,7 +344,7 @@ bool SetQdirFromPath( const char *path )
|
||||
len = strlen(BASEDIRNAME);
|
||||
for (c=path+strlen(path)-1 ; c != path ; c--)
|
||||
{
|
||||
- int i;
|
||||
+ unsigned int i;
|
||||
|
||||
if (strnicmp (c, BASEDIRNAME, len) == 0)
|
||||
{
|
||||
@@ -448,7 +460,12 @@ void CPrefsDlg::LoadPrefs()
|
||||
|
||||
m_strQuake2 = AfxGetApp()->GetProfileString(PREF_SECTION, Q2_KEY);
|
||||
// if the path to the engine is empty, we set this flag to call InitEnginePath later
|
||||
- if (m_strQuake2.GetLength() == 0)
|
||||
+ // if the path to the engine is empty or points to a file that doesn't exist we call InitEnginePath
|
||||
+ struct _finddata_t fileinfo;
|
||||
+ int handle;
|
||||
+ handle = _findfirst (m_strQuake2.GetBuffer(0), &fileinfo);
|
||||
+ _findclose( handle );
|
||||
+ if (handle == -1 || m_strQuake2.GetLength() == 0)
|
||||
InitEnginePath();
|
||||
|
||||
m_iLastLightIntensity = AfxGetApp()->GetProfileInt(PREF_SECTION, "LastLightIntensity", 300);
|
||||
@@ -697,4 +731,10 @@ void CPrefsDlg::OnButtonClean()
|
||||
theApp.ResetRegistry();
|
||||
g_pParentWnd->OnFileExit();
|
||||
}
|
||||
+}
|
||||
+
|
||||
+void CPrefsDlg::OnNoalpha()
|
||||
+{
|
||||
+ if (static_cast<CButton *>(GetDlgItem(IDC_NOALPHA))->GetState() & 0x0003)
|
||||
+ MessageBox( "If alpha channel support is disabled, Curry plugin might not work as expected.", "Alpha channel support", MB_OK );
|
||||
}
|
||||
diff -rup ../Q3Radiant201/Radiant.rc Q3Radiant/Radiant.rc
|
||||
--- ../Q3Radiant201/Radiant.rc Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/Radiant.rc Thu Aug 3 17:19:22 2000
|
||||
@@ -1518,7 +1520,7 @@ BEGIN
|
||||
LTEXT "Height",IDC_STATIC,131,136,22,8
|
||||
END
|
||||
|
||||
-IDD_DLG_PREFS DIALOG DISCARDABLE 0, 0, 386, 351
|
||||
+IDD_DLG_PREFS DIALOG DISCARDABLE 0, 0, 386, 380
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Q3Radiant Preferences"
|
||||
FONT 8, "MS Sans Serif"
|
||||
@@ -1561,103 +1563,108 @@ BEGIN
|
||||
CONTROL "Texture subset",IDC_CHECK_TEXTUREWINDOW,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,308,94,63,10
|
||||
CONTROL "Right click to drop entities",IDC_CHECK_RIGHTCLICK,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,137,95,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,150,95,10
|
||||
CONTROL "Face selection",IDC_CHECK_FACE,"Button",BS_AUTOCHECKBOX |
|
||||
- WS_TABSTOP,13,149,62,10
|
||||
- EDITTEXT IDC_EDIT_ROTATION,58,161,24,12,ES_AUTOHSCROLL
|
||||
+ WS_TABSTOP,13,162,62,10
|
||||
+ EDITTEXT IDC_EDIT_ROTATION,58,174,24,12,ES_AUTOHSCROLL
|
||||
CONTROL "ALT + multi-drag",IDC_CHECK_ALTDRAG,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,137,68,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,150,68,10
|
||||
CONTROL "Snap T to Grid",IDC_CHECK_SNAPT,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,149,62,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,162,62,10
|
||||
CONTROL "Mouse chaser",IDC_CHECK_MOUSECHASE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,114,160,68,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,114,173,68,10
|
||||
CONTROL "Patch Toolbar",IDC_CHECK_WIDETOOLBAR,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,137,61,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,150,61,10
|
||||
CONTROL "Light drawing",IDC_CHECK_LIGHTDRAW,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,149,58,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,162,58,10
|
||||
CONTROL "Paint sizing info",IDC_CHECK_SIZEPAINT,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,193,160,65,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,193,173,65,10
|
||||
CONTROL "Hi Color Textures",IDC_CHECK_HICOLOR,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,281,137,70,10
|
||||
- LTEXT "Startup Shaders:",IDC_STATIC,281,150,54,8
|
||||
- COMBOBOX IDC_COMBO_SHADERS,281,160,82,54,CBS_DROPDOWNLIST |
|
||||
+ BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
+ WS_TABSTOP,281,150,70,10
|
||||
+ LTEXT "Startup Shaders:",IDC_STATIC,281,163,54,8
|
||||
+ COMBOBOX IDC_COMBO_SHADERS,281,173,82,54,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
- EDITTEXT IDC_EDIT_QUAKE2,13,215,229,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSE,248,216,16,11
|
||||
+ EDITTEXT IDC_EDIT_QUAKE2,13,228,229,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSE,248,230,16,11
|
||||
CONTROL "Use internal (DLL) QBSP....",IDC_CHECK_INTERNALBSP,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,234,102,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,247,102,10
|
||||
CONTROL "Don't clamp plane points",IDC_CHECK_NOCLAMP,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,246,93,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,260,93,10
|
||||
CONTROL "Snapshots",IDC_CHECK_SNAPSHOTS,"Button",BS_AUTOCHECKBOX |
|
||||
- WS_TABSTOP,13,258,49,10
|
||||
+ WS_TABSTOP,13,271,49,10
|
||||
CONTROL "Use +setgame for run",IDC_CHECK_SETGAME,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,270,83,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,284,83,10
|
||||
CONTROL "Run game after QBSP3...",IDC_CHECK_RUNQUAKE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,234,96,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,247,96,10
|
||||
CONTROL "Load last project on open",IDC_CHECK_LOADLAST,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,246,96,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,260,96,10
|
||||
CONTROL "Load last map on open",IDC_CHECK_LOADLASTMAP,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,258,88,10
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,271,88,10
|
||||
CONTROL "Auto save every ",IDC_CHECK_AUTOSAVE,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,121,270,66,10
|
||||
- EDITTEXT IDC_EDIT_AUTOSAVE,188,270,27,12,ES_AUTOHSCROLL |
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,121,284,66,10
|
||||
+ EDITTEXT IDC_EDIT_AUTOSAVE,188,284,27,12,ES_AUTOHSCROLL |
|
||||
ES_NUMBER
|
||||
CONTROL "Spin1",IDC_SPIN_AUTOSAVE,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,212,268,11,14
|
||||
- LTEXT "Status point size:",IDC_STATIC,258,235,54,8
|
||||
- EDITTEXT IDC_EDIT_STATUSPOINTSIZE,315,233,29,12,ES_AUTOHSCROLL
|
||||
+ UDS_ARROWKEYS,212,282,11,14
|
||||
+ LTEXT "Status point size:",IDC_STATIC,258,249,54,8
|
||||
+ EDITTEXT IDC_EDIT_STATUSPOINTSIZE,315,247,29,12,ES_AUTOHSCROLL
|
||||
CONTROL "Spin1",IDC_SPIN_POINTSIZE,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,344,232,11,14
|
||||
- LTEXT "Undo Levels:",IDC_STATIC,258,248,43,8
|
||||
- EDITTEXT IDC_EDIT_UNDOLEVELS,315,246,29,12,ES_AUTOHSCROLL
|
||||
+ UDS_ARROWKEYS,344,246,11,14
|
||||
+ LTEXT "Undo Levels:",IDC_STATIC,258,262,43,8
|
||||
+ EDITTEXT IDC_EDIT_UNDOLEVELS,315,260,29,12,ES_AUTOHSCROLL
|
||||
CONTROL "Spin1",IDC_SPIN_UNDO,"msctls_updown32",UDS_WRAP |
|
||||
UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY |
|
||||
- UDS_ARROWKEYS,344,246,11,14
|
||||
+ UDS_ARROWKEYS,344,260,11,14
|
||||
CONTROL "Use PAK/PK3 file(s):",IDC_CHECK_PAK,"Button",
|
||||
- BS_AUTOCHECKBOX | WS_TABSTOP,13,289,81,10
|
||||
- EDITTEXT IDC_EDIT_PAKFILE,95,288,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEPAK,328,289,16,11
|
||||
- EDITTEXT IDC_EDIT_PREFABPATH,95,305,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEPREFAB,328,306,16,11
|
||||
- EDITTEXT IDC_EDIT_USERPATH,95,322,227,12,ES_AUTOHSCROLL
|
||||
- PUSHBUTTON "...",IDC_BTN_BROWSEUSERINI,328,323,16,11
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,303,81,10
|
||||
+ EDITTEXT IDC_EDIT_PAKFILE,95,302,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEPAK,328,303,16,11
|
||||
+ EDITTEXT IDC_EDIT_PREFABPATH,95,319,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEPREFAB,328,319,16,11
|
||||
+ EDITTEXT IDC_EDIT_USERPATH,95,335,227,12,ES_AUTOHSCROLL
|
||||
+ PUSHBUTTON "...",IDC_BTN_BROWSEUSERINI,328,337,16,11
|
||||
DEFPUSHBUTTON "OK",IDOK,341,7,38,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,341,24,38,14
|
||||
CONTROL "Entities are DLL based",IDC_CHECK_DLLENTITIES,"Button",
|
||||
BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | NOT WS_VISIBLE |
|
||||
- WS_DISABLED | WS_TABSTOP,273,178,88,12
|
||||
+ WS_DISABLED | WS_TABSTOP,273,191,88,12
|
||||
CONTROL "Write face color info",IDC_CHECK_FACECOLOR,"Button",
|
||||
BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
- WS_TABSTOP,189,178,79,10
|
||||
- LTEXT "minutes",IDC_STATIC,216,271,25,8
|
||||
+ WS_TABSTOP,189,191,79,10
|
||||
+ LTEXT "minutes",IDC_STATIC,216,284,25,8
|
||||
GROUPBOX "Mouse",IDC_STATIC,179,7,103,28
|
||||
- GROUPBOX "Views / Rendering",IDC_STATIC,7,38,372,86
|
||||
+ GROUPBOX "Views / Rendering",IDC_STATIC,7,38,372,98
|
||||
GROUPBOX "Game path / Tool settings / Stuff that wouldn't fit anywhere else",
|
||||
- IDC_STATIC,7,205,372,139
|
||||
+ IDC_STATIC,7,216,372,157
|
||||
CONTROL 147,IDB_VIEWDEFAULT,"Static",SS_BITMAP,13,48,21,19
|
||||
CONTROL 148,IDB_VIEWDEFAULT2,"Static",SS_BITMAP,40,48,21,19
|
||||
CONTROL 149,IDB_VIEWDEFAULT3,"Static",SS_BITMAP,67,48,21,19
|
||||
- GROUPBOX "New functionality:",IDC_STATIC,7,126,372,74
|
||||
+ GROUPBOX "New functionality:",IDC_STATIC,7,139,372,74
|
||||
CONTROL 150,IDB_VIEWDEFAULT_Z,"Static",SS_BITMAP,93,48,21,19
|
||||
LTEXT "slow",IDC_STATIC,131,69,15,8
|
||||
LTEXT "fast",IDC_STATIC,204,69,12,8
|
||||
- GROUPBOX "Camera ",IDC_STATIC,126,47,100,72
|
||||
- LTEXT "Prefab path:",IDC_STATIC,54,306,40,8
|
||||
+ GROUPBOX "Camera ",IDC_STATIC,126,47,100,84
|
||||
+ LTEXT "Prefab path:",IDC_STATIC,54,319,40,8
|
||||
GROUPBOX "Optimize interface for",IDC_STATIC,7,7,170,28
|
||||
- LTEXT "User INI path:",IDC_STATIC,49,324,45,8
|
||||
- LTEXT "Rotation inc:",IDC_STATIC,15,163,41,8
|
||||
+ LTEXT "User INI path:",IDC_STATIC,49,338,45,8
|
||||
+ LTEXT "Rotation inc:",IDC_STATIC,15,176,41,8
|
||||
CONTROL "Use Shaders",IDC_CHECK_USESHADERS,"Button",
|
||||
BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_DISABLED |
|
||||
- WS_TABSTOP,129,178,57,10
|
||||
- GROUPBOX "Texturing",IDC_STATIC,231,47,141,72
|
||||
+ WS_TABSTOP,129,191,57,10
|
||||
+ GROUPBOX "Texturing",IDC_STATIC,231,47,141,84
|
||||
LTEXT "Quality",IDC_STATIC,237,57,22,8
|
||||
LTEXT "Low",IDC_STATIC,239,81,14,8
|
||||
LTEXT "High",IDC_STATIC,347,82,16,8
|
||||
CONTROL "Vertex editing splits faces",IDC_CHECK_VERTEXMODE,
|
||||
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,179,94,10
|
||||
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,192,94,10
|
||||
PUSHBUTTON "Reset Registry",IDC_BUTTON_CLEAN,287,24,50,14
|
||||
+ CONTROL "Log console to Radiant.log",IDC_CHECK_LOG,"Button",
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,13,356,97,11
|
||||
+ CONTROL "Ignore alpha channel",IDC_NOALPHA,"Button",
|
||||
+ BS_AUTOCHECKBOX | WS_TABSTOP,236,117,127,10
|
||||
END
|
||||
|
||||
IDD_DLG_MAPINFO DIALOG DISCARDABLE 0, 0, 181, 183
|
||||
diff -rup ../Q3Radiant201/TexWnd.cpp Q3Radiant/TexWnd.cpp
|
||||
--- ../Q3Radiant201/TexWnd.cpp Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/TexWnd.cpp Thu Aug 3 17:19:23 2000
|
||||
@@ -1439,31 +1550,46 @@ void Delay(float fSeconds)
|
||||
void ViewShader(const char *pFile, const char *pName)
|
||||
{
|
||||
// we load the .shader file to find where it actually is
|
||||
- CString str;
|
||||
+ CString fullName = ValueForKey( g_qeglobals.d_project_entity, "basepath" );
|
||||
+ fullName += '/';
|
||||
+ fullName += pFile;
|
||||
char* pBuff = NULL;
|
||||
- int nSize = LoadFile(pFile, reinterpret_cast<void**>(&pBuff));
|
||||
+ int nSize = LoadFile(fullName.GetBuffer(0), reinterpret_cast<void**>(&pBuff));
|
||||
if (nSize == -1)
|
||||
{
|
||||
- nSize = PakLoadAnyFile(pFile, reinterpret_cast<void**>(&pBuff));
|
||||
- }
|
||||
-
|
||||
- if (nSize > 0)
|
||||
- {
|
||||
- str = pBuff;
|
||||
+ Sys_Printf("Failed to load shader file %s ... check your project settings!\n", pFile );
|
||||
+ return;
|
||||
}
|
||||
- int nStart = 0;
|
||||
- if (str.GetLength() > 0)
|
||||
+ // look for the shader declaration
|
||||
+ int nStart;
|
||||
+ CString strFind = pName;
|
||||
+ CString strLook = pBuff;
|
||||
+ strLook.MakeLower();
|
||||
+ strFind.MakeLower();
|
||||
+ // offset used when jumping over commented out definitions
|
||||
+ int nOffset = 0;
|
||||
+ while (true)
|
||||
{
|
||||
- CString strFind = pName;
|
||||
- CString strLook = str;
|
||||
- strLook.MakeLower();
|
||||
- strFind.MakeLower();
|
||||
- int n = strLook.Find(strFind);
|
||||
- if (n >= 0)
|
||||
- {
|
||||
- nStart = n;
|
||||
+ nStart = strLook.Find(strFind, nOffset);
|
||||
+ if (nStart == -1)
|
||||
+ break;
|
||||
+ // we have found something, maybe it's a commented out shader name?
|
||||
+ char *strCheck = new char[strLook.GetLength()+1];
|
||||
+ strcpy( strCheck, strLook.GetBuffer(0) );
|
||||
+ strCheck[nStart] = 0;
|
||||
+ char *pCheck = strrchr( strCheck, '\n' );
|
||||
+ // if there's a commentary sign in-between we'll continue
|
||||
+ if (pCheck && strstr( pCheck, "//" ))
|
||||
+ {
|
||||
+ delete[] strCheck;
|
||||
+ nOffset = nStart + 1;
|
||||
+ continue;
|
||||
}
|
||||
+ delete[] strCheck;
|
||||
+ break;
|
||||
}
|
||||
+ // now close the file
|
||||
+ free(pBuff);
|
||||
|
||||
CString s= "editpad ";
|
||||
// build the full shader name
|
||||
@@ -1472,7 +1598,9 @@ void ViewShader(const char *pFile, const
|
||||
s += pFile;
|
||||
WinExec(s, SW_SHOWNORMAL);
|
||||
|
||||
- Delay(1.5);
|
||||
+ // TTimo: we used to call Delay here, to continue processing messages. But it seems to induce a lot of instabilities.
|
||||
+ // so now the user will simply have to wait.
|
||||
+ Sleep( 1500 );
|
||||
|
||||
// now grab the edit window and scroll to the shader we want to edit
|
||||
HWND hwndEdit = FindEditWindow();
|
||||
@@ -1485,8 +1613,6 @@ void ViewShader(const char *pFile, const
|
||||
{
|
||||
Sys_Printf("Unable to load shader editor.\n");
|
||||
}
|
||||
-
|
||||
-
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -2319,10 +2459,21 @@ void CTexWnd::OnVScroll(UINT nSBCode, UI
|
||||
|
||||
void LoadShaders()
|
||||
{
|
||||
+ CStringList lst;
|
||||
+ BuildShaderList( lst );
|
||||
+ if (lst.GetCount() == 0)
|
||||
+ return;
|
||||
+ POSITION pos = lst.GetHeadPosition();
|
||||
+ while (pos != NULL)
|
||||
+ {
|
||||
+ QERApp_LoadShaderFile( lst.GetAt(pos).GetBuffer(0) );
|
||||
+ lst.GetNext(pos);
|
||||
+ }
|
||||
+
|
||||
+ //++timo clean
|
||||
+#if 0
|
||||
char dirstring[1024];
|
||||
char *path;
|
||||
- //struct _finddata_t fileinfo;
|
||||
- //int handle;
|
||||
path = ValueForKey (g_qeglobals.d_project_entity, "basepath");
|
||||
sprintf (dirstring, "%s/scripts/shaderlist.txt", path);
|
||||
char *pBuff = NULL;
|
||||
@@ -2354,9 +2505,9 @@ void LoadShaders()
|
||||
}
|
||||
else
|
||||
{
|
||||
- Sys_Printf("Unable to load shaderlist.txt, shaders not loaded!");
|
||||
+ Sys_Printf("Unable to load %s, shaders not loaded!\n", dirstring);
|
||||
}
|
||||
-
|
||||
+#endif
|
||||
}
|
||||
|
||||
// TTimo: modified to expect the reletive path to the skin as input
|
||||
diff -rup ../Q3Radiant201/WIN_QE3.CPP Q3Radiant/WIN_QE3.CPP
|
||||
--- ../Q3Radiant201/WIN_QE3.CPP Mon Jun 26 12:31:00 2000
|
||||
+++ Q3Radiant/WIN_QE3.CPP Thu Aug 3 17:19:24 2000
|
||||
@@ -3,6 +3,11 @@
|
||||
#include "mru.h"
|
||||
#include "PrefsDlg.h"
|
||||
|
||||
+// for the logging part
|
||||
+#include <io.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <sys/stat.h>
|
||||
+
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// BSP frontend plugin
|
||||
// global flag for BSP frontend plugin is g_qeglobals.bBSPFrontendPlugin
|
||||
@@ -42,10 +47,18 @@ void Sys_SetTitle (char *text)
|
||||
}
|
||||
|
||||
HCURSOR waitcursor;
|
||||
+#define TIMING_STATS
|
||||
+#ifdef TIMING_STATS
|
||||
+double start,end;
|
||||
+#endif
|
||||
|
||||
void Sys_BeginWait (void)
|
||||
{
|
||||
waitcursor = SetCursor (LoadCursor (NULL, IDC_WAIT));
|
||||
+#ifdef TIMING_STATS
|
||||
+ Sys_Printf("Sys_BeginWait\n");
|
||||
+ start = Sys_DoubleTime();
|
||||
+#endif
|
||||
}
|
||||
|
||||
void Sys_EndWait (void)
|
||||
@@ -55,9 +68,12 @@ void Sys_EndWait (void)
|
||||
SetCursor (waitcursor);
|
||||
waitcursor = NULL;
|
||||
}
|
||||
+#ifdef TIMING_STATS
|
||||
+ end = Sys_DoubleTime();
|
||||
+ Sys_Printf ("Sys_EndWait: %i ms\n", (int)(1000*(end-start)));
|
||||
+#endif
|
||||
}
|
||||
|
||||
-
|
||||
void Sys_GetCursorPos (int *x, int *y)
|
||||
{
|
||||
POINT lpPoint;
|
||||
diff -rup ../Q3Radiant201/Win_main.cpp Q3Radiant/Win_main.cpp
|
||||
--- ../Q3Radiant201/Win_main.cpp Mon Jun 26 12:31:01 2000
|
||||
+++ Q3Radiant/Win_main.cpp Thu Aug 3 17:19:24 2000
|
||||
@@ -341,54 +341,6 @@ void RunBsp (char *command)
|
||||
Sleep (100); // give the new process a chance to open it's window
|
||||
|
||||
BringWindowToTop( g_qeglobals.d_hwndMain ); // pop us back on top
|
||||
-#if 0
|
||||
- //
|
||||
- // write qe3bsp.bat
|
||||
- //
|
||||
- sprintf (batpath, "%sqe3bsp.bat", temppath);
|
||||
- hFile = fopen(batpath, "w");
|
||||
- if (!hFile)
|
||||
- Error ("Can't write to %s", batpath);
|
||||
- fprintf (hFile, sys);
|
||||
- fclose (hFile);
|
||||
-
|
||||
- //
|
||||
- // write qe3bsp2.bat
|
||||
- //
|
||||
- sprintf (batpath, "%sqe3bsp2.bat", temppath);
|
||||
- hFile = fopen(batpath, "w");
|
||||
- if (!hFile)
|
||||
- Error ("Can't write to %s", batpath);
|
||||
- fprintf (hFile, "%sqe3bsp.bat > %s", temppath, outputpath);
|
||||
- fclose (hFile);
|
||||
-
|
||||
- Pointfile_Delete ();
|
||||
-
|
||||
- GetStartupInfo (&startupinfo);
|
||||
-
|
||||
- ret = CreateProcess(
|
||||
- batpath, // pointer to name of executable module
|
||||
- NULL, // pointer to command line string
|
||||
- NULL, // pointer to process security attributes
|
||||
- NULL, // pointer to thread security attributes
|
||||
- FALSE, // handle inheritance flag
|
||||
- 0 /*DETACHED_PROCESS*/, // creation flags
|
||||
- NULL, // pointer to new environment block
|
||||
- NULL, // pointer to current directory name
|
||||
- &startupinfo, // pointer to STARTUPINFO
|
||||
- &ProcessInformation // pointer to PROCESS_INFORMATION
|
||||
- );
|
||||
-
|
||||
- if (!ret)
|
||||
- Error ("CreateProcess failed");
|
||||
-
|
||||
- bsp_process = ProcessInformation.hProcess;
|
||||
-
|
||||
- Sleep (100); // give the new process a chance to open it's window
|
||||
-
|
||||
- //BringWindowToTop( g_qeglobals.d_hwndMain ); // pop us back on top
|
||||
- //SetFocus (g_qeglobals.d_hwndCamera);
|
||||
-#endif
|
||||
}
|
||||
}
|
||||
|
||||
17
docs/developer/d2u
Normal file
17
docs/developer/d2u
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
|
||||
for filename in $*; do
|
||||
if [ -f $filename ]; then
|
||||
echo -n $filename
|
||||
tr -d '\r' < $filename > ___$filename_d2u___
|
||||
mv ___$filename_d2u___ $filename
|
||||
echo " converted."
|
||||
else
|
||||
echo "$filename is not a file."
|
||||
fi
|
||||
done
|
||||
|
||||
echo
|
||||
echo done.
|
||||
|
||||
# end of d2u ...
|
||||
76
docs/developer/data-driven-design.txt
Normal file
76
docs/developer/data-driven-design.txt
Normal file
@@ -0,0 +1,76 @@
|
||||
Listing of required modules and interfaces as an XML file
|
||||
=========================================================
|
||||
|
||||
Purpose:
|
||||
--------
|
||||
|
||||
Make the editor more data driven. Be able to specify during
|
||||
startup the full running configuration of the editor:
|
||||
- what modules to load
|
||||
- general execution paths (i.e. what's in the project settings)
|
||||
- configuration for the loaded modules
|
||||
- user preferences
|
||||
|
||||
Feature Requirements:
|
||||
---------------------
|
||||
|
||||
This is primarily intended for multiple games support. A restart
|
||||
of the editor may be required when going from one game to the
|
||||
other, but otherwise it should read the XML file and initialize
|
||||
the right modules and APIs from there.
|
||||
|
||||
Don't have a clear view of what multiple games support is gonna
|
||||
be like. Can list a few things:
|
||||
|
||||
- some interfaces are required for startup in a given game mode.
|
||||
That's primarily what the XML config file is there for.
|
||||
For instance in Q3 you will require Q3 map format module
|
||||
and Q1 will require Q1 map format module
|
||||
|
||||
- some modules are to be ignored? that's primary intended to
|
||||
avoid loading unneeded modules.
|
||||
|
||||
- some plugins are loaded for all games?
|
||||
- some plugins are only relevant for some games?
|
||||
(those two suggest various installation paths for modules
|
||||
and directory-based scan?)
|
||||
|
||||
- a plugin might require some other APIs to complete it's loading
|
||||
process (i.e. sending it's own XML description of required
|
||||
interfaces).
|
||||
|
||||
Constaints:
|
||||
-----------
|
||||
|
||||
We have a nasty collision between preferences / project settings
|
||||
and XML requirements. All three things need to be unified in some way.
|
||||
The long term target being to have a central installation location
|
||||
for the editor, and independant packages for each game.
|
||||
|
||||
What kind of difference is there between project settings and prefs?
|
||||
Prefs would be user settings that survive throughout all games,
|
||||
whereas project settings are per-game / per-mod configuration. Turns
|
||||
out it's all a matter of loading the right configuration chunks at the
|
||||
right time.
|
||||
|
||||
Proposed implementation:
|
||||
------------------------
|
||||
|
||||
Use key/values (== property bags) based on XML format for everything.
|
||||
Use them on project settings, and user prefs. The only difference
|
||||
between what would be project settings and what would be user pref
|
||||
is in which game configuration they are loaded, and how they are used.
|
||||
|
||||
Project templates: We have a particular syntax to build settings from
|
||||
a 'template' version. Instead of loading a project template, we should
|
||||
be selecting a template from a list.
|
||||
|
||||
Default startup: If we are configured to load last project on startup,
|
||||
load it .. otherwise display a list of games and templates?
|
||||
|
||||
Module library:
|
||||
---------------
|
||||
|
||||
The dynamic loading / interfaces sharing / pure virtual classes needs
|
||||
to be implemented in a generic module. It should be the basis of the
|
||||
editor startup process.
|
||||
6
docs/developer/frp
Normal file
6
docs/developer/frp
Normal file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh
|
||||
for i in *.h; do
|
||||
sed -e "s/BasePath/EnginePath/" $i > $i.tmp
|
||||
mv -f $i.tmp $i
|
||||
done
|
||||
|
||||
33
docs/developer/q3mapfeedback.txt
Normal file
33
docs/developer/q3mapfeedback.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
** currently supported debug messages:
|
||||
|
||||
* map leaked / pointfile information
|
||||
+ tested
|
||||
|
||||
* duplicate plane
|
||||
+ tested
|
||||
|
||||
* degenerate plane, mirrored plane
|
||||
+ testing may not be necessary, exact same code as duplicate plane
|
||||
|
||||
* mixed CONTENTS_DETAIL and CONTENTS_STRUCTURAL
|
||||
- not tested!
|
||||
|
||||
* fog brush has multiple visible sides
|
||||
+ tested
|
||||
|
||||
* WindingFromDrawSurf failed: MAX_POINTS_ON_WINDING exceeded
|
||||
+ tested, only outputs a single point, would need much improvement
|
||||
(TstMaps/western.map)
|
||||
|
||||
* MAX_BUILD_SIDES
|
||||
uses xml_Select as other warnings, switched xml_Select to error or warn
|
||||
+ tested
|
||||
|
||||
** to-be-added list (and associated test map file if any)
|
||||
|
||||
* Node without a volume
|
||||
* leaf with too many portals
|
||||
-> both in Desktop_p_leaf.map, contributed by y_lavanant@vistech.ie
|
||||
|
||||
Mesh lightmap miscount
|
||||
(no test map)
|
||||
Reference in New Issue
Block a user