Skip to content

NMSCD/Coordinate-Conversion

Repository files navigation

Coordinate Conversion

Library with conversion functions for NMS coordinates

Supported by the No Man's Sky Community Developers & Designers

Vite Vitest Typescript
Github Actions

Installation

NPM:

npm i @nmscd/coordinate-conversion

From CDN with <script> tag:

<script type="text/javascript" src="https://nmscd.com/Coordinate-Conversion/bundle.js"></script>

Converters

  • PortalCode
    • Inputs (only one is required)
      • code - 03894AC8D91F
      • hexArray - ['0', '3', '8', '9', '4', 'A', 'C', '8', 'D', '9', '1', 'F']
      • numberArray - [0, 3, 8, 9, 4, 10, 12, 8, 13, 9, 1, 15]
    • Methods
      • toGalacticCoordinates
      • toVoxel
  • GalacticCoordinate
    • Inputs (only one is required)
      • code - 0C55:00D5:0922:0234 or 0C5500D509220234
      • groups - ['0C55', '00D5', '0922', '0234']
    • Methods
      • toGlyph
      • toVoxel
  • VoxelCoordinate

Conversion result

The conversions will return an object to indicate whether the conversion was successful or not.

const galacticConversionResult = PortalCode({ code: '023456123456' }).toGalacticCoordinates();
console.log(galacticConversionResult); // { isSuccess: true, value: { 'code': '0C55:00D5:0922:0234', 'groups': ['0C55', '00D5', '0922', '0234'] }, errorMessage: ''

const voxelConversionResult = GalacticCoordinate({ code: '0C55:00D5:0922:0234' }).toGlyph();
console.log(voxelConversionResult); // { isSuccess: true, value: '023456123456', errorMessage: ''

// Example of error in conversion
const galacticConversionResult = PortalCode({ code: 'tester' }).toGalacticCoordinates();
console.log(galacticConversionResult); /*
{
  isSuccess: false,
  value: '',
  errorMessage: 'Character is an unexpected value (t), expected values 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, a, b, c, d, e, f, A, B, C, D, E, F'
}
*/

Types

Voxel Coordinates

import type { VoxelCoordinates } from '@nmscd/coordinate-conversion';

type VoxelCoordinates = {
  VoxelX: number;
  VoxelY: number;
  VoxelZ: number;
  SolarSystemIndex: number;
  PlanetIndex: number;
};

Code coverage