Git Product home page Git Product logo

trenchbroom's Introduction

TrenchBroom

TrenchBroom Icon

TrenchBroom is a modern cross-platform level editor for Quake-engine based games.

Features

  • General
    • Full support for editing in 3D and in up to three 2D views
    • High performance renderer with support for huge maps
    • Unlimited Undo and Redo
    • Macro-like command repetition
    • Issue browser with automatic quick fixes
    • Point file support
    • Automatic backups
    • .obj file export
    • Free and cross platform
  • Brush Editing
    • Robust vertex editing with edge and face splitting and manipulating multiple vertices together
    • Clipping tool with two and three points
    • Scaling and shearing tools
    • CSG operations: merge, subtract, intersect
    • UV view for easy texture manipulations
    • Precise texture lock for all brush editing operations
    • Multiple texture collections
  • Entity Editing
    • Entity browser with drag and drop support
    • Support for FGD and DEF files for entity definitions
    • Mod support
    • Entity link visualization
    • Displays 3D models in the editor
    • Smart entity property editors
  • Supported Games
    • Quake (Standard and Valve 220 file formats)
    • Quake 2
    • Quake 3 (partial, no patches or brush primitives yet)
    • Hexen 2
    • Daikatana
    • Generic (for custom engines)
    • More games can be supported with custom game configurations

Releases

  • Binary builds are available from releases.

Compiling

Contributing

Credits

Changes

See releases for latest changes.

trenchbroom's People

Contributors

20kdc avatar alexkiri avatar bazhenovc avatar calinou avatar chow-land avatar dinock avatar egax avatar ericwa avatar goalitium avatar jdolan avatar jitspoe avatar jjelliott avatar jonathanlinat avatar kduske avatar kduske-n4 avatar l-p avatar logicandtrick avatar m-x-d avatar mankeli avatar mattbork avatar mittorn avatar necros0 avatar negke avatar neogeographica avatar pnahratow avatar rohit-n avatar rweichler avatar scampie avatar shfty avatar tanukibouwer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trenchbroom's Issues

Memory leaks

Might be false alarms due to the local statics in the singletons!

How to detect them:

http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx

These techniques work for memory allocated using the standard CRT malloc function. If your program allocates memory using the C++ new operator, however, you need to redefine new if you want to see the file and line numbers in the memory-leak report. You can do that with a block of code that looks like this:

ifdef _DEBUG

#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , FILE , LINE )
#define new DBG_NEW
#endif

endif // _DEBUG

Opening Hammer map file crashes the editor

Trying to load a 220 format .map crashes TrenchBroom. There's a warning message
that textures might be misaligned, but shortly after that the editor crashes.
The .map file included rubytron_cardo.map. Rubicon 2 map.

I suppose that the problem is that it contains floats in scientific notation.

Allow texture application by drag and drop

Drag a texture on a face applies the texture to that face.
Drag a texture on a brush while holding ALT applies the texture to that brush.
Selection is unimportant because clicking on a texture applies the texture to all selected faces / brushes anyway.

Implement font vectorizing

Add newly created brushes to the currently selected brush group

Newly created brushes are added to the selected brush group if any of them is
activated. If no brush group is activated, newly created brushes are not added
to any group. If no brush group is selected, but at least one is activated, the
newly created brushes are added to the activated brush group which was created
last.

Objects jump when moved

Example: Take a brush with a bounding box of size x = 48, y = 48, z = 32 and set the grid to 32. Move the brush on the X/Y plane and it will start jumping by 16 back and forth along the X and Y axes.

Fix autosave on OS X 10.7

Autosave is currently disabled because the autosave feature of Mac OS 10.7 gives an error when autosaving. Maybe it should remain disabled because TB has its own autosave feature?

Crash during vertex editing

while dragging a vertex (that has previously been clipped). I was dragging it
such that multiple surfaces would become coplanar.

Wouter

Assertion failed: (edge->startVertex != candidate->endVertex), function
mergeEdges, file /Users/kristian/Documents/Code/XCode/TrenchBroom/VertexData.m,
line 1731.

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8ee2fce2 __pthread_kill + 10
1 libsystem_c.dylib 0x00007fff8e8437d2 pthread_kill + 95
2 libsystem_c.dylib 0x00007fff8e834a7a abort + 143
3 libsystem_c.dylib 0x00007fff8e8675de __assert_rtn + 146
4 com.kristianduske.TrenchBroom 0x00000001000be9a7 mergeEdges + 327
5 com.kristianduske.TrenchBroom 0x00000001000bf61a performVertexDrag +
1690
6 com.kristianduske.TrenchBroom 0x00000001000c0a34 dragVertex + 388
7 com.kristianduske.TrenchBroom 0x0000000100009a21 -[MutableBrush
dragVertex:by:] + 273
8 com.kristianduske.TrenchBroom 0x000000010002b8eb -[MapDocument
dragVertex:brush:delta:] + 379
9 com.kristianduske.TrenchBroom 0x00000001000c810b -[DragVertexTool
doLeftDrag:ray:delta:hits:lastPoint:] + 315
10 com.kristianduske.TrenchBroom 0x00000001000c9aad -[DragTool
leftDrag:ray:hits:] + 429
11 com.kristianduske.TrenchBroom 0x000000010004974e -[InputController
leftMouseDragged:sender:] + 814
12 com.kristianduske.TrenchBroom 0x0000000100018e97 -[MapView3D
mouseDragged:] + 119
13 com.apple.AppKit 0x00007fff964b4b44 -[NSWindow sendEvent:]

  • 7430
    14 com.apple.AppKit 0x00007fff9644d16d -[NSApplication
    sendEvent:] + 5593
    15 com.apple.AppKit 0x00007fff963e31f2 -[NSApplication run] +
    555
    16 com.apple.AppKit 0x00007fff96661b88 NSApplicationMain +
    867
    17 com.kristianduske.TrenchBroom 0x0000000100002792 main + 34
    18 com.kristianduske.TrenchBroom 0x0000000100001d34 start + 52

Fix classname filtering

Class names rendering currently does not respect the filter. Need a way to allow the TextRenderer to access the filter, possibly through an adapter.

Make MapRenderer stateless

Currently, MapRenderer manages a lot of state to keep the changes to VBO data to a minimum. This creates a lot of problems and does not really help with performance enough to warrant all the complications. It is very likely not much slower, but much simpler to just recreate all world geometry VBOs whenever anything in the map changes.

Undo

Undo can be implemented like so:

Abstract Class UndoItem with undo() method, which returns the redo item. Also has a name.

Concrete class UndoGroup that contains other UndoItems

Concrete template class UndoSnapshot that contains pairs of an object, e.g. face and its snapshot, which is a copy of the object before it was modified. The copy is created using the copy constructor. The undo() method assigns the copy to the original using the assignment operator.

Vertical object movement non-functional in windows ver

Not working on the windows version?
http://kristianduske.com/trenchbroom/docs/English.lproj/pgs/editing_objects.html#moving_objects
Documentation says to use the option key, which I believe maps to the Alt key on windows, yet Alt + Left click and drag doesn't do anything (still moves in x/y plane)

Would it be possible to consider using a gizmo similar to 3ds max? ( http://www.t3df.com/discovery/NotesImages/Topic74NotesImage1.jpg )
Essentially a constant sized object that appears at the center of the selection. Clicking and dragging on the axes will move in only that direction, and clicking on the square linking two axes together will constrain movement to that plane.

Add view / picking filters

for clip brushes, triggers, lights, paths. Also add a search box that allows to filter objects by substring.

Implement preference storage

Prefs should be stored according to the platform's best practices (prefs file on os x, registry on windows...).

Positioning guides

By drawing the bounding box edges of current selection on into infinity. See Sauer editor for examples.

Use adaptive sorting to sort faces in map renderer

Pre-sort the list of faces initially using quicksort or some such algorithm, then cache the results. Upon changes to the data, either resort using an adaptive sort algorithm or remove and insert the data. Note that in case of many changes to the data structures (such as moving the entire map), this may result in worse behavior, but this can be avoided be simply resorting everything if the number of changes breaks some threshold.

Add scripting and console

TrenchBroom would be much more flexible and extensible if it had a scripting engine and a console.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.