UNPKG

@needle-tools/engine

Version:

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.

42 lines 2.63 kB
import { getParam } from "../engine/engine_utils.js"; const debug = getParam("debugdefines"); // We jump through hoops like this to support 3 cases: // 1) Vanilla js or angular js where global defines are not guaranteed to be made // 2) Vite where global defines are made, vite defines are also automatically set to globalThis // 3) Webpack where global defines are not made BUT declare const variables are replaces with the actual value (via the webpack DefinePlugin) tryEval(`if(!globalThis["NEEDLE_ENGINE_VERSION"]) globalThis["NEEDLE_ENGINE_VERSION"] = "0.0.0";`); tryEval(`if(!globalThis["NEEDLE_ENGINE_GENERATOR"]) globalThis["NEEDLE_ENGINE_GENERATOR"] = "unknown";`); tryEval(`if(!globalThis["NEEDLE_PROJECT_BUILD_TIME"]) globalThis["NEEDLE_PROJECT_BUILD_TIME"] = "unknown";`); tryEval(`if(!globalThis["NEEDLE_PUBLIC_KEY"]) globalThis["NEEDLE_PUBLIC_KEY"] = "unknown";`); // Make sure to wrap the new global this define in underscores to prevent the bundler from replacing it with the actual value tryEval(`globalThis["__NEEDLE_ENGINE_VERSION__"] = "` + NEEDLE_ENGINE_VERSION + `";`); tryEval(`globalThis["__NEEDLE_ENGINE_GENERATOR__"] = "` + NEEDLE_ENGINE_GENERATOR + `";`); tryEval(`globalThis["__NEEDLE_PROJECT_BUILD_TIME__"] = "` + NEEDLE_PROJECT_BUILD_TIME + `";`); tryEval(`globalThis["__NEEDLE_PUBLIC_KEY__"] = "` + NEEDLE_PUBLIC_KEY + `";`); /** The version of the Needle engine */ export const VERSION = NEEDLE_ENGINE_VERSION; /** The generator used to export the scene / build the web project */ export const GENERATOR = NEEDLE_ENGINE_GENERATOR; /** The build time of the project */ export const BUILD_TIME = NEEDLE_PROJECT_BUILD_TIME; if (debug) console.log(`Engine version: ${VERSION} (generator: ${GENERATOR})\nProject built at ${BUILD_TIME}`); export const PUBLIC_KEY = NEEDLE_PUBLIC_KEY; export const activeInHierarchyFieldName = "needle_isActiveInHierarchy"; export const builtinComponentKeyName = "builtin_components"; // It's easier to use a string than a symbol here because the symbol might not be the same when imported in other packages export const editorGuidKeyName = "needle_editor_guid"; function tryEval(str) { try { // https://esbuild.github.io/content-types/#direct-eval (0, eval)(str); } catch (err) { // ignore errors // when built with vite the strings above might be replaced with the actual variables // and that would then fail (e.g. NEEDLE_ENGINE_VERSION becomes 1.0.0 for example) if (debug) console.error(err); } } //# sourceMappingURL=engine_constants.js.map