[TOOL] DAEnerys - DAE Ship Editor

So this happened after the first compile with normal mapping:

It kinda works, but only in orthographic mode? I only see some edges at the screen in perspective, and the model gets kinda black when I rotate the camera.
So I broke the shader, but atleast it’s something. :smiley:


Nice work.
Get well soon! Have chicken soup!


I cannot wait to get back into modding and reviving my Monkey Madness mod!

For those who dont know what the Monkey madness mod was, It Twas my first ever mod and people loved it

Floating monkey heads of doom

Also love this program :smiley:

1 Like

BRING SAJUUK TO * monkey screech *


Little preview of the next version:

Obviously the specular mapping works, it was just a multiplication though.

No normal mapping for the next one, I put that into another branch to work on it later.
The problem seems to be the lighting calculations in tangent space (needed for proper normal mapping).

I am working on navlights now, I suppose their parameters are:

  • NAVL - Name - String
    Used to distinguish between navlights.
  • Type - Type - String
    Type of the light defined in some game files. (What is the type when the navlight has no type parameter?)
  • Sz - Size - Float
    Radius of the point light?
  • Ph - Phase - Float
    How many seconds the light phase (animation) is shifted? (offset)
  • Fr - Frequency - Float
    How many times the navlight blinks per second.
  • Col - Color - Vector3 (three floats)
    Color of the light. (normalized)
  • Dist - Distance - Float
    No idea?
  • Flags
    Sprite, HighEnd, …?

This is where I absolutely have no idea. I never touched navlights.
So please help me on this one. :blush:
I need to exactly know how the navlights behave in-game, for a WYSIWYG feature.


This should shed some light on the topic. For this nav light…


…we were given this explanation:

1 Like

@Dom2 Thanks, that makes things clearer.
Now the only thing I need is all the available flags.

There’s data inside the nav_bays type tag (it refers to an external file) that is also handy, such as whether or not that light is cast on to the ship itself or only ships nearby (often for bays, the inside is already glowing, why waste a light to brighten what is drawn glowing?), flicker/pulse behavior, etc.

1 Like

I believe the options for “Type” are:


You can also have a _Flags[Sprite], but I’m not sure what it does…

1 Like

I looked at these files, maybe parse them too and fill a combo box with all types it found?

I rather have to handle the type as a string or using a combo box explained above, since you can add custom styles.

like the Vaygr bridges that lits up the hull?

1 Like

Okay, so I got the data path stuff finished, the idea is to select the keeper.txt in order for the editor to be able to load the stuff it needs.


Now about the navlight styles, I already eat all the information from them, now I have to use them correctly.
Please help me complete this.

climbTime = 0.00, How long the light needs to get to full brightness. (in seconds)
topWaitTime = 0.1, How long the light stays at full brightness. (in seconds)
decayTime = 0.15, How long the light needs to get to zero brightness. (in seconds)
bottomWaitTime= 0.75, How long the light stays at zero brightness. (in seconds)
illumSawHz = 15731.93,
illumSawMin = 0.9,
illumSawMax = 1.1,
illumSawOfs = 0.95,
illumSinHz = 0.125,
illumSinMin = 0.95,
illumSinMax = 1.05,
illumSinOfs = 0.5,
noSelfLight=1, If the navlight is not casting on the host ship.
linkThrust=1, If the navlight brightness is controlled by the thruster strength

And the navlight sprite data/effect/textures/navlight.tga is the only one that you can use? Not too important for the preview in the editor though.

EDIT: I still need the flags that you can assign in the DAE.
EDIT 2: I just discovered that the color values in the DAE can be above 1, this increases the brightness I suppose?

Puh, finally done with these damn navlights.
This update brings some new core functionalities, these will help implementing more features in the future.

Here is the download: HomeworldDAEEditor_b2221.zip

Added features

  • The editor needs some of your homeworld data now. You can add as many paths as you like and they will overwrite each other according to their position in the list. (Like Homeworld does)
  • Billboarding is now fully functional, this is used to display the navlight sprites and soon the editor icons I was talking about.
  • Navlights now get parsed and loaded from the DAE, this introduces another “save-you-from-crashing” functionality.
    It will search all navlight styles in your Homeworld and mod data, navlights using a not existent style get skipped, you get a warning popup. (Problems tab incoming)
  • Realtime preview of navlights.
  • Wireframe rendering.
  • And specular mapping!


  • Nothing, as far as I can tell.


The editor will load all data from the specified directories each time you start it. It will also check if the keeper.txt is still there, and notify you if something is not right.
Another thing to note is that the Saw and Sin values from the navlight styles are not used yet, if someone knows how they alter the look of the light, please post here.

Navlights with a style where the noSelfLight value is set to 1 will not illuminate the ship.
This can be combined with the dockpath preview I have in mind.
You can watch their behaviour using the Draw illumination radius option.

Navlights with a style where the linkThrust value is set to 1 are modified by the thruster strength.
The slider can be found in the Materials tab.

This was much work, both on rendering and “simple” file stuff side. So please let me know if something acts weird. :slight_smile:
Have fun.


Here’s the code that uses the illum values to generate high-frequency ‘flicker’ for some lights. We found that using this looked much nicer than just static lights… the extra motion adds a lot of character. This is raw code… placed here WITHOUT warranty of any sort.

real32 range = 1.0f;

if (pStatus->illumSawHz != 0.0f)
    double rawd = (m_localTime*(double)pStatus->illumSawHz)+(double)pStatus->illumSawOfs;
    rawd -= floor(rawd);    // aka fract()
    float raw = fabsf(1.0f-(float)(rawd*2.0));    // Ping pong 1->0->1
    range *= pStatus->illumSawMin+((pStatus->illumSawMax-pStatus->illumSawMin)*raw);

if (pStatus->illumSinHz != 0.0f)
    double rawd = (m_localTime*(double)pStatus->illumSinHz)+(double)pStatus->illumSinOfs;
    float raw = (((float)sin(rawd))+1.0f)*0.5f;
    range *= pStatus->illumSinMin+((pStatus->illumSinMax-pStatus->illumSinMin)*raw);

return range;

The conversions to double are important because large time values (m_localTime is time in seconds as a float/real32) - paired with very large Hz values lead to overflow quite fast.


I wish you’d adopt a (tortoise) SVN, so we just press a button to update … Thanks for the update anyway.

1 Like

any chance we can connect DAE file to editor’s exe, so we just have to double-click the DAE file to open it? In my end here is “splashing” me - "failed to load texture ‘resources/missing.tga’ "

1 Like

Thanks. I’ll try to implement that in my logic.

Nice thought, I added auto-updating to my list.

I have not thought about that, I will definitely work on that.

It probably looks for it’s files in the DAE directory for some reason.


YES! Great news!
I finally killed that memory leak!
The performance raised by about 800%.

Release is coming tomorrow.

I also added another 4 bytes to the VBO data, so it’s 12 floats in total for each vertex now.
This makes sure that the data is aligned to 4 bytes. 12/4 = integer.
This puts ~200% on top. :slight_smile:


Sorry for the triple post. :sweat_smile:

I did not have much time to bring this forward lately, but I think it’s worth a new release.
Download: HomeworldDAEEditor_b2424.zip

Added features

  • The editor can now be launched directly from the file browser. (By linking DAEs to it or using “Open with…”)
  • NavLights are now represented by a little lightbulb icon. (You can control their size in the settings)
  • Engine Glows now get parsed and have their tab. They mimic the in-game behaviour using the thruster strength slider.
  • FPS counter in top right corner.
  • Checkbox for enabling VSync added.
  • Removed Goblins parsing and their tab. (You get a warning that Homeworld 2.0 does not like them, if your DAE has one.)
  • Optimized vertex data for faster rendering.


  • Textures with [ or ] in their name don’t crash the editor anymore.
  • Fixed memory leak in render method. (MUCH better performance)
  • Some other things I came across.

If you find any bugs or know things that can be improved, take a look at the Issues page on Bitbucket. You can post without any registration.


Hey, thanks for the doubleclick thingy.

It’s about time to give a name to your editor, what about Guide Stone? rsrsrsrsrsrs