SPON HoloMap v0.4.0

Copyright (C) 2007-2008 Bil Bas (bil dot bagpuss at gmail dot com / a.k.a. Spooner)
License: GNU Lesser General Public License, version 3

Latest version (and discussion) available at OFPEC or BIS forums

Overview

HoloMap creates a 3D holographic representation of the game world, showing friendly (blue) and non-friendly (red) vehicles, as well as missiles fired, as blips. Alternatively, using the @DBO_miniatures addon (included), show vehicles using scale models!

Requires that the SPON Core be installed in the mission (v0.5.3 or higher). Both SPON HoloMap and SPON Core are available in two versions: One is a client-side addon and the other is mission-script-based, which does not require any addons to be installed on client or server. Both require ArmA 1.14 or higher.

Features

Installation (addon version)

  1. Install the XEH (Extended event handlers) addon by Solus & KillSwitch. (Included)
  2. Install the latest version of the SPON Core addon and, optionally, the Deanosbeano's DBO Miniatures addon (the latter is included in the distribution).
  3. Copy the "Addon Version/@SPON_HoloMap" directory into your ArmA directory.
  4. Add " -mod=@XEH;@SPON_Core;@SPON_HoloMap;@DBO_miniatures;" to your ArmA shortcut target (@DBO_miniatures can be left out if you just want simple "blips").
  5. If you want to force the SPON HoloMap addon to be loaded in order to play in your mission, just add a "SPON HoloMap: Require" gamelogic with the editor.

Installation (mission-script version)

  1. Ensure that you have the latest version of SPON Core installed in your mission (see the README.txt within that package for full installation instructions).
  2. Copy the "Scripts\SPON" directory into your mission folder.
  3. In your init.sqf file (or init.sqs), include the following line:
    [] call compile preprocessFileLineNumbers "SPON\HoloMap\initHoloMap.sqf";
  4. If in doubt, check how it is done in the demo mission and copy that.

Configuration

Creating HoloMap Projectors

Use SPON_Holo_map function to place a HoloMap projector into the world. First place a "Black Box" to act as the projector (class "Misc01", available to place in the editor if using SIX EditorUpdate, which is not required to play the mission!). You can use any object as the projector, of course, but this is the recommended base object to use.

Parameters:
	0: _projector - Projection object to create the HoloMap at [Position: [X, Y, Z]].
	1: _sensorFunction - Function that returns the current sensor.
		Sensor object acts as centre for detection of land and
		vehicles [Code returning an Object].
	2: _range - Distance from centre of map to the edge (so the width of the map
		display will be _range * 2). Actual maximum range will be greater, since
		display is square, not circular [Number: > 0]
	3: _verticalMultiplier - Multiplier for all vertical heights. This should
		generally be 1 (accurate scaling), but if you want to accentuate
		the bumpiness of the terrain and vertical separation of flying
		vehicles, then it should be a number higher than 1. If you want an
		entirely "flat" map display, then this should be a very low number like
		0.00000001. [Number > 0]
	4: _side - Side which is shown as a blue blip (all others will be red). Use
		sideLogic to make all blips unknown (red) [Side]

Returns: nil.

Examples:
	Add this to your init.sqf (or init.sqs):

	[holoMap, {radarTower}, 2000, 3, west] call SPON_Holo_map;
	(HoloMap will show a static area 4000m in diameter and increase all vertical
	distances by a factor of 3).

	or

	[holoMap, {radarTower}, 5000, 1, west] call SPON_Holo_map;
	(HoloMap will show a static area 10000m in diameter and all vertical distances
	will be exactly in scale).

	or

	[holoMap, {awacs}, 1000, 0.00000001, west] call SPON_Holo_map;
	(HoloMap will show a moving area, 2000m in diameter which is artificially
	flattened into being a 2D map).

Switching between sensors used by a single projector

Use "SPON\HoloMap\switchSensorAction.sqf" action to switch sensors on a projector.

Example:
[holoMapMobileHQ, {mobileHQ1}, 1000, 1, west] call SPON_Holo_map;
mobileHQPC addAction ["Switch to MHQ1", "SPON\HoloMap\switchSensorAction.sqf", [holoMapMobileHQ, {mobileHQ1}], 0, false, true];
mobileHQPC addAction ["Switch to MHQ2", "SPON\HoloMap\switchSensorAction.sqf", [holoMapMobileHQ, {mobileHQ2}], 0, false, true];
mobileHQPC addAction ["Switch to MHQ3", "SPON\HoloMap\switchSensorAction.sqf", [holoMapMobileHQ, {mobileHQ3}], 0, false, true];

Jamming

// SPON_Holo_setJammingRange
//
// Description:
//   Make an object into a jamming device. If this is a vehicle, then jamming
//   will be "on" all the time the engine is on. A static object, such as a
//   radar tower, will always be jamming. Jamming completely disrupts all HoloMap
//   projectors and sensors in range and hides all blips within that range.
//
// Parameters:
//   0: _jammer - Vehicle or static object to act as a jammer [Object]
//   1: _range - Range of interference [Number: > 0]

Stealth

// SPON_Holo_setStealth
//
// Description:
//   Sets stealth factor of a vehicle.
//
// Parameters:
//   0: _vehicle - Vehicle to give stealth to [Vehicle]
//   1: _factor - Amount by which detection range is reduced. If 0, then no
//      stealth at all(normal detection). If 0.4, then detected at 60% of normal
//      range. If 1.0, then never detected. [Number: 0.0 <= value <= 1.0]
//
// Returns:
//   _factor.

// SPON_Holo_getStealth
//
// Description:
//   Gets the stealth factor of a vehicle.
//
// Parameters:
//   0: _vehicle - Vehicle to get stealth from [Vehicle]
//
// Returns:
//   _factor [Number: 0.0 <= value <= 1.0]

Global Variables

A number of global variables can be modified to affect all HoloMaps (names shown with initial values):

// Vehicles
SPON_Holo_useMiniatures = true; // Will use miniatures if available, else just use regular blips.

// Infantry.
SPON_Holo_showInfantry = true; // Show infantry on map.
SPON_Holo_showEnemyInfantry = false; // Show enemy, as well as friendly infantry (ignored unless SPON_Holo_showInfantry is true)
SPON_Holo_showNonGroupLeadersInfantry = false; // Shows all infantry, not just group leaders (ignored unless SPON_Holo_showInfantry is true)

// Terrain
SPON_Holo_showTerrain = true; // Render 3D terrain as well as blips.
SPON_Holo_showTextures = true; // Show ground textures on the terrain (urban, sand, grass) (Ignored unless SPON_Holo_showTerrain is true).
SPON_Holo_minHeight = 0; // Base height to render terrain. This is the effective height of the top of the projector box (set this higher than 0 for high altitude maps).
SPON_Holo_maxHeight = 800; // Height to show as maximum lightless (heights above this will all be the same shade, so hard to see the shape).
SPON_Holo_showSea = false; // Render the sea (costs FPS for little utility, so advised not to use it unless only one HoloMap is visible at a time).

Making your own miniatures

Miniature models should be configured as seagulls (see DBO_miniatures for example config). Ideally, they should have a single LOD with a low polycount and not having geometry. If your vehicle class has the string, "SPON_Holo_miniature" defined, then that class will be used as the miniature. Without this string in the vehicle class, a default miniature will be used.

Limitations and Known Issues

Compatibility

Plans

Design Aims

Credits

Change Log

v0.4.0

Added

Modified

Removed

Fixed

v0.3.0

First public release.