SYMBOL INDEX (434 symbols across 79 files) FILE: convex/_generated/dataModel.d.ts type TableNames (line 23) | type TableNames = TableNamesInDataModel; type Doc (line 30) | type Doc = DocumentByName< type Id (line 48) | type Id = type DataModel (line 60) | type DataModel = DataModelFromSchemaDefinition; FILE: convex/_generated/server.d.ts type QueryCtx (line 106) | type QueryCtx = GenericQueryCtx; type MutationCtx (line 114) | type MutationCtx = GenericMutationCtx; type ActionCtx (line 122) | type ActionCtx = GenericActionCtx; type DatabaseReader (line 131) | type DatabaseReader = GenericDatabaseReader; type DatabaseWriter (line 142) | type DatabaseWriter = GenericDatabaseWriter; FILE: convex/agent/conversation.ts function startConversationMessage (line 13) | async function startConversationMessage( function trimContentPrefx (line 71) | function trimContentPrefx(content: string, prompt: string) { function continueConversationMessage (line 78) | async function continueConversationMessage( function leaveConversationMessage (line 136) | async function leaveConversationMessage( function agentPrompts (line 185) | function agentPrompts( function previousConversationPrompt (line 201) | function previousConversationPrompt( function relatedMemoriesPrompt (line 218) | function relatedMemoriesPrompt(memories: memory.Memory[]): string[] { function previousMessages (line 229) | async function previousMessages( function stopWords (line 348) | function stopWords(otherPlayer: string, player: string) { FILE: convex/agent/embeddingsCache.ts function fetch (line 9) | async function fetch(ctx: ActionCtx, text: string) { function fetchBatch (line 14) | async function fetchBatch(ctx: ActionCtx, texts: string[]) { function hashText (line 54) | async function hashText(text: string) { FILE: convex/agent/memory.ts constant MEMORY_ACCESS_THROTTLE (line 12) | const MEMORY_ACCESS_THROTTLE = 300_000; constant MEMORY_OVERFETCH (line 15) | const MEMORY_OVERFETCH = 10; type Memory (line 18) | type Memory = Doc<'memories'>; type MemoryType (line 19) | type MemoryType = Memory['data']['type']; type MemoryOfType (line 20) | type MemoryOfType = Omit & { function rememberConversation (line 24) | async function rememberConversation( function searchMemories (line 158) | async function searchMemories( function makeRange (line 176) | function makeRange(values: number[]) { function normalize (line 182) | function normalize(value: number, range: readonly [number, number]) { function calculateImportance (line 246) | async function calculateImportance(description: string) { function reflectOnMemories (line 325) | async function reflectOnMemories( function latestMemoryOfType (line 438) | async function latestMemoryOfType( FILE: convex/aiTown/agent.ts class Agent (line 26) | class Agent { method constructor (line 38) | constructor(serialized: SerializedAgent) { method tick (line 52) | tick(game: Game, now: number) { method startOperation (line 238) | startOperation( method serialize (line 259) | serialize(): SerializedAgent { type SerializedAgent (line 285) | type SerializedAgent = ObjectType; type AgentOperations (line 287) | type AgentOperations = typeof internal.aiTown.agentOperations; function runAgentOperation (line 289) | async function runAgentOperation(ctx: MutationCtx, operation: string, ar... FILE: convex/aiTown/agentDescription.ts class AgentDescription (line 4) | class AgentDescription { method constructor (line 9) | constructor(serialized: SerializedAgentDescription) { method serialize (line 16) | serialize(): SerializedAgentDescription { type SerializedAgentDescription (line 27) | type SerializedAgentDescription = ObjectType; FILE: convex/aiTown/conversationMembership.ts type SerializedConversationMembership (line 13) | type SerializedConversationMembership = ObjectType; type GameStateDiff (line 44) | type GameStateDiff = Infer; class Game (line 46) | class Game extends AbstractGame { method constructor (line 65) | constructor( method load (line 89) | static async load( method allocId (line 147) | allocId(idType: T): GameId { method scheduleOperation (line 153) | scheduleOperation(name: string, args: unknown) { method handleInput (line 157) | handleInput(now: number, name: Name, args: In... method beginStep (line 165) | beginStep(_now: number) { method tick (line 177) | tick(now: number) { method saveStep (line 206) | async saveStep(ctx: ActionCtx, engineUpdate: EngineUpdate): Promise, diff: G... FILE: convex/aiTown/ids.ts type IdTypes (line 4) | type IdTypes = keyof typeof IdShortCodes; type GameId (line 6) | type GameId = string & { __type: T }; function parseGameId (line 8) | function parseGameId(idType: T, gameId: string): Game... function allocGameId (line 21) | function allocGameId(idType: T, idNumber: number): Ga... FILE: convex/aiTown/inputHandler.ts function inputHandler (line 4) | function inputHandler = ObjectType; type InputReturnValue (line 21) | type InputReturnValue = ReturnType< FILE: convex/aiTown/insertInput.ts function insertInput (line 6) | async function insertInput( FILE: convex/aiTown/location.ts type Location (line 4) | type Location = { function playerLocation (line 24) | function playerLocation(player: Player): Location { FILE: convex/aiTown/main.ts function createEngine (line 10) | async function createEngine(ctx: MutationCtx) { function loadWorldStatus (line 20) | async function loadWorldStatus(db: DatabaseReader, worldId: Id<'worlds'>) { function startEngine (line 31) | async function startEngine(ctx: MutationCtx, worldId: Id<'worlds'>) { function kickEngine (line 59) | async function kickEngine(ctx: MutationCtx, worldId: Id<'worlds'>) { function stopEngine (line 77) | async function stopEngine(ctx: MutationCtx, worldId: Id<'worlds'>) { FILE: convex/aiTown/movement.ts type PathCandidate (line 11) | type PathCandidate = { function stopPlayer (line 20) | function stopPlayer(player: Player) { function movePlayer (line 25) | function movePlayer( function findRoute (line 57) | function findRoute(game: Game, now: number, player: Player, destination:... function blocked (line 164) | function blocked(game: Game, now: number, pos: Point, playerId?: GameId<... function blockedWithPositions (line 171) | function blockedWithPositions(position: Point, otherPositions: Point[], ... FILE: convex/aiTown/player.ts type Pathfinding (line 36) | type Pathfinding = Infer; type Activity (line 43) | type Activity = Infer; type SerializedPlayer (line 58) | type SerializedPlayer = ObjectType; class Player (line 60) | class Player { method constructor (line 72) | constructor(serialized: SerializedPlayer) { method tick (line 84) | tick(game: Game, now: number) { method tickPathfinding (line 90) | tickPathfinding(game: Game, now: number) { method tickPosition (line 137) | tickPosition(game: Game, now: number) { method join (line 168) | static join( method leave (line 240) | leave(game: Game, now: number) { method serialize (line 251) | serialize(): SerializedPlayer { FILE: convex/aiTown/playerDescription.ts type SerializedPlayerDescription (line 10) | type SerializedPlayerDescription = ObjectType; class World (line 24) | class World { method constructor (line 31) | constructor(serialized: SerializedWorld) { method playerConversation (line 47) | playerConversation(player: Player): Conversation | undefined { method serialize (line 51) | serialize(): SerializedWorld { FILE: convex/aiTown/worldMap.ts type TileLayer (line 5) | type TileLayer = Infer; type AnimatedSprite (line 16) | type AnimatedSprite = ObjectType; type SerializedWorldMap (line 33) | type SerializedWorldMap = ObjectType; class WorldMap (line 35) | class WorldMap { method constructor (line 49) | constructor(serialized: SerializedWorldMap) { method serialize (line 61) | serialize(): SerializedWorldMap { FILE: convex/constants.ts constant ACTION_TIMEOUT (line 1) | const ACTION_TIMEOUT = 120_000; constant IDLE_WORLD_TIMEOUT (line 4) | const IDLE_WORLD_TIMEOUT = 5 * 60 * 1000; constant WORLD_HEARTBEAT_INTERVAL (line 5) | const WORLD_HEARTBEAT_INTERVAL = 60 * 1000; constant MAX_STEP (line 7) | const MAX_STEP = 10 * 60 * 1000; constant TICK (line 8) | const TICK = 16; constant STEP_INTERVAL (line 9) | const STEP_INTERVAL = 1000; constant PATHFINDING_TIMEOUT (line 11) | const PATHFINDING_TIMEOUT = 60 * 1000; constant PATHFINDING_BACKOFF (line 12) | const PATHFINDING_BACKOFF = 1000; constant CONVERSATION_DISTANCE (line 13) | const CONVERSATION_DISTANCE = 1.3; constant MIDPOINT_THRESHOLD (line 14) | const MIDPOINT_THRESHOLD = 4; constant TYPING_TIMEOUT (line 15) | const TYPING_TIMEOUT = 15 * 1000; constant COLLISION_THRESHOLD (line 16) | const COLLISION_THRESHOLD = 0.75; constant MAX_HUMAN_PLAYERS (line 19) | const MAX_HUMAN_PLAYERS = 8; constant CONVERSATION_COOLDOWN (line 22) | const CONVERSATION_COOLDOWN = 15000; constant ACTIVITY_COOLDOWN (line 25) | const ACTIVITY_COOLDOWN = 10_000; constant PLAYER_CONVERSATION_COOLDOWN (line 28) | const PLAYER_CONVERSATION_COOLDOWN = 60000; constant INVITE_ACCEPT_PROBABILITY (line 31) | const INVITE_ACCEPT_PROBABILITY = 0.8; constant INVITE_TIMEOUT (line 34) | const INVITE_TIMEOUT = 60000; constant AWKWARD_CONVERSATION_TIMEOUT (line 37) | const AWKWARD_CONVERSATION_TIMEOUT = 60_000; constant MAX_CONVERSATION_DURATION (line 41) | const MAX_CONVERSATION_DURATION = 10 * 60_000; constant MAX_CONVERSATION_MESSAGES (line 45) | const MAX_CONVERSATION_MESSAGES = 8; constant INPUT_DELAY (line 49) | const INPUT_DELAY = 1000; constant NUM_MEMORIES_TO_SEARCH (line 53) | const NUM_MEMORIES_TO_SEARCH = 3; constant MESSAGE_COOLDOWN (line 56) | const MESSAGE_COOLDOWN = 2000; constant AGENT_WAKEUP_THRESHOLD (line 59) | const AGENT_WAKEUP_THRESHOLD = 1000; constant VACUUM_MAX_AGE (line 62) | const VACUUM_MAX_AGE = 2 * 7 * 24 * 60 * 60 * 1000; constant DELETE_BATCH_SIZE (line 63) | const DELETE_BATCH_SIZE = 64; constant HUMAN_IDLE_TOO_LONG (line 65) | const HUMAN_IDLE_TOO_LONG = 5 * 60 * 1000; constant ACTIVITIES (line 67) | const ACTIVITIES = [ constant ENGINE_ACTION_DURATION (line 73) | const ENGINE_ACTION_DURATION = 30000; constant MAX_PATHFINDS_PER_STEP (line 76) | const MAX_PATHFINDS_PER_STEP = 16; constant DEFAULT_NAME (line 78) | const DEFAULT_NAME = 'Me'; FILE: convex/engine/abstractGame.ts method constructor (line 13) | constructor(public engine: Doc<'engines'>) {} method beginStep (line 19) | beginStep(now: number) {} method runStep (line 22) | async runStep(ctx: ActionCtx, now: number) { type EngineUpdate (line 110) | type EngineUpdate = Infer; function loadEngine (line 112) | async function loadEngine( function engineInsertInput (line 133) | async function engineInsertInput( function applyEngineUpdate (line 173) | async function applyEngineUpdate( FILE: convex/engine/historicalObject.ts type FieldConfig (line 20) | type FieldConfig = Array; constant MAX_FIELDS (line 23) | const MAX_FIELDS = 16; constant PACKED_VERSION (line 25) | const PACKED_VERSION = 1; type NormalizedFieldConfig (line 27) | type NormalizedFieldConfig = Array<{ type History (line 52) | type History = { type Sample (line 57) | type Sample = { class HistoricalObject (line 72) | class HistoricalObject> { method constructor (line 80) | constructor(fields: FieldConfig, initialValue: T) { method historyLength (line 89) | historyLength() { method checkShape (line 95) | checkShape(data: any) { method update (line 108) | update(now: number, data: T) { method pack (line 137) | pack(): ArrayBuffer | null { function packFieldConfig (line 155) | function packFieldConfig(fields: NormalizedFieldConfig) { function packSampleRecord (line 213) | function packSampleRecord( function unpackSampleRecord (line 283) | function unpackSampleRecord(fields: FieldConfig, buffer: ArrayBuffer) { function normalizeFieldConfig (line 353) | function normalizeFieldConfig(fields: FieldConfig): NormalizedFieldConfig { FILE: convex/engine/schema.ts type Engine (line 51) | type Engine = Infer; FILE: convex/init.ts function getOrCreateDefaultWorld (line 42) | async function getOrCreateDefaultWorld(ctx: MutationCtx) { function shouldCreateAgents (line 90) | async function shouldCreateAgents( FILE: convex/music.ts function client (line 7) | function client(): Replicate { function replicateAvailable (line 14) | function replicateAvailable(): boolean { type MusicGenNormStrategy (line 73) | enum MusicGenNormStrategy { type MusicGenFormat (line 80) | enum MusicGenFormat { function generateMusic (line 100) | async function generateMusic( FILE: convex/testing.ts function getDefaultWorld (line 114) | async function getDefaultWorld(db: DatabaseReader) { FILE: convex/util/FastIntegerCompression.ts function bytelog (line 19) | function bytelog(val: number) { function zigzag_encode (line 32) | function zigzag_encode(val: number) { function zigzag_decode (line 36) | function zigzag_decode(val: number) { function computeCompressedSizeInBytes (line 42) | function computeCompressedSizeInBytes(input: number[]) { function computeCompressedSizeInBytesSigned (line 53) | function computeCompressedSizeInBytesSigned(input: number[]) { function compress (line 65) | function compress(input: number[]) { function computeHowManyIntegers (line 99) | function computeHowManyIntegers(input: ArrayBuffer) { function uncompress (line 111) | function uncompress(input: ArrayBuffer) { function compressSigned (line 151) | function compressSigned(input: number[]) { function uncompressSigned (line 186) | function uncompressSigned(input: ArrayBuffer) { FILE: convex/util/assertNever.ts function assertNever (line 2) | function assertNever(x: never): never { FILE: convex/util/asyncMap.ts function asyncMap (line 9) | async function asyncMap( FILE: convex/util/compression.ts function quantize (line 1) | function quantize(values: number[], precision: number) { function unquantize (line 6) | function unquantize(quantized: number[], precision: number) { function deltaEncode (line 11) | function deltaEncode(values: number[], initialValue = 0) { function deltaDecode (line 21) | function deltaDecode(deltas: number[], initialValue = 0) { function runLengthEncode (line 32) | function runLengthEncode(values: number[]) { function runLengthDecode (line 58) | function runLengthDecode(encoded: number[]) { FILE: convex/util/geometry.ts function distance (line 3) | function distance(p0: Point, p1: Point): number { function pointsEqual (line 9) | function pointsEqual(p0: Point, p1: Point): boolean { function manhattanDistance (line 13) | function manhattanDistance(p0: Point, p1: Point) { function pathOverlaps (line 17) | function pathOverlaps(path: Path, time: number): boolean { function pathPosition (line 26) | function pathPosition( constant EPSILON (line 60) | const EPSILON = 0.0001; function vector (line 62) | function vector(p0: Point, p1: Point): Vector { function vectorLength (line 68) | function vectorLength(vector: Vector): number { function normalize (line 72) | function normalize(vector: Vector): Vector | null { function orientationDegrees (line 84) | function orientationDegrees(vector: Vector): number { function compressPath (line 93) | function compressPath(densePath: PathComponent[]): Path { FILE: convex/util/isSimpleObject.ts function isSimpleObject (line 1) | function isSimpleObject(value: unknown) { FILE: convex/util/llm.ts constant OPENAI_EMBEDDING_DIMENSION (line 3) | const OPENAI_EMBEDDING_DIMENSION = 1536; constant TOGETHER_EMBEDDING_DIMENSION (line 4) | const TOGETHER_EMBEDDING_DIMENSION = 768; constant OLLAMA_EMBEDDING_DIMENSION (line 5) | const OLLAMA_EMBEDDING_DIMENSION = 1024; constant EMBEDDING_DIMENSION (line 7) | const EMBEDDING_DIMENSION: number = OLLAMA_EMBEDDING_DIMENSION; function detectMismatchedLLMProvider (line 9) | function detectMismatchedLLMProvider() { type LLMConfig (line 37) | interface LLMConfig { function getLLMConfig (line 46) | function getLLMConfig(): LLMConfig { function chatCompletion (line 135) | async function chatCompletion( function tryPullOllama (line 190) | async function tryPullOllama(model: string, error: string) { function fetchEmbeddingBatch (line 205) | async function fetchEmbeddingBatch(texts: string[]) { function fetchEmbedding (line 255) | async function fetchEmbedding(text: string) { function fetchModeration (line 260) | async function fetchModeration(content: string) { constant RETRY_BACKOFF (line 285) | const RETRY_BACKOFF = [1000, 10_000, 20_000]; constant RETRY_JITTER (line 286) | const RETRY_JITTER = 100; type RetryError (line 287) | type RetryError = { retry: boolean; error: any }; function retryWithBackoff (line 289) | async function retryWithBackoff( type LLMMessage (line 321) | interface LLMMessage { type CreateChatCompletionResponse (line 359) | interface CreateChatCompletionResponse { type CreateEmbeddingResponse (line 381) | interface CreateEmbeddingResponse { type CreateChatCompletionRequest (line 395) | interface CreateChatCompletionRequest { class ChatCompletionContent (line 601) | class ChatCompletionContent { method constructor (line 605) | constructor(body: ReadableStream, stopWords: string[]) { method readInner (line 610) | async *readInner() { method read (line 629) | async *read() { method readAll (line 651) | async readAll() { method splitStream (line 659) | async *splitStream(stream: ReadableStream) { function ollamaFetchEmbedding (line 688) | async function ollamaFetchEmbedding(text: string) { FILE: convex/util/minheap.ts function MinHeap (line 2) | function MinHeap(compare: (a: T, b: T) => boolean) { FILE: convex/util/object.ts function parseMap (line 1) | function parseMap( function serializeMap (line 18) | function serializeMap( FILE: convex/util/sleep.ts function sleep (line 1) | async function sleep(ms: number) { FILE: convex/util/types.ts type Point (line 7) | type Point = Infer; type Vector (line 13) | type Vector = Infer; type Path (line 17) | type Path = [number, number, number, number, number][]; type PathComponent (line 19) | type PathComponent = { position: Point; facing: Vector; t: number }; function queryPath (line 21) | function queryPath(p: Path, at: number): PathComponent { function packPathComponent (line 24) | function packPathComponent(p: PathComponent): [number, number, number, n... function unpackPathComponent (line 27) | function unpackPathComponent(p: [number, number, number, number, number]... FILE: convex/util/xxhash.ts constant PRIME32_1 (line 27) | const PRIME32_1 = 2654435761; constant PRIME32_2 (line 28) | const PRIME32_2 = 2246822519; constant PRIME32_3 (line 29) | const PRIME32_3 = 3266489917; constant PRIME32_4 (line 30) | const PRIME32_4 = 668265263; constant PRIME32_5 (line 31) | const PRIME32_5 = 374761393; function toUtf8 (line 33) | function toUtf8(text: string): Uint8Array { function xxHash32 (line 61) | function xxHash32(buffer: Uint8Array | string, seed = 0): number { FILE: data/convertMap.js function convertLayerData (line 34) | function convertLayerData(layerData, width, height) { FILE: data/spritesheets/types.ts type Frame (line 1) | type Frame = { type SpritesheetData (line 20) | type SpritesheetData = { FILE: src/App.tsx function Home (line 20) | function Home() { FILE: src/components/Character.tsx function ViewerIndicator (line 111) | function ViewerIndicator() { FILE: src/components/ConvexClientProvider.tsx function convexUrl (line 12) | function convexUrl(): string { function ConvexClientProvider (line 22) | function ConvexClientProvider({ children }: { children: ReactNode }) { FILE: src/components/DebugPath.tsx function DebugPath (line 8) | function DebugPath({ player, tileDim }: { player: Player; tileDim: numbe... function debugColor (line 34) | function debugColor(_id: string) { FILE: src/components/DebugTimeManager.tsx constant MAX_DATA_POINTS (line 5) | const MAX_DATA_POINTS = 10000; function DebugTimeManager (line 7) | function DebugTimeManager(props: { constant COLORS (line 152) | const COLORS = ( FILE: src/components/FreezeButton.tsx function FreezeButton (line 5) | function FreezeButton() { FILE: src/components/Game.tsx constant SHOW_DEBUG_UI (line 15) | const SHOW_DEBUG_UI = !!import.meta.env.VITE_SHOW_DEBUG_UI; function Game (line 17) | function Game() { FILE: src/components/MessageInput.tsx function MessageInput (line 10) | function MessageInput({ FILE: src/components/Messages.tsx function Messages (line 10) | function Messages({ FILE: src/components/PixiViewport.tsx type ViewportProps (line 9) | type ViewportProps = { method create (line 22) | create(props: ViewportProps) { method applyProps (line 47) | applyProps(viewport, oldProps: any, newProps: any) { FILE: src/components/Player.tsx type SelectElement (line 14) | type SelectElement = (element?: { kind: 'player'; id: GameId<'players'> ... FILE: src/components/PlayerDetails.tsx function PlayerDetails (line 13) | function PlayerDetails({ FILE: src/components/PositionIndicator.tsx constant ANIMATION_DURATION (line 5) | const ANIMATION_DURATION = 500; constant RADIUS_TILES (line 6) | const RADIUS_TILES = 0.25; function PositionIndicator (line 8) | function PositionIndicator(props: { FILE: src/components/PoweredByConvex.tsx function PoweredByConvex (line 2) | function PoweredByConvex() { FILE: src/components/buttons/Button.tsx function Button (line 4) | function Button(props: { FILE: src/components/buttons/InteractButton.tsx function InteractButton (line 13) | function InteractButton() { FILE: src/components/buttons/LoginButton.tsx function LoginButton (line 3) | function LoginButton() { FILE: src/components/buttons/MusicButton.tsx function MusicButton (line 8) | function MusicButton() { FILE: src/editor/eutils.js function download (line 3) | function download(data, filename, type) { FILE: src/editor/le.js function tileset_index_from_coords (line 51) | function tileset_index_from_coords(x, y) { function level_index_from_coords (line 56) | function level_index_from_coords(x, y) { function tileset_index_from_px (line 62) | function tileset_index_from_px(x, y) { function level_index_from_px (line 70) | function level_index_from_px(x, y) { function tileset_coords_from_index (line 76) | function tileset_coords_from_index(index) { function tileset_px_from_index (line 84) | function tileset_px_from_index(index) { function sprite_from_px (line 91) | function sprite_from_px(x, y) { function DragState (line 102) | function DragState() { class LayerContext (line 116) | class LayerContext { method constructor (line 118) | constructor(app, pane, num, mod = null) { method loadFromMapFile (line 161) | loadFromMapFile(mod) { method drawFilter (line 187) | drawFilter() { method addTileLevelCoords (line 213) | addTileLevelCoords(x, y, dim, index) { method addTileLevelPx (line 218) | addTileLevelPx(x, y, index) { class TilesetContext (line 300) | class TilesetContext { method constructor (line 302) | constructor(app, mod = g_ctx) { method addTileSheet (line 351) | addTileSheet(name, sheet){ class CompositeContext (line 369) | class CompositeContext { method constructor (line 371) | constructor(app) { function loadAnimatedSpritesFromModule (line 402) | function loadAnimatedSpritesFromModule(mod){ function loadMapFromModuleFinish (line 440) | function loadMapFromModuleFinish(mod) { function loadMapFromModule (line 456) | function loadMapFromModule(mod) { function downloadpng (line 462) | function downloadpng(filename) { function onTilesetDragStart (line 634) | function onTilesetDragStart(e) function onTilesetDragEnd (line 654) | function onTilesetDragEnd(e) function onTilesetDrag (line 706) | function onTilesetDrag(e) function redrawGrid (line 734) | function redrawGrid(pane, redraw = false) { function centerCompositePane (line 792) | function centerCompositePane(x, y){ function getOldTileValue (line 798) | function getOldTileValue(layer, x, y) { function centerLayerPanes (line 803) | function centerLayerPanes(x, y){ function onLevelMouseover (line 811) | function onLevelMouseover(e) { function onLevelMouseOut (line 889) | function onLevelMouseOut(e) { function onLevelMousemove (line 901) | function onLevelMousemove(e) { function onCompositeMousedown (line 925) | function onCompositeMousedown(layer, e) { function levelPlaceNoVariable (line 938) | function levelPlaceNoVariable(layer, e) { function onLevelPointerDown (line 968) | function onLevelPointerDown(layer, e) function onLevelDrag (line 988) | function onLevelDrag(layer, e) function onLevelDragEnd (line 1022) | function onLevelDragEnd(layer, e) function initPixiApps (line 1160) | function initPixiApps() { function setGridSize (line 1210) | function setGridSize(size) { function initRadios (line 1236) | function initRadios() { function initTilesSync (line 1253) | function initTilesSync(callme) { function initTiles (line 1330) | function initTiles() { function init (line 1355) | async function init() { FILE: src/editor/leconfig.js constant DEFAULTTILESETPATH (line 1) | const DEFAULTTILESETPATH = "./tilesets/gentle.png"; constant DEFAULTILEDIMX (line 12) | const DEFAULTILEDIMX = 32; constant DEFAULTILEDIMY (line 13) | const DEFAULTILEDIMY = 32; constant MAXTILEINDEX (line 21) | const MAXTILEINDEX = leveltilewidth * leveltileheight; FILE: src/editor/lecontext.js function ContextSingleton (line 6) | function ContextSingleton() { FILE: src/editor/lehtmlui.js function initMainHTMLWindow (line 9) | function initMainHTMLWindow() { function initCompositePNGLoader (line 41) | function initCompositePNGLoader() { function initSpriteSheetLoader (line 61) | function initSpriteSheetLoader() { function initTilesetLoader (line 81) | function initTilesetLoader(callme) { function doimport (line 99) | function doimport (str) { function initLevelLoader (line 112) | function initLevelLoader(callme) { FILE: src/editor/mapfile.js function generate_preamble (line 7) | function generate_preamble() { function write_map_file (line 25) | function write_map_file(bg_tiles_0, bg_tiles_1, obj_tiles_1, obj_tiles_2... function generate_level_file (line 101) | function generate_level_file() { FILE: src/editor/se.js function tileset_index_from_coords (line 40) | function tileset_index_from_coords(x, y) { function level_index_from_coords (line 45) | function level_index_from_coords(x, y) { function tileset_index_from_px (line 51) | function tileset_index_from_px(x, y) { function level_index_from_px (line 59) | function level_index_from_px(x, y) { function tileset_coords_from_index (line 65) | function tileset_coords_from_index(index) { function tileset_px_from_index (line 73) | function tileset_px_from_index(index) { function sprite_from_px (line 80) | function sprite_from_px(x, y) { function DragState (line 101) | function DragState() { class LayerContext (line 115) | class LayerContext { method constructor (line 117) | constructor(app, pane, num, mod = null) { method loadFromMapFile (line 159) | loadFromMapFile(mod) { method drawFilter (line 185) | drawFilter() { method addTileLevelCoords (line 211) | addTileLevelCoords(x, y, dim, index) { method deleteFromIndex (line 217) | deleteFromIndex(index) { method addTileLevelPx (line 241) | addTileLevelPx(x, y, index) { method updateAnimatedTiles (line 289) | updateAnimatedTiles() { class TilesetContext (line 314) | class TilesetContext { method constructor (line 316) | constructor(app, mod = g_ctx) { class CompositeContext (line 359) | class CompositeContext { method constructor (line 361) | constructor(app) { function doimport (line 393) | function doimport (str) { function resetPanes (line 406) | function resetPanes() { function downloadpng (line 426) | function downloadpng(filename) { function onTilesetDragStart (line 547) | function onTilesetDragStart(e) function onTilesetDragEnd (line 567) | function onTilesetDragEnd(e) function onTilesetDrag (line 617) | function onTilesetDrag(e) function redrawGridPane (line 645) | function redrawGridPane(pane) { function redrawGrid (line 679) | function redrawGrid() { function centerCompositePane (line 690) | function centerCompositePane(x, y){ function centerLayerPanes (line 696) | function centerLayerPanes(x, y){ function onLevelMouseover (line 704) | function onLevelMouseover(e) { function onLevelMouseOut (line 767) | function onLevelMouseOut(e) { function onLevelMousemove (line 775) | function onLevelMousemove(e) { function onCompositeMousedown (line 799) | function onCompositeMousedown(layer, e) { function levelPlaceNoVariable (line 812) | function levelPlaceNoVariable(layer, e) { function onLevelPointerDown (line 840) | function onLevelPointerDown(layer, e) function onLevelDrag (line 860) | function onLevelDrag(layer, e) function onLevelCreateAnimatedSprite (line 893) | function onLevelCreateAnimatedSprite(row) { function onLevelDragEnd (line 899) | function onLevelDragEnd(layer, e) function initPixiApps (line 1019) | function initPixiApps() { function initLevelLoader (line 1075) | function initLevelLoader() { function setGridSize (line 1100) | function setGridSize(size) { function initRadios (line 1124) | function initRadios() { function initTiles (line 1172) | function initTiles() { function newTilesetFromFile (line 1197) | function newTilesetFromFile(){ function init (line 1202) | async function init() { FILE: src/editor/seconfig.js constant DEFAULTTILESETPATH (line 13) | const DEFAULTTILESETPATH = "./spritesheets/tall.png"; constant DEFAULTILEDIMX (line 15) | const DEFAULTILEDIMX = 16; constant DEFAULTILEDIMY (line 16) | const DEFAULTILEDIMY = 16; constant MAXTILEINDEX (line 34) | const MAXTILEINDEX = leveltilewidth * leveltileheight; FILE: src/editor/secontext.js function ContextSingleton (line 6) | function ContextSingleton() { FILE: src/editor/sehtmlui.js function initMainHTMLWindow (line 9) | function initMainHTMLWindow() { function initCompositePNGLoader (line 33) | function initCompositePNGLoader() { function initTilesetLoader (line 52) | function initTilesetLoader(callme) { FILE: src/editor/spritefile.js function generate_preamble (line 6) | function generate_preamble() { function download (line 14) | function download(data, filename, type) { function generate_sprite_file (line 32) | function generate_sprite_file() { FILE: src/editor/undo.js constant UNDO_STAX_MAX_LEN (line 1) | const UNDO_STAX_MAX_LEN = 16 function undo_mark_task_start (line 6) | function undo_mark_task_start(layer) { function undo_add_index_to_task (line 11) | function undo_add_index_to_task(tileindex, oldValue) { function undo_mark_task_end (line 15) | function undo_mark_task_end() { function undo_add_single_index_as_task (line 23) | function undo_add_single_index_as_task(layer, tileindex, oldValue) { function undo_pop (line 29) | function undo_pop() { FILE: src/hooks/sendInput.ts function waitForInput (line 6) | async function waitForInput(convex: ConvexReactClient, inputId: Id<'inpu... function useSendInput (line 42) | function useSendInput( FILE: src/hooks/serverGame.ts type ServerGame (line 12) | type ServerGame = { function useServerGame (line 21) | function useServerGame(worldId: Id<'worlds'> | undefined): ServerGame | ... FILE: src/hooks/useHistoricalTime.ts function useHistoricalTime (line 4) | function useHistoricalTime(engineStatus?: Doc<'engines'>) { type ServerTimeInterval (line 24) | type ServerTimeInterval = { class HistoricalTimeManager (line 29) | class HistoricalTimeManager { method receive (line 37) | receive(engineStatus: Doc<'engines'>) { method historicalServerTime (line 59) | historicalServerTime(clientNow: number): number | undefined { method bufferHealth (line 125) | bufferHealth(): number { method clockSkew (line 133) | clockSkew(): number { constant MAX_SERVER_BUFFER_AGE (line 141) | const MAX_SERVER_BUFFER_AGE = 1500; constant SOFT_MAX_SERVER_BUFFER_AGE (line 142) | const SOFT_MAX_SERVER_BUFFER_AGE = 1250; constant SOFT_MIN_SERVER_BUFFER_AGE (line 143) | const SOFT_MIN_SERVER_BUFFER_AGE = 250; FILE: src/hooks/useHistoricalValue.ts function useHistoricalValue (line 4) | function useHistoricalValue>( class HistoryManager (line 33) | class HistoryManager { method receive (line 36) | receive(sampleRecord: Record) { method query (line 50) | query(historicalTime: number): Record { FILE: src/hooks/useWorldHeartbeat.ts function useWorldHeartbeat (line 6) | function useWorldHeartbeat() { FILE: src/toasts.ts function toastOnError (line 3) | async function toastOnError(promise: Promise): Promise {