Homeworld Resource
There is no possibility of adding or removing BSRMs, since they are dependent on the geometry and geometry is dependant on BSRMs)
Export: Exports the selected BSRM mesh data. (Note: Do this only if you can write at the path where the HOD is present)
Replace: Replaces the selected BSRM mesh data with the mesh you provide.
Regenerate SSUB: Regenerates the SSUB data.
Delete SSUB: Deletes the SSUB data (if you don’t want it, or if you manually divided the triangles in your mesh, before importing into CFHodEd)
Descriptor: Opens up the view to show the descriptor of this BSRM.
Name: Name of this object.
Parent Name: Name of this object’s parent.
Level of Detail: Level of detail of this BSRM. 1 is for Non-Goblin and 0 is for Goblin.
Bounding Box: Opens up the view to edit the BBOX of this BSRM.
Minimum Extents: Minimum extents of the BBOX.
Maximum Extents: Maximum extents of the BBOX.
Bounding Sphere: Opens up the view to edit the BSPH of this BSRM.
Center: Center of the BSPH.
Radius: Radius of the BSPH.
CM stands for collision mesh. Following is the interface for editing Collision meshes:
As you can see, there is a lot of similarity between CM and BSRM. But they are used for different purposes. CM is used for collision avoidance, collision detection and for spawning (as compared to BSRM, which is used for scars) weapon effects. CM is based on the basis of joints, not objects (BSRM was based on objects). Therefore, a CM for a ‘Root’ joint will have geometry for all objects parented under ‘Root’ joint. Therefore, CM must not be confused with BSRM; they are for very different purposes.
Add: Adds a new CM entry (Note: You must have only one entry per joint, otherwise, there may be unwanted results, including crashes).
Remove: Removes the selected CM entry (Note: It is possible for a HOD to not to have Collision meshes, but they must have BSRMs).
Parent Name: Name of the joint, to which this CM is parented.
Regenerate SSUB, Delete SSUB, Descriptor, Name and Level of Detail are not used in CM. They are not present.
Rest controls are same as BSRM
Engines define the engines of the ship. Usually, you should copy the information (meshes) from other HODs made by Relic rather than creating one of your own. Though it should not be problematic if you create your own. Engines are divided into three types. The interface for each of them is quite similar. Hence, the interface for “Engine Glow” is explained in detail here:
Engine shape is a list of triangles, which define the shape of the engine. This is usually used to determine the place where the engine’s burn sprite will be shown (the one used by fighters and corvettes). They usually point to the direction of the exhaust, or to say, in the backward direction. Engine Burn is a list of vertices, which is used to show the trails of the engine. They are a list of vertices, with later vertices having larger Z value (again, same direction in which the face of engine shapes points at). Finally, engine glow is the “glowing” of the engines (which is used in frigates, destroyers, and still larger ships).
Add: Adds a new object.
Remove: Removes the selected object.
Replace: Replaces the mesh data of the selected object.
Export: Exports the mesh data of the selected object. (Note: Do this only if you can write at the path where the HOD is present)
Add Duplicate: Adds a duplicate of the selected object.
Name: Name of the selected object.
· For engine shape, name should be “EngineShapeX”, where X is a number.
· For engine burn, name must be “EngineBurnX”, where X is a number.
· For engine glow, name must be “EngineGlowX” (if LoD is 0) or “EngineGlowX_LODY” (if LoD is not 0), where X is a number and X is the LoD number.
Parent: Parent of the selected object (Note: This must be “EngineNozzleX” where X is a number; otherwise the game will crash)
Level of Detail: Specifies the Level of Detail of this mesh (Note: This is only for engine glow)
(Note: LoD is only for engine glow; not for engine shape or engine burn)
(Also Note: It is possible for objects to have the same name, and while it is not a pre-requisite that objects should have different parents, but it’s a good idea that objects with same name have different parents.)
NavLights are created by:
1. First creating a joint (name must be in the form of “NavLightX”, where X is a number or a group of letters); and
2. Then creating a NavLight entry for the NavLight.
NavLights are generally attached to joints; therefore they don’t have parents since the parent of the joint is the parent of the NavLight.
Add: Adds a new NavLight entry.
Remove: Removes the selected NavLight entry.
NavLight Name: The joint to which the selected NavLight is attached.
Section: Unknown.
Size: Size of the NavLight.
Phase: The time taken by the NavLight to turn on\off (?).
Frequency: The frequency of the NavLight for blinking. Smaller the value, longer the time the NavLight turns on\off.
Style: Style of the NavLight.
Distance: Distance from which the light casted by the NavLight is visible.
Colour R G B A: Red, Green, Blue and Alpha colour of the NavLight (0-255).
Visible Sprite: Is the sprite of the NavLight visible? (This could be used for docking bays, which emit light, like the mothership, carrier, etc.)
Cast light on high-end systems ONLY: Self-explanatory.
Colour Sample: How the NavLight will look in game. To mimic Alpha blending, lower the alpha the more the colour would look blackish (this is for preview in CFHodEd only).
Markers are used to define position for effects related to objects. They are also used to define animations, and hence they are called as animation markers. In markers, the “Normal” position is forward direction, which means if you attach a damage effect to a marker, the effect will spray particles in the forward direction (and not upwards). Similarly, a scar will be visible in the forward direction, with XY as it’s plane. Markers have two sections: Header and Animation data.
Following is the section for Header:
Add: Adds a new marker.
Remove: Removes the selected marker.
Position: Opens up SIMPLe DRAW X to choose position of this marker
Auto-Orient: Automatically orients the selected marker. In this, the backwards of the Z-axis for this marker points towards the origin (which implies that the forward of Z axis points outside). The marker must have a co-ordinate other than (0,0,0) for this to work!
Name: Name of the marker.
Parent Name: Name of the marker’s parent.
X Y Z Position: Position of the marker.
X Y Z Rotation: Rotation of the marker.
Following is the section for Animation (which is not needed if you are not doing anything related to animation):
Reset curves: Resets the animation curves (and creates new channels if there are none).
Animation Curve Name: Name of animation curve selected. This is usually “<Name of Marker>_<Channel Name>” Channel Name can be one of follows:
· translateX X co-ordinate
· translateY Y co-ordinate
· translateZ Z co-ordinate
· rotateX X rotation
· rotateY Y rotation
· rotateZ Z rotation
· visibility Visibility (?)
Pre-Infinity: How the value is interpreted before the very first keyframe (the first keyframe need not be at the very first frame). For all possible values, look at the table below.
Post-Infinity: How the value is interpreted after the last keyframe. For all possible values, look at the table below.
Value
Effect
0
Constant. Usually this is what you should use.
1
Linear
2
Cycle
3
Cycle (relative)
4
Oscillate
Keyframe: Current Keyframe.
· Press A to add a Keyframe.
· Press R to remove the selected Keyframe.
Time: Time for the selected Keyframe.
Value: Value for the selected channel (rotations are in radians here)
The following are automatically calculated by CFHodEd, though you may edit them if you know what you are doing.
In Tangent (X and Y): Probably related to the ‘continuity’ of values, from this to next keyframe. You may change this if you know what effect changing it will produce.
Out Tangent (X and Y): Probably related to the ‘continuity’ of values, from this to next keyframe. You may change this if you know what effect changing it will produce.
Add: Adds a new dockpath.
Remove: Removes the selected dockpath.
Keyframe Slider: Selects the “Keyframe” or the point of the dockpath, which is being edited (Global Properties are same throughout).
Name: Name of the dockpath (used for identification purposes).
Parent Name: Name of the parent of the dockpath (this is “world”).
Following are the global properties of dockpaths:
Exit Path: Is this an exit path?
Latch Path: Is this a latch path?
Use Docking Animation: Use docking MadStates?
Global Tolerance: Obsolete!
Dock Families: Families of ships that can dock. (Ex. Fighter, Corvette, Frigate, SuperCap, Resource, Utility, etc.; which are defined in “FamilyList.lua”)
Linked Paths: Paths that are linked to this one; they cannot be used unless this is “free” (i.e. when there is no ship on this path)
Following are the local properties of dockpaths (which vary with Keyframe)
X Y Z Position: Position of dockpath for the selected Keyframe.
X Y Z Rotation: Rotation of dockpath for the selected Keyframe.
Keyframe Add: Adds a new Keyframe to the selected dockpath.
Keyframe Remove: Removes the selected Keyframe.
Position: Opens up “SIMPLe DRAW X” to choose a co-ordinate for the selected Keyframe of the selected dockpath.
Check rotation: When at this point, ship will check whether it has the required rotation before proceeding ahead.
Clear reservation: When at this point, allow the next ship to exit\launch.
Drop focus: When at this point, drop focus of the camera, if the camera is focused on this ship (not sure if this works).
Force close behavior: Use the exact rotation as on this point until the next point is reached.
Player is in control: Allows the ship to execute orders issued by the player after passing this point.
Queue origin: Is this the point where the ships will queue? (Should be out of the ship’s bounding box; and away from the ship)?
Use clip plane: Use the clip plane so that the ship docking in\out does not intersect the parent ship?
Use rotation: Use given rotations?
Point Tolerance: This is the distance from the point, from which it is assumed that the ship has passed this point.
Max speed: Maximum speed of the ship from this point.
Note: There must be three points, including one queue origin point. Further, the first point must be outside the ships bounding box, otherwise the path won’t work correctly.
.HOD Editing continued