UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

83 lines (69 loc) 1.59 kB
/** * * @enum {number} */ export const SerializationFlags = { /** * When set, entity is considered non-permanent and should not be serialized */ Transient: 1 }; /** * Stores settings for entity serialization */ export class SerializationMetadata { /** * 32 bit bitfield. * Use {@link setFlag}/{@link getFlag} etc. to read individual flag values * @type {number} */ flags = 0; /** * * @param {number|SerializationFlags} flag * @returns {void} */ setFlag(flag) { this.flags |= flag; } /** * * @param {number|SerializationFlags} flag * @returns {void} */ clearFlag(flag) { this.flags &= ~flag; } /** * * @param {number|SerializationFlags} flag * @param {boolean} value */ writeFlag(flag, value) { if (value) { this.setFlag(flag); } else { this.clearFlag(flag); } } /** * * @param {number|SerializationFlags} flag * @returns {boolean} */ getFlag(flag) { return (this.flags & flag) === flag; } toJSON() { return { flags: this.flags } } fromJSON({ flags = 0 }) { this.flags = flags; } } const transient = new SerializationMetadata(); transient.setFlag(SerializationFlags.Transient); SerializationMetadata.Transient = Object.freeze(transient); SerializationMetadata.typeName = "SerializationMetadata";