Area Node Structure

From HEWIKI
Jump to: navigation, search

Contents

Each area defined in the Server GOM has a root node, known as an Area Root Node. This node is loaded when the Area Server process starts up. All other nodes linked to the area root node by hard associations are also considered to be part of the area, and are loaded when the root node is loaded. This collection of nodes is called a node hierarchy. This page goes over the typical structure of various area nodes.

Area Root Node

The root node of the area is always constructed from the class AreaRoot. When a new area is created by the World Server, this node will be created for the area. HeroEngine defines this class to have the following fields:

AreaRoot Class

Field Type Description
AreaID ID Set on area construction. Not guarded against modification, so might not be correct. Use external function GetAreaNumber() instead.
AreaInstanceNumber ID Set on area start. Not guarded against modification, so might not be correct. Use external function GetInstanceNumber() instead.
AreaName string Set on area load. Not guarded against modification. External function GetAreaName() will return the correct value.
areaEditsLocked Boolean Used by the edit script to determine if the area is locked to prevent edits.
areaEditExceptionList lookuplist indexed by id of string Used by the edit script to determine if an exception exists allowing certain people to edit a locked area.
subscript ScriptRef Inherited from the Scripted class. Unknown usage.
Script ScriptRef Inherited from the Scripted class. Unknown usage.


Additional fields may be added during game implementation -- as long as the added fields are in the game specific distribution package, they will not be removed during the application of a HeroEngine Publish Package.

Area Node

The Area Node is a child of the Area Root, connected by a base hard association. This node represents the root of the geometry defined by the area. When the World Server creates an area, it will create this node as well. The fields on this node correspond to the properties of the area as defined by the client.

AreaNode Class

Field Type Description
FQN string Inherited from FileRootNode. Set to the Fully Qualified Name of the area's DAT file on area construction. Protected against change by script code.
version integer Inherited from FileRootNode. Usage deprecated.
SkyDome ID Refers to the asset that is being used as the skydome for the area.
AreaBlur integer Controls the intensity of the blooming effect in the area.
SkyBlur integer Controls the intensity of the blooming effect of the sky.
SkyRotation integer Rotation of the skydome in degrees.
DemoStartPoint vector3 Deprecated
DemoStartRotation vector3 Deprecated
WindStrength integer Controls the intensity of the wind effect of the area.
Gusts integer Controls the variation of the wind effect.
CompositingStartDistance float Character style 1.0 controls.
DiscardCharacterTexturesDistance float Character style 1.0 controls.
BloomStrength float (default value: 2.0) This is the "glow" multiplier
MaxContrast float (default value: 0.5) Used in the dynamic gamma system
AreaSchemes lookuplist indexed by string of string List of the environmental schemes defined by the area.
DynamicDetailsAssetList list of string List of objects used as heightmap dynamic details in the area.
TerrainTextures list of string Textures used by heightmapped terrain.
EnvironmentalTextures list of string Not currently used.
DYDTextures list of string Textures for dynamic details on heightmaps.
dydchanparams list of string Parameters controlling the display of the dynamic details on heightmaps.


Area Asset Nodes

The objects that the area is built out of are called assets in HeroEngine. Each area has a list of assets that are used in that area. To represent these assets in the server GOM, a node of class AreaAsset is created for each asset defined in the area. These nodes are all associated as children of the Area Node, connected with the base hard association. For easier querying, they are also associated with the association AreaAssetAssociation.

class AreaAsset

Field Type Description
AreaAssetFQN string FQN for the asset. Protected against change by script.
CreatedBy ID Set to the account id of the editor who made the asset. Used for the creation notification to the editing client.


Room Nodes

The instances of the assets that make up an area are subdivided into two or more rooms. The purpose of rooms is to provide high level visibility control. During rendering, each room is determined to be visible or not. If the room is not visible, all of the instances in that room are not rendered. Rooms have visibility links to other rooms, which define which other rooms are visible when the client is rendering from the perspective of that room. These visibility links are represented as associations of type RoomVisibleAssociation in the server GOM. The nodes that represent the rooms are of class RoomNode, and they are targets of associations from the Area Node of type base hard association and AreaRoomAssociation.

class RoomNode

Field Type Description
FQN string Inherited from FileRootNode. Set to the FQN of the room's DAT file on room construction. Changeable by the edit script.
version integer Inherited from FileRootNode. Usage deprecated.
EnviroScheme string Selects one of the environment schemes defined by the area.
OutdoorsVisible boolean Controls the rendering of the skydome while rendering from the room.
DisablePlantEmitters boolean Controls the deprecated planting functionality.
Maps string See Minimap for more details.
BBCorner1 vector3 Supposedly a bounding box corner of the room. Not currently set by the editing client except by a special command.
BBCorner2 vector3 The other bounding box corner of the room.
AddVisibleRoom string Used by the edit script to communicate room visibility changes.
RemoveVisibleRoom string Used by the edit script to communicate room visibility changes.


Instance Nodes

The instantiation of an asset at a particular place in the area is called an instance. The server represents each instance as a node of a class specific to that instance type. All instance classes derive from a class called Instance, which defines properties all instances have in common. Each instance node is associated to a parent room by a base hard association. Also, there is an association with the instance as the source and the asset the instance is instantiated from as the target. This association type is AssetReferenceAss.

Path Nodes

HeroEngine allows editors to define paths, known as Waypoint Paths as part of an area. A path is made up of an ordered list of points known as Waypoints. The Waypoint Paths page describes how to create paths with the HeroBlade editing tool. Each path is represented by a node of class PathNode. The Area Node is the source of a base hard association and an association of type AreaPathAssociation for each path node. The points in the path are all nodes instantiated from the class PathPointNode with base hard associations from their PathNode. A field in the path node describes the ordering of the points.

class PathNode

Field Type Description
PathName string Name of the path.
PathPoints list of noderef of class PathPointNode The ordered list of all the points that make up the path.
PathColor string A representation of the color of the path. String is used because colors can sometimes be complex parameters.


Waypoint Nodes

See also: Waypoint paths

class PathPointNode

Field Type Description
PathPointLocation vector3 Location of the path point in the area's space.
PathPointData string Arbitrary string data for the path point.


Sample diagram

This picture shows an example area node hierarchy, with all the associations labeled.

Area Node Structure.jpg

Other nodes

This page is not a comprehensive list of all area nodes. Many game-specific systems and many normal HeroEngine systems will also generate nodes and place them in the area's hierarchy. Usually, these nodes are associated with the Area Root node to distinguish them from the nodes specific to the area geometry, which is all associated to the Area Node, instead of the Area Root node.

Additional Information

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox